Hello, I am currently working on my deferred shading engine and have run into an interesting problem concerning the usage of normal maps. At the moment I am storing the normal for each pixel in world space during the geometry pass. All of my lighting calculations are also being done in world space. The problem I am having is it seems more people seem to do normal mapping in tangent space. In fact I've only ever read 1 article on doing it in anything other than tangent space. To address this problem I was thinking I'll just store all of my normals in tangent space instead of world space when I do the geometry pass. This seemed like an even better idea once I realized I would need the normals in tangent space for parallax occlusion mapping anyway. The problem is when I render my lights as a post process I have to convert them into tangent space as well. Since the tangent space matrix is per-vertex I saw no way of doing this without storing the binormal and tangent for each pixel as well (ack!). My second thought was to simply continue storing normals in world space by multiplying the normal map normals by the inverse of the tangent space matrix. Unfortunately this would be an extremely expensive operation as I would have to calculate the inverse in the pixel shader (unless I am missing something). I am wondering does anyone have any recommendations on this problem or should I start encouraging my art team to produce all of our normal maps in world space

P.S. It's the 11th now w00t *dances a little jig*. Can't wait to start running this stuff on the 360 =D