Unity3D URP multi pass shader

Unity3D URP multi pass shader

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

*

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料