In more detail, the questions I have are:
- How is the normal vector calculated at each vertex? For example, does it use the angle of neighboring polygon faces to weight their normals, or does it just use an unweighted average?
- How are the tangent and binormal vectors calculated? For example, is the binormal perpendicular to the other two, and the tangent in the direction of horizontal texture change? In particular, how is this calculated when neighboring triangles at a vertex don’t have identical texture directions?
- How is the tangent space basis interpolated across a triangle? Is it a simple bilinear interpolation of the tangent space basis at the triangle’s vertices? Does it have renormalization? Are only the tangent and normal interpolated with the binormal recalculated per sample?
The exact basis used doesn’t matter so much, but it is vital that I can reproduce it exactly in the code I’m writing for the game engine. If I cannot do this, then there will be “faceting” artifacts in the game engine from a discontinuity in normal direction between neighboring polygons. It is particularly important to know how they handle vertices where the normal and tangent / binormal vectors of the adjacent faces are different.