GameTech/URP 渲染实战
源码 / shaders/Ch29/OverdrawCount.glsl
shaders/Ch29/OverdrawCount.glsl
// 案例 29.5:Overdraw 计数。作为 overrideMaterial 替换场景里所有物体的材质,(GLSL 版,对应 Ch29/OverdrawCount.shader)
// 每画一层片元就往 R 通道加 1(加法混合),最后得到“每个像素被着色了几次”。
Shader "Cookbook/Ch29/OverdrawCount"
{
    SubShader
    {
        Tags { "RenderType"="Opaque" "RenderPipeline"="UniversalPipeline" }
        Pass
        {
            Name "Count"
            Blend One One          // 累加
            ZWrite Off
            ZTest [_ZTest]
            Cull [_Cull]
            GLSLPROGRAM
            #ifdef VERTEX
            void main() { gl_Position = TransformObjectToHClip(positionOS.xyz); }
            #endif
            #ifdef FRAGMENT
            void main() { fragColor = vec4(1, 0, 0, 0); }
            #endif
            ENDGLSL
        }
    }
}