因為 URP Pipeline 主要不是在 Forward rendering 中進行, 這部份會有點改變.
簡單版的 Multi pass 只限 2 個 Pass
SubShader { Tags { "RenderPipeline"="UniversalRenderPipeline" } Pass { Tags { "LightMode" = "UniversalForward" } HLSLPROGRAM // .... ENDHLSL } Pass { Tags { "LightMode" = "SRPDefaultUnlit" } HLSLPROGRAM // .... ENDHLSL } }
如果多於 2 個 Pass 的 Shader 則需要於 ForwardRenderer 中登記相對應的 Renderer Feature 中的 LightMode Tag 清單之中.
Ref : https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@10.1/manual/urp-renderer-feature-how-to-add.html
成功登記好之後應該就能夠看到.
E.g. 像下方則需要登記 CustomPass00, CustomPass01 到自己希望進行 Render 的時段.
SubShader { Tags { "RenderPipeline"="UniversalRenderPipeline" } Pass { Name "ForwardLit" Tags { "LightMode" = "UniversalForward" } HLSLPROGRAM // .... ENDHLSL } Pass { Name "SRPDefaultUnlit" Tags { "LightMode" = "SRPDefaultUnlit" } HLSLPROGRAM // .... ENDHLSL } Pass { Name "CustomPass00" Tags { "LightMode" = "CustomPass00" } HLSLPROGRAM // .... ENDHLSL } Pass { Name "CustomPass01" Tags { "LightMode" = "CustomPass01" } HLSLPROGRAM // .... ENDHLSL } }