Показать сообщение отдельно
Старый 27.05.2012, 21:04   #16
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Ищу шейдер

В щейдер дописываешь (в CGPROGRAM)

float4x4 _MainTexMatrix; 
Матрицу устанавливаешь кодом

material.SetMatrix("_MainTexMatrix", matrix); 
В вершинном шейдере рассчитываешь uv
void vert (inout appdata_full v, out Input o) 
{
   
v.texcoord = mul(_MainTexMatrix, v.texcoord);
} 
Я для своей задачи считал матрицу вот так
private Matrix4x4 BuildTextureTransformMatrix()
    {
        
float ang = Mathf.Clamp(angle, 0, 360);

         
Matrix4x4 rot = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, 0, ang), Vector3.one);
        
Matrix4x4 pos = Matrix4x4.TRS(new Vector3(offset.x, offset.y), Quaternion.identity, Vector3.one);
        
Matrix4x4 scale = Matrix4x4.Scale(new Vector3(tile.x, tile.y));

        
Matrix4x4 mat = pos * scale * rot;

        return 
mat;
    } 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Amatsu (27.05.2012)