中心圆的形成方法计算方式
Shader "chicai/Circle"
{
    Properties {
        _Value("Value",float) = 0.5
        _Controll("Vector",vector) = (0,0,0,0)
    }

    SubShader
    {
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex:POSITION;
                fixed2 uv:TEXCOORD0;
            };

            struct v2f
            {
                float4 position:SV_POSITION;
                fixed2 uv:TEXCOORD0;
            };

            float _Value;
            half4 _Controll;

            v2f vert(appdata IN)
            {
                v2f o = (v2f)0; //初始化 有些平台要求
                o.position = UnityObjectToClipPos(IN.vertex);
                o.uv = IN.uv;
                return o;
            }

            float4 frag(v2f IN):SV_TARGET
            {
                //length(IN.uv.xy-0.5) 中心向四周变化
                //step 中心为1 以外为0 变成纯色圆形
                //return step(length(IN.uv.xy-0.5), _Value);

                //边缘平滑的中心圆计算
                return smoothstep(_Controll.x ,_Controll.y, length(IN.uv.xy - 0.5));
            }
            ENDCG
        }
    }
}



首页 我的博客
粤ICP备17103704号