shader 如何实现旋转

问一下大佬,
creator在shader如果实现旋转啊。。我在论坛里找了一圈没找着。

主要是旋转矩阵运算,在creator要如何写呢。
unity的代码如下:

			float4 Angle = length(v.vertex.xz)*_RotateAngle;//_SinTime.w;
			**float4x4 Rotate44** = {
				float4(1,0,0,0),
				float4(0, cos(Angle.x),-sin(Angle.x),0),
				float4(0, sin(Angle.x),cos(Angle.x),0),
				float4(0,0,0,1)
			};
			// y
			float4x4 Rotate44_y = {
				float4(cos(Angle.y),0,sin(Angle.y),0),
				float4(0,1,0,0),
				float4(-sin(Angle.y),0,cos(Angle.y),0),
				float4(0,0,0,1)
			};
			//z
			float4x4 Rotate44_z = {
				float4(cos(Angle.z),-sin(Angle.z),0,0),
				float4(sin(Angle.z),cos(Angle.z),0,0),
				float4(0,0,1,0),
				float4(0,0,0,1)
			};
			float4 NewVert3 = mul(Rotate44, v.vertex);
			float4 NewVert2 = mul(Rotate44_y, NewVert3);
			float4 NewVert = mul(Rotate44_z, NewVert2);

			NewVert.x *= _SScale.x*_Scale;
			NewVert.y *= _SScale.y*_Scale;
			NewVert.z *= _SScale.z*_Scale;


			float3 worldpos = mul(unity_ObjectToWorld, NewVert).xyz;

			o.vertex = UnityObjectToClipPos(NewVert + _ShadowPlane.xyz);
			o.vertex.x -= NewVert.y*_HorAngle;
			o.uv = TRANSFORM_TEX(v.uv, _MainTex);
2赞

vec2 Rotator(vec2 uv, float texRotation){

  float cos_value = cos(PI2 * texRotation);

  float sin_value = sin(PI2 * texRotation);

  return mul(uv - vec2( 0.5,0.5),mat2(cos_value , -sin_value, sin_value, cos_value)) + vec2(0.5);

},输入uv和角度

1赞

谢谢powerswAnkh,我试试哈,看起来要旋转顶点才行,uv旋转会被裁剪掉。我试一下。