123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion"
- {
- HLSLINCLUDE
- #pragma editor_sync_compilation
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
- ENDHLSL
-
- SubShader
- {
- Tags
- {
- "RenderType" = "Opaque"
- "RenderPipeline" = "UniversalPipeline"
- }
- Cull Off
- ZWrite Off
- ZTest Always
-
- // ------------------------------------------------------------------
- // Ambient Occlusion
- // ------------------------------------------------------------------
-
- // 0 - Occlusion estimation
- Pass
- {
- Name "SSAO_Occlusion"
- ZTest Always
- ZWrite Off
- Cull Off
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment SSAO
- #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
- #pragma multi_compile_local_fragment _INTERLEAVED_GRADIENT _BLUE_NOISE
- #pragma multi_compile_local_fragment _SOURCE_DEPTH_LOW _SOURCE_DEPTH_MEDIUM _SOURCE_DEPTH_HIGH _SOURCE_DEPTH_NORMALS
- #pragma multi_compile_local_fragment _ _ORTHOGRAPHIC
- #pragma multi_compile_local_fragment _SAMPLE_COUNT_LOW _SAMPLE_COUNT_MEDIUM _SAMPLE_COUNT_HIGH
-
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
- ENDHLSL
- }
-
- // ------------------------------------------------------------------
- // Bilateral Blur
- // ------------------------------------------------------------------
-
- // 1 - Horizontal
- Pass
- {
- Name "SSAO_Bilateral_HorizontalBlur"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment HorizontalBlur
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
- ENDHLSL
- }
-
- // 2 - Vertical
- Pass
- {
- Name "SSAO_Bilateral_VerticalBlur"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment VerticalBlur
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
- ENDHLSL
- }
-
- // 3 - Final
- Pass
- {
- Name "SSAO_Bilateral_FinalBlur"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FinalBlur
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
- ENDHLSL
- }
-
- // 4 - After Opaque
- Pass
- {
- Name "SSAO_Bilateral_FinalBlur_AfterOpaque"
-
- ZTest Off
- ZWrite Off
- Cull Off
- Blend One SrcAlpha, Zero One
- BlendOp Add, Add
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FragBilateralAfterOpaque
-
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
-
- half4 FragBilateralAfterOpaque(Varyings input) : SV_Target
- {
- half ao = FinalBlur(input).r;
- return half4(0.0, 0.0, 0.0, ao);
- }
-
- ENDHLSL
- }
-
- // ------------------------------------------------------------------
- // Gaussian Blur
- // ------------------------------------------------------------------
-
- // 5 - Horizontal
- Pass
- {
- Name "SSAO_Gaussian_HorizontalBlur"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment HorizontalGaussianBlur
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
- ENDHLSL
- }
-
- // 6 - Vertical
- Pass
- {
- Name "SSAO_Gaussian_VerticalBlur"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment VerticalGaussianBlur
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
- ENDHLSL
- }
-
- // 7 - After Opaque
- Pass
- {
- Name "SSAO_Gaussian_VerticalBlur_AfterOpaque"
-
- ZTest Off
- ZWrite Off
- Cull Off
- Blend One SrcAlpha, Zero One
- BlendOp Add, Add
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FragGaussianAfterOpaque
-
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
-
- half4 FragGaussianAfterOpaque(Varyings input) : SV_Target
- {
- half ao = VerticalGaussianBlur(input);
- return half4(0.0, 0.0, 0.0, ao);
- }
-
- ENDHLSL
- }
-
- // ------------------------------------------------------------------
- // Kawase Blur
- // ------------------------------------------------------------------
-
- // 8 - Kawase Blur
- Pass
- {
- Name "SSAO_Kawase"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment KawaseBlur
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
- ENDHLSL
- }
-
- // 9 - After Opaque Kawase
- Pass
- {
- Name "SSAO_Kawase_AfterOpaque"
-
- ZTest Off
- ZWrite Off
- Cull Off
- Blend One SrcAlpha, Zero One
- BlendOp Add, Add
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FragKawaseAfterOpaque
-
- #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl"
-
- half4 FragKawaseAfterOpaque(Varyings input) : SV_Target
- {
- half ao = KawaseBlur(input);
- return half4(0.0, 0.0, 0.0, ao);
- }
-
- ENDHLSL
- }
- }
- }
|