использование нормалей, посчитанных в вертексном шейдере

Шейдеры и все-все-все.

использование нормалей, посчитанных в вертексном шейдере

Сообщение gnoblin 16 ноя 2010, 23:00

привет,

в вертексном шейдере (не surface шейдер) пересчитываю нормали для своей поверхности,
потом в пиксельном шейдере эти нормали использую.

Проблема в том, что интерполируются они как-то странно :).
Уже не первый раз наступаю на такие грабли... в прошлый раз проблемы были когда я считал ув-координаты в вертексном шейдере.

Есть какие-то хитрости в таких делах? b-(
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение Battle Angel Alita 17 ноя 2010, 03:24

как-то странно

Как странно? Нормаль ренормализировал?
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение Phoenics 17 ноя 2010, 08:49

gnoblin писал(а):Проблема в том, что интерполируются они как-то странно :).
Есть какие-то хитрости в таких делах? b-(


Нормально там всё интерполируется, просто оно работает не совсем так как Вы по всей видимости себе представляете. Там линейная интерполяция, поэтому когда интерплируются векторы, такие как нормаль например надо понимать что:
1. Интерполированный вектор между двумя нормализованными векторами скорее всего не будет нормализованным. Более того в общем случае он даже может быть нулевым.
2. Угловая скорость интерполиваронного вектора может быть неравномерна особенно если вектора между которыми происходит интерполяция не нормализованы. Хотя это нечасто нужно.

Что бы избежать этих недостатков используют lerp интерполяцию, предпологаю что Вы считаете будто параметры в шейдерах интерполируются по алгоритму lerp,хотя аппратный интерполятор интерполирует значения линейно.
Аватара пользователя
Phoenics
UNIт
 
Сообщения: 60
Зарегистрирован: 31 окт 2010, 22:29

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение gnoblin 17 ноя 2010, 15:19

1. запощу проблемный примерчик
2. спасибо, интересно
3. чем отличается lerp от интерполяции линейно? b-(
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение Phoenics 17 ноя 2010, 15:36

gnoblin писал(а):3. чем отличается lerp от интерполяции линейно? b-(

Прошу прощения за опечатку. Имелся ввиду slerp.
lerp - http://en.wikipedia.org/wiki/Lerp_(computing)
slerp - http://en.wikipedia.org/wiki/Slerp
Разница видна в общем-то даже из картинок
Аватара пользователя
Phoenics
UNIт
 
Сообщения: 60
Зарегистрирован: 31 окт 2010, 22:29

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение Battle Angel Alita 17 ноя 2010, 16:16

Раз гноб говорил что подобная проблема возникает и на обычных текс.координатах. Думаю это не из-за линейной/сферической интнрполиции, а из-за интерполяции именно по треугольникам, а не по четырёхугольникам, как ожидают моделлеры. Ну или из-за аффинного/перспективного преобразования текс.координат, что в принципе тоже самое только вид с боку.
texcoord.png
У вас нет доступа для просмотра вложений в этом сообщении.
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение Phoenics 17 ноя 2010, 16:40

Ну да, было бы неплохо уточнить что именно топикстартер имеет ввиду под "станным"
Аватара пользователя
Phoenics
UNIт
 
Сообщения: 60
Зарегистрирован: 31 окт 2010, 22:29

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение gnoblin 17 ноя 2010, 17:02

Battle Angel Alita писал(а):Раз гноб говорил что подобная проблема возникает и на обычных текс.координатах. Думаю это не из-за линейной/сферической интнрполиции, а из-за интерполяции именно по треугольникам, а не по четырёхугольникам, как ожидают моделлеры. Ну или из-за аффинного/перспективного преобразования текс.координат, что в принципе тоже самое только вид с боку.
texcoord.png


а как с этим бороться?

p.s. топик стартер был очень сонный :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: использование нормалей, посчитанных в вертексном шейдере

Сообщение AndrewSt 17 ноя 2010, 21:59

gnoblin писал(а):
Battle Angel Alita писал(а):Раз гноб говорил что подобная проблема возникает и на обычных текс.координатах. Думаю это не из-за линейной/сферической интнрполиции, а из-за интерполяции именно по треугольникам, а не по четырёхугольникам, как ожидают моделлеры. Ну или из-за аффинного/перспективного преобразования текс.координат, что в принципе тоже самое только вид с боку.
texcoord.png


а как с этим бороться?

p.s. топик стартер был очень сонный :)


Обычно для решения этой проблемы полигон заменяют сеткой полигонов, и чем больше полигонов в сетке тем точнее результат становится.
Надо искать золотую середину для конкретной задачи.
AndrewSt
UNIт
 
Сообщения: 72
Зарегистрирован: 10 дек 2009, 13:36
Откуда: СПБ
  • ICQ


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5