표면 셰이더는 다른 셰이더와 마찬가지로 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"
}
다음은 두 개의 광원이 설정된 모델에서 셰이더가 어떻게 보이는지를 나타냅니다.