/ / Чому нормалі обертаються з камерою? - opengl, glsl, shader

Чому нормалі обертаються з камерою? - opengl, glsl, shader

Я написав шейдери для дифузної блискавки.
Нормали обчислення в вершині шейдера: normal = gl_NormalMatrix * gl_Normal;
Але, коли я повертаю камеру, нормалі також починають обертатися з камерою. Як це виправити?

Відповіді:

1 для відповіді № 1

Ви повинні неправильно створювати свою нормальну матрицю.

NormalMatrix = transpose(inverse(ModelMatrix * ViewMatrix))

Також, якщо ви не змушені використовувати gl_NormalMatrix і gl_Normal, ви повинні використовувати форму шейдера і змінні, і обчислити матриці самостійно, а не використовувати стару модель.

Якщо ви не знаєте, як це зробити, ви повинні знайти підручник з OpenGL 4, щоб вивчити програмований шейдерний конвеєр. OGLDev досить добре.