Unity3D Shader 2D扭曲

效果图
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 ,扭曲缩放

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容