Как конвертировать мировую позицию в УФ-пространство? - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть gameObject1, который передает свою позицию в шейдер некоторого screenGameObject. ScreenGameObject имеет положение (0,0,0), вращение (0,0,0), масштаб (1,1,1).

В шейдере мне нужно сделать текстуру, следуя этой игреObject1.

В общем, я думаю, нужно преобразовать мировую позицию gameObject1 в uv - пространство ScreenGameObject.

Здесь я нашел какую-то задачу, которая v близка к моей: ссылка

В вершинном шейдере я написал:

o.uvOffset = mul(unity_WorldToObject, _FrameTexPos).xy;

В функции фрагмента у меня есть:

return tex2D(_AimTex, i.uvOffset).rrrr;

В результате: текстура _AimTex перемещается неправильно вообще: _FrameTexPos.x заставляет текстуру двигаться по OY, _FrameTexPos.y заставляет ее двигаться по локальному OX

Я думаю, это:

mul(unity_WorldToObject, _FrameTexPos).xy;

Не конвертируйте _FrameTexPos правильно (из мирового пространства в ультрафиолетовое пространство объекта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...