Матрица транформаций и проблемы на разных версиях юнити.

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

Матрица транформаций и проблемы на разных версиях юнити.

Сообщение kripto289 28 авг 2015, 04:39

День добрый.
На разных версиях юнити (на 5 и на старой 4.6) шейдер со скриптом работают по разному.

Есть некий кусок кода вычисляющий матрицу проекции для шейдера (что бы сделать проективную воду и масштабирование)
где gameObjectTransform это геймобъект пустышка внутри иерархии.
Синтаксис:
Используется csharp
Shader.SetGlobalMatrix("_projectiveMatrScale", gameObjectTransform.worldToLocalMatrix * transform.localToWorldMatrix);


Есть кусок шейдера
Синтаксис:
Используется csharp
half2 scaleeUv = -mul(_projectiveMatrScale,v.vertex).xz;
o.uvWave1.xy = scaleeUv * _Wave1_ST.xy + _Wave1_ST.w  + time1;


На юнити 5 всё работает корректно.
На юнити 4.6 две проблемы.
Масштабирование относительно родителя перестаёт работать. (то есть если родитель 20 на 20 метров, то в шейдере скейл текстуры остаётся с масштабом 1 на 1).
Так же если gameObjectTransform статичен в пространстве, на юнити 5 двигая меш, uv развёртка остаётся в мировом пространстве, но на юнити 4.6 она двигается вместе с объектом. (Притом если двигать gameObjectTransform, то и развёртка тоже двигается)

Что юнитеки поменяли в юнити5, и почему на старой версии в мировом пространстве перестало работать?
Аватара пользователя
kripto289
UNIверсал
 
Сообщения: 476
Зарегистрирован: 30 сен 2013, 03:30
Откуда: Екатеринбург
  • Сайт

Re: Матрица транформаций и проблемы на разных версиях юнити.

Сообщение waruiyume 28 авг 2015, 04:51

В четвёрке, в шейдерах, есть какой-то "unity scale"(как пишется не помню)
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Матрица транформаций и проблемы на разных версиях юнити.

Сообщение jetyb 28 авг 2015, 08:06

В пятой версии вычисление scale перенесли на GPU. Поэтому основанные на scale шейдеры и работают не так.
Писали об этом в мануалах много раз, см. Release Notes и Update Notes.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Матрица транформаций и проблемы на разных версиях юнити.

Сообщение kripto289 28 авг 2015, 11:03

Спасибо, попробую. Как-то упустил из вида что при импорте старой воды в 5 юнити были предупреждения по поводу скейла и надо было пойти почитать об этом.
Аватара пользователя
kripto289
UNIверсал
 
Сообщения: 476
Зарегистрирован: 30 сен 2013, 03:30
Откуда: Екатеринбург
  • Сайт


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

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

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