For normal mapping, why can we not simply add the tangent normal to the surface normal?

Posted by sebf on Game Development See other posts from Game Development or by sebf
Published on 2012-03-20T00:26:09Z Indexed on 2012/03/20 5:40 UTC
Read the original article Hit count: 371

I am looking at implementing bump mapping (which in all implementations I have seen is really normal mapping), and so far all I have read says that to do this, we create a matrix to convert from world-space to tangent-space, in order to transform the lights and eye direction vectors into tangent space, so that the vectors from the normal map may be used directly in place of those passed through from the vertex shader.

What I do not understand though, is why we cannot just use the normalised sum of the sampled-normal vector, and the surface-normal? (assuming we already transform and pass through the surface normal for the existing lighting functions)

Take the diagram below; the normal is simply the deviation from the 'reference normal' for any given coordinate system, correct? And transforming the surface normal of a mapped surface from world space to tangent space makes it equivalent to the tangent space 'reference normal', no?
If so, why do we transform all lighting vectors into tangent space, instead of simply transforming the sampled tangent once in the pixel shader?enter image description here

© Game Development or respective owner

Related posts about math

Related posts about lighting