前提

我们知道了Unity Shader环境中有的变量以及函数时, 我们就可以用这些内置变量和函数写出我们想要的内容了。

(一)
(二)

0. Shader脚本模板

提炼一下
Shader "shader名" {
    SubShader {
        Pass {
            CGPROGRAM
            #pragma vertex 顶点处理函数
            #pragma fragment 着色阶段的函数
            #include "UnityCG.cginc"

            struct v2f { //  顶点处理后自定义结构体
                float4 pos : SV_POSITION;  
                fixed4 color : COLOR;
            };

            v2f 顶点处理函数 (appdata_base v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.color.xyz = v.normal * 0.5 + 0.5;
                o.color.w = 1.0;
                return o;
            }

            fixed4 着色处理函数 (v2f i) : SV_Target 
            { 
                return i.color; 
            }
            ENDCG
        }
    } 
}

1. 接受参数并传递到下一阶段

自定义结构体v2f 将顶点处理阶段的值保存,传递到下一阶段片段着色函数

2. 下一阶段时输出结果渲染到屏幕

最后以极端 return float4结构的数据。作为顶点的颜色值