【Shader】用一张渐变图实现卡通渲染效果

这种方法的好处是美术可以修改渐变图来控制显示出来的效果
原理是用tex2D来返回一个RGB值,第一个参数是操作的texture,第二个参数是需要采样的UV坐标。

        inline float4 LightingBasicDiffuse (SurfaceOutput s, fixed3 lightDir, fixed atten)
        {
            float difLight = max(0, dot (s.Normal, lightDir));
            float hLambert = difLight * 0.5 + 0.5;
            float3 ramp = tex2D(_RampTex, float2(hLambert)).rgb;

            float4 col;
            col.rgb = s.Albedo * _LightColor0.rgb * (ramp);
            col.a = s.Alpha;
            return col;
    }

准备一张渐变分明的渐变图指定为_RampTex
这里写图片描述
主要就是这一句

float3 ramp = tex2D(_RampTex, float2(hLambert)).rgb;

你可能感兴趣的:(shader)