This method stores a full TBN frame using just 3 bytes per vertex (plus a bitfield), instead of the traditional 28 bytes (normal: vec3
, tangent: vec4
). It leverages octahedral encoding for normals and a rotation angle for tangent reconstruction.
Storing both glm::vec3 normal
and glm::vec4 tangent
is costly. Since the bitangent can be reconstructed via a cross product, we only need:
- A unit normal (encoded in 2 bytes)
- An angle to rotate a base tangent around the normal (1 byte)