Lighting can be computed in an arbitrary 3D coordinate system as long as all
vector parameters involved are oriented with respect to the same coordinate
system [10]. This allows one to select the most convenient
coordinate system for lighting. Tangent space is just such a local
coordinate system. There are two reasons why lighting in tangent space is very
efficient. The first one is that the normal vector equals always
in tangent space, therefore
needs no longer interpolated
and normalized. The second reason is that in tangent space the perturbed
normal for bump mapping can be read directly from a texture2 as Kilgard[10]
develop. The orthonormal basis for tangent space is formed by the surface
normal
, the surface tangent vector
, and the binormal
defined as
(Figure 6)