I'm experimenting with this at the moment, and my configuration is to store the normal and tangent in 16-bits each (*using schemes from this page*), two roughness parameters in 8 bits each, and the sign of the binormal (whether it's cross(N,T) or -cross(N,T)) in one bit.

This requires 49 bits of G-buffer space, rather than 24 bits for isotropic specular...

I also tried storing the T/B/N basis as a quaternion, but to get decent quality I needed to use 16-bits for each of the 4 components. I was able to drop one component and reconstruct it (due to quaternion rotations being normalized), bringing it down to 16-bits * 3, but this was still way more space and conversion math than the above configuration.

Crytek mention in one of their presentations (forget which one, sorry) that they *faked* anisotropic specular by simply adjusting the normal when writing to the g-buffer.

**Edited by Hodgman, 29 April 2013 - 09:59 PM.**