Интересует вопрос, как вращать только одну текстуру в шейдере, погуглив получилось сделать вращение всех через матрицу.
В шейдерах не особо разбираюсь, буду благодарен любой помощи.
Собственно вот фрагмент вращения текстур в шейдере
Синтаксис:
Используется csharp
float _DetailAngle;
int _isRotat;
void vert (inout appdata_full v) {
v.texcoord.xy -=0.5;
if (_isRotat==45) { _DetailAngle=-0.786; }
if (_isRotat==-45) { _DetailAngle=0.786; }
if (_isRotat==90) { _DetailAngle=-1.57; }
if (_isRotat==-90) { _DetailAngle=1.57; }
if (_isRotat==180) { _DetailAngle=-3.14; }
if (_isRotat==-180) { _DetailAngle=6.28; }
float s = sin ( _DetailAngle);
float c = cos ( _DetailAngle);
float2x2 rotationMatrix = float2x2( c, -s, s, c);
rotationMatrix *=0.5;
rotationMatrix +=0.5;
rotationMatrix = rotationMatrix * 2-1;
v.texcoord.xy = mul ( v.texcoord.xy, rotationMatrix );
v.texcoord.xy += 0.5;
}
int _isRotat;
void vert (inout appdata_full v) {
v.texcoord.xy -=0.5;
if (_isRotat==45) { _DetailAngle=-0.786; }
if (_isRotat==-45) { _DetailAngle=0.786; }
if (_isRotat==90) { _DetailAngle=-1.57; }
if (_isRotat==-90) { _DetailAngle=1.57; }
if (_isRotat==180) { _DetailAngle=-3.14; }
if (_isRotat==-180) { _DetailAngle=6.28; }
float s = sin ( _DetailAngle);
float c = cos ( _DetailAngle);
float2x2 rotationMatrix = float2x2( c, -s, s, c);
rotationMatrix *=0.5;
rotationMatrix +=0.5;
rotationMatrix = rotationMatrix * 2-1;
v.texcoord.xy = mul ( v.texcoord.xy, rotationMatrix );
v.texcoord.xy += 0.5;
}
Может быть как-то по-другому можно добиться вращения одной текстуры?
Заранее спасибо.