У меня есть 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 правильно (из мирового пространства в ультрафиолетовое пространство объекта).