- vec3 q0 = dFdx(Vertex.xyz);
- vec3 q1 = dFdy(Vertex.xyz);
- vec2 st0 = dFdx(gl_TexCoord[0].st);
- vec2 st1 = dFdy(gl_TexCoord[0].st);
- vec3 S = normalize( q0 * st1.t - q1 * st0.t);
- vec3 T = normalize(-q0 * st1.s + q1 * st0.s);
- mat3 M = mat3(-T, -S, normal);
- normal = normalize(M * (vec3(texture2D(NormalMap, gl_TexCoord[0].xy)) - vec3(0.5, 0.5, 0.5)));