123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475 |
- Shader "Hidden/Universal Render Pipeline/StencilDeferred"
- {
- Properties {
- _StencilRef ("StencilRef", Int) = 0
- _StencilReadMask ("StencilReadMask", Int) = 0
- _StencilWriteMask ("StencilWriteMask", Int) = 0
-
- _LitPunctualStencilRef ("LitPunctualStencilWriteMask", Int) = 0
- _LitPunctualStencilReadMask ("LitPunctualStencilReadMask", Int) = 0
- _LitPunctualStencilWriteMask ("LitPunctualStencilWriteMask", Int) = 0
-
- _SimpleLitPunctualStencilRef ("SimpleLitPunctualStencilWriteMask", Int) = 0
- _SimpleLitPunctualStencilReadMask ("SimpleLitPunctualStencilReadMask", Int) = 0
- _SimpleLitPunctualStencilWriteMask ("SimpleLitPunctualStencilWriteMask", Int) = 0
-
- _LitDirStencilRef ("LitDirStencilRef", Int) = 0
- _LitDirStencilReadMask ("LitDirStencilReadMask", Int) = 0
- _LitDirStencilWriteMask ("LitDirStencilWriteMask", Int) = 0
-
- _SimpleLitDirStencilRef ("SimpleLitDirStencilRef", Int) = 0
- _SimpleLitDirStencilReadMask ("SimpleLitDirStencilReadMask", Int) = 0
- _SimpleLitDirStencilWriteMask ("SimpleLitDirStencilWriteMask", Int) = 0
-
- _ClearStencilRef ("ClearStencilRef", Int) = 0
- _ClearStencilReadMask ("ClearStencilReadMask", Int) = 0
- _ClearStencilWriteMask ("ClearStencilWriteMask", Int) = 0
- }
-
- SubShader
- {
- Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline"}
-
- // 0 - Stencil pass
- Pass
- {
- Name "Stencil Volume"
-
- // -------------------------------------
- // Render State Commands
- ZTest LEQual
- ZWrite Off
- ZClip false
- Cull Off
- ColorMask 0
-
- // -------------------------------------
- // Stencil Settings
- Stencil {
- Ref [_StencilRef]
- ReadMask [_StencilReadMask]
- WriteMask [_StencilWriteMask]
- CompFront NotEqual
- PassFront Keep
- ZFailFront Invert
- CompBack NotEqual
- PassBack Keep
- ZFailBack Invert
- }
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment FragWhite
-
- // -------------------------------------
- // Universal Pipeline keywords
- #pragma multi_compile_vertex _ _SPOT
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
-
- // 1 - Deferred Punctual Light (Lit)
- Pass
- {
- Name "Deferred Punctual Light (Lit)"
-
- // -------------------------------------
- // Render State Commands
- ZTest GEqual
- ZWrite Off
- ZClip false
- Cull Front
- Blend One One, Zero One
- BlendOp Add, Add
-
- // -------------------------------------
- // Stencil Settings
- Stencil {
- Ref [_LitPunctualStencilRef]
- ReadMask [_LitPunctualStencilReadMask]
- WriteMask [_LitPunctualStencilWriteMask]
- Comp Equal
- Pass Zero
- Fail Keep
- ZFail Keep
- }
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment DeferredShading
-
- // -------------------------------------
- // Defines
- #define _LIT
-
- // -------------------------------------
- // Universal Pipeline keywords
- #pragma multi_compile _POINT _SPOT
- #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
- #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
- #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING
- #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK
- #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
- #pragma multi_compile_fragment _ _DEFERRED_MIXED_LIGHTING
- #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION
- #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
- #pragma multi_compile_fragment _ _LIGHT_COOKIES
- #pragma multi_compile _ _LIGHT_LAYERS
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
-
- // 2 - Deferred Punctual Light (SimpleLit)
- Pass
- {
- Name "Deferred Punctual Light (SimpleLit)"
-
- // -------------------------------------
- // Render State Commands
- ZTest GEqual
- ZWrite Off
- ZClip false
- Cull Front
- Blend One One, Zero One
- BlendOp Add, Add
-
- // -------------------------------------
- // Stencil Settings
- Stencil {
- Ref [_SimpleLitPunctualStencilRef]
- ReadMask [_SimpleLitPunctualStencilReadMask]
- WriteMask [_SimpleLitPunctualStencilWriteMask]
- CompBack Equal
- PassBack Zero
- FailBack Keep
- ZFailBack Keep
- }
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment DeferredShading
-
- // -------------------------------------
- // Defines
- #define _SIMPLELIT
-
- // -------------------------------------
- // Universal Pipeline keywords
- #pragma multi_compile _POINT _SPOT
- #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
- #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
- #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING
- #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK
- #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
- #pragma multi_compile_fragment _ _DEFERRED_MIXED_LIGHTING
- #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION
- #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
- #pragma multi_compile_fragment _ _LIGHT_COOKIES
- #pragma multi_compile _ _LIGHT_LAYERS
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
-
- // 3 - Deferred Directional Light (Lit)
- Pass
- {
- Name "Deferred Directional Light (Lit)"
-
- // -------------------------------------
- // Render State Commands
- ZTest NotEqual
- ZWrite Off
- Cull Off
- Blend One SrcAlpha, Zero One
- BlendOp Add, Add
-
- // -------------------------------------
- // Stencil Settings
- Stencil {
- Ref [_LitDirStencilRef]
- ReadMask [_LitDirStencilReadMask]
- WriteMask [_LitDirStencilWriteMask]
- Comp Equal
- Pass Keep
- Fail Keep
- ZFail Keep
- }
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment DeferredShading
-
- // -------------------------------------
- // Defines
- #define _LIT
- #define _DIRECTIONAL
-
- // -------------------------------------
- // Universal Pipeline keywords
- #pragma multi_compile_fragment _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
- #pragma multi_compile_fragment _ _DEFERRED_MAIN_LIGHT
- #pragma multi_compile_fragment _ _DEFERRED_FIRST_LIGHT
- #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
- #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
- #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING
- #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK
- #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
- #pragma multi_compile_fragment _ _DEFERRED_MIXED_LIGHTING
- #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION
- #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
- #pragma multi_compile_fragment _ _LIGHT_COOKIES
- #pragma multi_compile _ _LIGHT_LAYERS
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
-
- // 4 - Deferred Directional Light (SimpleLit)
- Pass
- {
- Name "Deferred Directional Light (SimpleLit)"
-
- // -------------------------------------
- // Render State Commands
- ZTest NotEqual
- ZWrite Off
- Cull Off
- Blend One SrcAlpha, Zero One
- BlendOp Add, Add
-
- // -------------------------------------
- // Stencil Settings
- Stencil {
- Ref [_SimpleLitDirStencilRef]
- ReadMask [_SimpleLitDirStencilReadMask]
- WriteMask [_SimpleLitDirStencilWriteMask]
- Comp Equal
- Pass Keep
- Fail Keep
- ZFail Keep
- }
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment DeferredShading
-
- // -------------------------------------
- // Universal Pipeline keywords
- #define _SIMPLELIT
- #define _DIRECTIONAL
-
- // -------------------------------------
- // Universal Pipeline keywords
- #pragma multi_compile _ _LIGHT_LAYERS
- #pragma multi_compile_fragment _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
- #pragma multi_compile_fragment _ _DEFERRED_MAIN_LIGHT
- #pragma multi_compile_fragment _ _DEFERRED_FIRST_LIGHT
- #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
- #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
- #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING
- #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK
- #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
- #pragma multi_compile_fragment _ _DEFERRED_MIXED_LIGHTING
- #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION
- #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
- #pragma multi_compile_fragment _ _LIGHT_COOKIES
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
-
- // 5 - Legacy fog
- Pass
- {
- Name "Fog"
-
- // -------------------------------------
- // Render State Commands
- ZTest NotEqual
- ZWrite Off
- Cull Off
- Blend OneMinusSrcAlpha SrcAlpha, Zero One
- BlendOp Add, Add
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment FragFog
-
- // -------------------------------------
- // Defines
- #define _FOG
-
- // -------------------------------------
- // Universal Pipeline keywords
- #pragma multi_compile FOG_LINEAR FOG_EXP FOG_EXP2
- #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
-
- // 6 - Clear stencil partial
- // This pass clears stencil between camera stacks rendering.
- // This is because deferred renderer encodes material properties in the 4 highest bits of the stencil buffer,
- // but we don't want to keep this information between camera stacks.
- Pass
- {
- Name "ClearStencilPartial"
-
- // -------------------------------------
- // Render State Commands
- ColorMask 0
- ZTest NotEqual
- ZWrite Off
- Cull Off
-
- // -------------------------------------
- // Stencil Settings
- Stencil {
- Ref [_ClearStencilRef]
- ReadMask [_ClearStencilReadMask]
- WriteMask [_ClearStencilWriteMask]
- Comp NotEqual
- Pass Zero
- Fail Keep
- ZFail Keep
- }
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment FragWhite
-
- // -------------------------------------
- // Defines
- #define _CLEAR_STENCIL_PARTIAL
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
-
- // 7 - SSAO Only
- // This pass only runs when there is no fullscreen deferred light rendered (no directional light). It will adjust indirect/baked lighting with realtime occlusion
- // by rendering just before deferred shading pass.
- // This pass is also completely discarded from vertex shader when SSAO renderer feature is not enabled.
- Pass
- {
- Name "SSAOOnly"
-
- // -------------------------------------
- // Render State Commands
- ZTest NotEqual
- ZWrite Off
- Cull Off
- Blend One SrcAlpha, Zero One
- BlendOp Add, Add
-
- HLSLPROGRAM
- #pragma target 4.5
-
- // Deferred Rendering Path does not support the OpenGL-based graphics API:
- // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
- #pragma exclude_renderers gles3 glcore
-
- // -------------------------------------
- // Shader Stages
- #pragma vertex Vertex
- #pragma fragment FragSSAOOnly
-
- // -------------------------------------
- // Defines
- #define _SSAO_ONLY
-
- // -------------------------------------
- // Universal Pipeline keywords
- #pragma multi_compile _ _SCREEN_SPACE_OCCLUSION
-
- // -------------------------------------
- // Includes
- #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl"
-
- ENDHLSL
- }
- }
-
- FallBack "Hidden/Universal Render Pipeline/FallbackError"
- }
|