Surface shaderA program that runs on the GPU. More info
See in Glossary is placed inside CGPROGRAM..ENDCG
block, just like any other shader. The differences are:
#pragma surface ...
directive to indicate it’s a surface shader.The #pragma surface
directive is:
#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"
}
Here’s how it looks like on a model with two Lights set up: