法線を回転させるための次の頂点シェーダーがあります。それを実装する前に、法線を計算するためにメッシュの回転行列も渡しました。その時の照明は大丈夫でした。
#version 150
uniform mat4 projection;
uniform mat4 modelview;
in vec3 position;
in vec3 normal;
in vec2 texcoord;
out vec3 fposition;
out vec3 fnormal;
out vec2 ftexcoord;
void main()
{
mat4 mvp = projection * modelview;
fposition = vec3(mvp * vec4(position, 1.0));
fnormal = normalize(mat3(transpose(inverse(modelview))) * normal);
ftexcoord = texcoord;
gl_Position = mvp * vec4(position, 1.0);
}
ただし、このシェーダーを使用すると、フラグメントシェーダーで計算された照明がカメラとともに回転します。フラグメントシェーダーを変更していないので、問題は上記のコードにあるはずです。
法線の計算で何が間違っていますか?