Program Listing for File tangentCalculator.h
↰ Return to documentation for file (PrismEngine/src/tangentCalculator.h)
#pragma once
#include "utils.h"
#include "layersMacroses.h"
#include "pgcLayersObjsTemplate.h"
#include "mesh.h"
extern "C" {
#include "mikktspace.h"
}
DECLARE_PGC_LAYER_INSTANCE(L3)
class TangentCalculator {
public:
static void generateTangents(Vertex* verticesBegin, size_t verticesCount, uint32_t* indicesBegin, size_t indicesCount);
private:
struct MikkTSpaceData {
Vertex* verticesBegin;
size_t verticesCount;
uint32_t* indicesBegin;
size_t indicesCount;
};
static int getNumFaces(const SMikkTSpaceContext* pCtx);
static int getNumVertsOfFace(const SMikkTSpaceContext*, int);
static void getPosition(const SMikkTSpaceContext* pCtx, float fvPosOut[], int iFace, int iVert);
static void getNormal(const SMikkTSpaceContext* pCtx, float fvNormOut[], int iFace, int iVert);
static void getTexCoord(const SMikkTSpaceContext* pCtx, float fvTexcOut[], int iFace, int iVert);
static void setTSpaceBasic(const SMikkTSpaceContext* pCtx, const float fvTangent[], const float fSign, int iFace, int iVert);
};
END_NAMESPACE_DECLARATION