저는 LWJGL 게임을위한 쉐이더를 사용하여 기본적인 정지 점 광원을 만들려고했지만 카메라의 위치가 변환되고 회전 될 때 빛이 움직이는 것처럼 보입니다. 이 쉐이더는 OpenGL 4.3 가이드에서 약간 수정되었으므로 의도 한대로 작동하지 않는 이유가 확실하지 않습니다. 아무도 왜 이러한 쉐이더가 의도 한대로 작동하지 않고 내가 작동하도록 할 수 있는지 설명 할 수 있습니까?카메라로 움직이는 GLSL 포인트 라이트 쉐이더
버텍스 쉐이더 :
varying vec3 color, normal;
varying vec4 vertexPos;
void main() {
color = vec3(0.4);
normal = normalize(gl_NormalMatrix * gl_Normal);
vertexPos = gl_ModelViewMatrix * gl_Vertex;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
조각 셰이더 : 사람이 관심
varying vec3 color, normal;
varying vec4 vertexPos;
void main() {
vec3 lightPos = vec3(4.0);
vec3 lightColor = vec3(0.75);
vec3 lightDir = lightPos - vertexPos.xyz;
float lightDist = length(lightDir);
float attenuation = 1.0/(3.0 + 0.007 * lightDist + 0.000008 * lightDist * lightDist);
float diffuse = max(0.0, dot(normal, lightDir));
vec3 ambient = vec3(0.4, 0.4, 0.4);
vec3 finalColor = color * (ambient + lightColor * diffuse * attenuation);
gl_FragColor = vec4(finalColor, 1.0);
}
누구든지 관심이 있다면 해결책을 찾지 못했습니다. gl_NormalMatrix 및 gl_ModelViewMatrix에 대한 호출을 제거하면 문제가 해결되었습니다. – user29112
답변으로 게시하고 수락해야합니다. – Dawnkeeper