因為 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
}
}