与其他着色器一样,表面着色器也被放置在 CGPROGRAM..ENDCG 代码块内。不同之处在于:
#pragma surface 指令如下:
#pragma surface surfaceFunction lightModel [optionalparams]
Shader "Example/Diffuse Simple" {
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float4 color : COLOR;
};
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = 1;
}
ENDCG
}
Fallback "Diffuse"
}
以下是设置了两个光源的模型: