2016-06-29 2 views
0

확산 번개를위한 셰이더를 작성했습니다.
버텍스 쉐이더에서 법선 계산 : 일반 = gl_NormalMatrix * gl_Normal;
그러나 카메라를 회전하면 법선도 카메라와 함께 회전하기 시작합니다. 그것을 고치는 방법?법선이 카메라와 함께 회전하는 이유?

답변

1

일반 매트릭스를 잘못 생성해야합니다. 당신이 gl_NormalMatrix 및 gl_Normal를 사용하도록 강제하지 않는 한

NormalMatrix = transpose(inverse(ModelMatrix * ViewMatrix)) 

또한, 당신은 쉐이더 유니폼을 사용하고 변수와 이전 모델을 사용하는 것보다 오히려 행렬을 직접 계산해야한다.

이 작업을 수행하는 방법을 모르는 경우 OpenGL 4에 대한 자습서에서 프로그래밍 가능한 쉐이더 파이프 라인을 확인해야합니다. OGLDev 꽤 좋습니다.

+0

버텍스 쉐이더에서 ModelMatrix와 ViewMatrix를 얻으려면 어떻게해야합니까? – NoName

+0

@NoName ".. 쉐이더 유니폼을 사용해야합니다." 또한 OGLDev에서 [Learn OpenGL] (http://learnopengl.com/#!Getting-started/Shaders)를 권장합니다. 필자는 10-20 개의 OGL 튜토리얼을 평가했으며,이 중 하나는 현대 OGL에 관한 가장 정확한 정보를 제공합니다. – Dan

+0

@ Dan 감사합니다. 나는 당신의 대답에 변화가 있음을 보았습니다. OGLDev는 좋은 자료입니다. – NoName

관련 문제