美文网首页Unity3D
Unity3D Shader 2D扭曲

Unity3D Shader 2D扭曲

作者: 土豆写书 | 来源:发表于2019-01-28 14:32 被阅读1次
效果图
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 ,扭曲缩放

相关文章

网友评论

    本文标题:Unity3D Shader 2D扭曲

    本文链接:https://www.haomeiwen.com/subject/lmeajqtx.html