Follow these steps:
CGPROGRAM
block to the SubShader
block in your shaderA program that runs on the GPU. More infoPass
block. Unity automatically creates multiple passes when it compiles the surface shaderA streamlined way of writing shaders for the Built-in Render Pipeline. More info#pragma surface [surfaceFunction] [lightModel]
directive.Surface shaders aren’t compatible with HLSLPROGRAM
blocks, but you can use HLSL inside a CGPROGRAM
block. For more information, refer to Shader code blocks in ShaderLab reference.
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: