fixed4 frag (v2f i) : SV_Target
{
float2 uv = i.uv;
//uv 扭曲代码
if (_RotScal > 0)
{
//计算距离
float2 dt = uv - center;
float len = sqrt(dot(dt, dt));
//根据距离 计算出旋转角
float theta = -len * _RotScal;
//旋转矩阵
float2x2 rot =
{
cos(theta), sin(theta),
-sin(theta) ,cos(theta)
};
dt = mul(rot, dt);
uv = dt + center;
}
fixed4 col = tex2D(_MainTex, uv);
return col;
}
原理:通过UV偏移,实现扭曲,距离中心越远,扭曲角度越大
备注1:_RotScal ,扭曲缩放
网友评论