Tessfaces are split vertices for rendering?

From the documentation:

tessface_uv_texturesAll UV maps for tessellated faces (read-only, for use by renderers)

tessfaces
Tessellated faces of the mesh (derived from polygons)

When you render a mesh you have to duplicate vertices around UV seems because a vertex can’t have 2 UV coords. So I’m assuming that tessface has something to do with this but the documentation is pretty awful and even if I’m on the right track, I don’t see anywhere that you could get the correct tangents for splitting vertices.

IIRC tessface has to do with the fact that rendering uses triangles, but blender allows the use of ngons. So tessfaces are the resulting triangles from the triangulation process.

I’ve never been able to get tangents out of blender for my model. They always look wrong.
I export all the verts. I then loop through all the faces and output indices, texture coords, and tangents.

Any time the texture coordinate or tangent etc are different, I split the vertex in two. But it always look really messed up.

Face tangents aren’t the same thing as vertex tangents. Basically, tangents are calculated per-triangle, then those tangents are applied to each vertex, then, for each vertex the tangents are blended together so there’s not such a jarring transition at the edge.

“Face tangents aren’t the same thing as vertex tangents. Basically, tangents are calculated per-triangle, then those tangents are applied to each vertex, then, for each vertex the tangents are blended together so there’s not such a jarring transition at the edge.”

That seems to be what I’ve always got from the tangent buffer. Smoothed tangents. However anytime I am dealing with UV splits from a randomly unwrapped model where a vertex shares multiple texture coords, it will also have multiple tangents. And for some reason the tangent seams look completely wrong. Even though in Blender it renders my normal maps properly. It is really annoying. How does Blender get the tangents for rendering and splitting of vertices? Maybe it doesn’t even try to use indexed triangles and just has completely separated faces for every face?