Original Post
I just recently got a GeForce FX card, and have been experimenting with shaders. I implimented some normal mapping the way it was presented in all the tutorials I read, which is to use tangent and bi-normal vectors to transform the normal from the map from tangent space to world space, and it worked just fine. But transforming the normal this way every pixel seemed inefficient, so I tried doing the opposit: transforming the light and half vectors into tangent space, and doing it per-vertex, rather than per-pixel. It seems to work equaly well, it removes the normal transformation, and it passes 2 fewer parameters to the pixel shader. Has anyone tried doing this before? Is there some fatal flaw I have yet to discover?