Shader "Hidden/Kronnect/SSR_URP" { Properties { _BumpMap("Normal Map", 2D) = "bump" {} _BumpScale("Normal Strength", Float) = 1.0 _SmoothnessMap("Smoothness Map", 2D) = "white" {} _OcclusionMap("Occlusion", 2D) = "white" {} _OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0 _Color("", Color) = (1,1,1) _NoiseTex("", any) = "" {} _SSRSettings("", Vector) = (1,1,1,1) _SSRSettings2("", Vector) = (1,1,1,1) _StencilValue("Stencil Value", Int) = 0 _StencilCompareFunction("Stencil Compare Function", Int) = 8 } Subshader { Tags { "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline" "DisableBatching"="True" "ForceNoShadowCasting"="True" } ZWrite Off ZTest Always Cull Off HLSLINCLUDE #pragma target 3.0 #pragma prefer_hlslcc gles #pragma exclude_renderers d3d11_9x #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Filtering.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/Common.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl" #include "SSR_Common.hlsl" ENDHLSL Pass { // 0 Name "Copy exact" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragCopyExact #include "SSR_Blends.hlsl" ENDHLSL } Pass { // 1 Name "Surface reflection" ZTest LEqual ZWrite On HLSLPROGRAM #pragma vertex VertSSRSurf #pragma fragment FragSSRSurf #pragma multi_compile_local _ SSR_SCREEN_SPACE_NORMALS SSR_NORMALMAP #pragma multi_compile_local _ SSR_SMOOTHNESSMAP #pragma multi_compile_local _ SSR_OCCLUSIONMAP #pragma multi_compile_local _ SSR_JITTER #pragma multi_compile_local _ SSR_THICKNESS_FINE #pragma multi_compile_local _ SSR_METALLIC_WORKFLOW #pragma multi_compile _ SSR_ORTHO_SUPPORT #pragma multi_compile _ SSR_BACK_FACES #pragma multi_compile _ SSR_SKYBOX SSR_SKYBOX_VISIBLE_ONLY #include "SSR_Surface_Pass.hlsl" ENDHLSL } Pass { // 2 Name "Resolve" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragResolve #pragma multi_compile _ SSR_SKYBOX #pragma multi_compile_local _ SSR_METALLIC_WORKFLOW #pragma multi_compile _ SSR_BLEND_REFLECTIONS #pragma multi_compile_local _ SSR_VIGNETTE_RADIAL #include "SSR_Solve.hlsl" ENDHLSL } Pass { // 3 Name "Blur horizontally" HLSLPROGRAM #pragma vertex VertBlur #pragma fragment FragBlur #pragma multi_compile_local _ SSR_DENOISE #define SSR_BLUR_HORIZ #include "SSR_Blur.hlsl" ENDHLSL } Pass { // 4 Name "Blur vertically" HLSLPROGRAM #pragma vertex VertBlur #pragma fragment FragBlur #pragma multi_compile_local _ SSR_DENOISE #include "SSR_Blur.hlsl" ENDHLSL } Pass { // 5 Name "Debug" Blend One Zero HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragCopyExact #include "SSR_Blends.hlsl" ENDHLSL } Pass { // 6 Name "Combine" Stencil { Ref [_StencilValue] Comp [_StencilCompareFunction] } Blend One OneMinusSrcAlpha // precomputed source alpha in Resolve pass HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragCombine #pragma multi_compile_local_fragment _ SSR_DARK_REFLECTIONS SSR_METALLIC_BOOST #pragma multi_compile_local _ SSR_CUSTOM_SMOOTHNESS_METALLIC_PASS #pragma multi_compile _ SSR_SKYBOX #include "SSR_Blends.hlsl" ENDHLSL } Pass { // 7 Name "Combine with compare" Stencil { Ref [_StencilValue] Comp [_StencilCompareFunction] } Blend One OneMinusSrcAlpha // One One // precomputed source alpha in Resolve pass HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragCombineWithCompare #pragma multi_compile_local_fragment _ SSR_DARK_REFLECTIONS SSR_METALLIC_BOOST #pragma multi_compile_local _ SSR_CUSTOM_SMOOTHNESS_METALLIC_PASS #pragma multi_compile _ SSR_SKYBOX #include "SSR_Blends.hlsl" ENDHLSL } Pass { // 8 Name "Deferred pass" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragSSR #pragma multi_compile_local _ SSR_JITTER #pragma multi_compile_local _ SSR_THICKNESS_FINE #pragma multi_compile_local _ SSR_METALLIC_WORKFLOW #pragma multi_compile_local _ SSR_CUSTOM_SMOOTHNESS_METALLIC_PASS #pragma multi_compile_local _ SSR_LIMIT_BOUNDS #pragma multi_compile _ SSR_ORTHO_SUPPORT #pragma multi_compile _ _GBUFFER_NORMALS_OCT #pragma multi_compile _ SSR_BACK_FACES #pragma multi_compile _ SSR_SKYBOX SSR_SKYBOX_VISIBLE_ONLY #include "SSR_GBuf_Pass.hlsl" ENDHLSL } Pass { // 9 Name "Copy with bilinear filter" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragCopy #include "SSR_Blends.hlsl" ENDHLSL } Pass { // 10 Name "Temporal Accumulation" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragAcum #include "SSR_TAcum.hlsl" ENDHLSL } Pass { // 11 Name "Debug Depth" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragDebugDepth #include "SSR_Blends.hlsl" ENDHLSL } Pass { // 12 Name "Debug Normals" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragDebugNormals #pragma multi_compile _ _GBUFFER_NORMALS_OCT #include "SSR_Blends.hlsl" ENDHLSL } Pass { // 13 Name "Copy Depth" HLSLPROGRAM #pragma vertex VertSSR #pragma fragment FragCopyDepth #pragma multi_compile _ SSR_BACK_FACES #pragma multi_compile _ SSR_DEPTH_PREPASS #pragma multi_compile _ SSR_ORTHO_SUPPORT #include "SSR_Blends.hlsl" ENDHLSL } } FallBack Off }