Texturing

Tangent Space

Local coordinate system for normal maps

Definition

Tangent space is a per-vertex local coordinate system used to interpret normal maps relative to the surface they're applied to. The texture's R channel maps to the surface tangent, G to bitangent, B to the actual surface normal. Tangent-space normals are the universal format for game engines because they survive UV mirroring, deformation, and animation — unlike object-space normals which break under any transform.

In production

Always export normal maps in the engine's expected handedness: UE5 and most engines use +Y (OpenGL convention); Unity historically uses -Y (DirectX convention). A flipped green channel produces inverted bumps — the most common normal-map authoring bug, easy to miss in a flat-lit viewport but immediately obvious once a directional light rakes across the surface and concave details read as convex. Substance Painter lets an artist choose the target tangent space convention at export time via its output template settings, and mismatching this against the destination engine is the single most frequent cause of this bug. Because tangent space is computed per-vertex from the UV layout, any change to UVs after baking can shift tangent basis vectors enough to require a full normal map re-bake. Mirrored UVs are a particularly common source of tangent-space artifacts, producing a visible seam where the mirrored island meets its source; MikkTSpace, the tangent generation standard used by most modern DCCs and engines, was specifically designed to minimize this seam but doesn't eliminate it entirely.

Learn Tangent Space in

Tools that use Tangent Space

See also