GLSL - Нормали и матрицы
|
|
holyblackcat | Дата: Воскресенье, 19 Января 2014, 00:05 | Сообщение # 1 |
уже был
Сейчас нет на сайте
| Я пытаюсь написать свой шейдер освещения на GLSL. В принципе, основа шейдера готова, но есть одна проблема: Если я правильно понял, нормали не поворачиваются по матрице вида модели, так что если модель повернуть, уровень освещения полигонов не меняется. Я перепробовал кучу преобразований с матрицами, но так и не смог добиться нормального результата. Код: Клац.
Сообщение отредактировал holyblackcat - Воскресенье, 19 Января 2014, 00:07 |
|
| |
Archido | Дата: Воскресенье, 19 Января 2014, 18:19 | Сообщение # 2 |
Сэнсэй
Сейчас нет на сайте
| Что-то там странное творится во фрагментном шейдере, на основе чего там строится освещение? Взял бы классического Ламберта + Фонга для попиксельного освещения. Что, касается нормалей то нужно помножить их на glNormalMatrix = transpose(inverse(ModelViewMatrix));
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
holyblackcat | Дата: Понедельник, 20 Января 2014, 03:06 | Сообщение # 3 |
уже был
Сейчас нет на сайте
| Все, тему можно закрывать. Просто, кое-кто сказал мне, что gluLookAt() нужно использовать в матрице вида модели, а не в матрице проекции. Именно поэтому операции над матрицами работали криво.
|
|
| |