Скрытый текст:
Что пытался делать:
Пытался в вершинном шейдере умножить матрицу проектора на матрицу поворота:
Синтаксис:
Используется glsl
v2f vert (appdata_base v)
{
v2f o;
float SinX = sin(_Time * _RotationSpeed);
float CosX = cos(_Time * _RotationSpeed);
float4x4 rotationMat = float4x4(CosX, 0, SinX, 0, 0, 1, 0, 0, -SinX, 0, CosX, 0, 0, 0, 0, 1);
float4x4 test = mul (_Projector,rotationMat);
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uvShadow = mul(test , v.vertex);
return o;
}
{
v2f o;
float SinX = sin(_Time * _RotationSpeed);
float CosX = cos(_Time * _RotationSpeed);
float4x4 rotationMat = float4x4(CosX, 0, SinX, 0, 0, 1, 0, 0, -SinX, 0, CosX, 0, 0, 0, 0, 1);
float4x4 test = mul (_Projector,rotationMat);
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uvShadow = mul(test , v.vertex);
return o;
}
Вращение идет относительно оси Y. Круг вращается, но относительно центра плоскости, на которую он проецируется. А нужно, что бы он вращался относительно своего центра. Пытался домнажать uvShadow двумерную матрицу поворота, но результат такой же.
p.s. Если сместить куб в центр плоскости, то круг вращается вокруг своего цента. Почему так?