Hi,
please excuse another newbie question.
I’m working on converting some HLSL code to GLSL. I have an HLSL vertex shader that distorts a mesh via a number of different surface formulae. The formulae output vertex position (as a vec4), and bitangent and tangent vec3s (all presumably in Object coordinates).
I’ve been able to transform the vertex coordinates by multiplication with the gl_ModelViewProjectionMatrix. What I’m having trouble trying to do is figure out how to create the normal from the Bi and Tan variables, and transform it into the correct coordinate space, so I can use it to apply lighting effects.
I’m currently not applying any transformation to Bi and Tan, and using the following code to attempt to calculate the normal:
normal = normalize(gl_NormalMatrix * cross(Tan,Bi));
which doesn’t seem to do the job, as I get a black unlit surface with my Phong Directional lighting.
I’ve tried setting normal to the mesh’s original normal using
normal = normalize(gl_NormalMatrix * gl_Normal);
(where normal is a varying vec3)
This results in a lit surface (though obviously it’s not correctly-lit, as the normals from the original plane mesh are incorrect for the distorted mesh).
I infer from this that it’s definitely a problem with the way the normal is calculated.
Anyone know what might be going wrong?
Thanks in advance!