Зачем приводить нормаль в мировые координаты?(_World2Object)

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

Зачем приводить нормаль в мировые координаты?(_World2Object)

Сообщение Chaz 25 июл 2015, 18:28

Прив. Смотрю туториалы одного забугорного чувака с ужасным акцентом и произношением англицкий слов. И в уроке по созданию спекуляра имела место следующая строчка
Синтаксис:
Используется glsl
float3 normalDirection = normalize(mul(float4(v.normal,0.0), _World2Object).xyz);

Но я вот че-т совсем недопонимаю, зачем она нужна.
Допустим, есть вертекс с нормалью (0, 0.5, 0.5), сам объект находится в нулевых координатах. Дык какой смысл переводить эту нормаль в мировые координаты? Ничего ж не изменится, ага?
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24

Re: Зачем приводить нормаль в мировые координаты?(_World2Object)

Сообщение waruiyume 25 июл 2015, 22:23

mul(float4(v.normal,0.0), _World2Object).xyz
Это то же, что и:
mul(_Object2World, float4(v.normal,0.0)).xyz
т.к.
При умножении вектора на матрицу, фактически происходит умножение транспонированной матрицы на вектор, а для ортогональных матриц, транспонированная матрица то же, что и обратная.
https://en.wikibooks.org/wiki/Cg_Progra ... formations
https://en.wikibooks.org/wiki/Cg_Progra ... formations
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Зачем приводить нормаль в мировые координаты?(_World2Object)

Сообщение Chaz 25 июл 2015, 22:36

waruiyume писал(а):mul(float4(v.normal,0.0), _World2Object).xyz
Это то же, что и:
mul(_Object2World, float4(v.normal,0.0)).xyz
т.к.
При умножении вектора на матрицу, фактически происходит умножение транспонированной матрицы на вектор, а для ортогональных матриц, транспонированная матрица то же, что и обратная.
https://en.wikibooks.org/wiki/Cg_Progra ... formations
https://en.wikibooks.org/wiki/Cg_Progra ... formations

пасиба
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24


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

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

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


cron