220 lines
7.4 KiB
Plaintext
220 lines
7.4 KiB
Plaintext
Shader "Hidden/Kronnect/UmbraScreenSpaceShadows"
|
|||
|
|
{
|
||
|
|
Properties {
|
||
|
|
// _MainTex ("Main Tex", 2D) = "white" {}
|
||
|
|
// _Color ("Color", Color) = (1, 1, 1, 1)
|
||
|
|
[NoScaleoffset] _NoiseTex("Noise Tex", 2D) = "white" {}
|
||
|
|
_ContactShadowsBlend ("Contact Shadows Blend", Int) = 10 // OneMinusSrcAlpha
|
||
|
|
}
|
||
|
|
SubShader
|
||
|
|
{
|
||
|
|
Tags{ "RenderPipeline" = "UniversalPipeline" "IgnoreProjector" = "True"}
|
||
|
|
ZTest Always ZWrite Off Cull Off
|
||
|
|
|
||
|
|
HLSLINCLUDE
|
||
|
|
#pragma target 3.0
|
||
|
|
|
||
|
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
|
||
|
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/EntityLighting.hlsl"
|
||
|
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/ImageBasedLighting.hlsl"
|
||
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
||
|
|
#include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
|
||
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"
|
||
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl"
|
||
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl"
|
||
|
|
|
||
|
|
#include "Common.hlsl"
|
||
|
|
|
||
|
|
ENDHLSL
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Umbra Shadows"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE
|
||
|
|
#pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
|
||
|
|
#pragma multi_compile_local_fragment _ _NORMALS_TEXTURE
|
||
|
|
#pragma multi_compile_local_fragment _ _CONTACT_HARDENING
|
||
|
|
#pragma multi_compile_local_fragment _ _LOOP_STEP_X2 _LOOP_STEP_X3
|
||
|
|
#pragma multi_compile_local_fragment _ _MASK_TEXTURE
|
||
|
|
#pragma multi_compile_local_fragment _ _RECEIVER_PLANE
|
||
|
|
#pragma vertex Vert
|
||
|
|
#pragma fragment FragCast
|
||
|
|
#include "ShadowCast.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Blur Horiz"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile_local_fragment _ _BLUR_HQ
|
||
|
|
#pragma multi_compile_local_fragment _ _CONTACT_HARDENING
|
||
|
|
#pragma vertex VertBlur
|
||
|
|
#pragma fragment FragBlurGaussian
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Blur Vert"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile_local_fragment _ _BLUR_HQ
|
||
|
|
#pragma multi_compile_local_fragment _ _CONTACT_HARDENING
|
||
|
|
#pragma vertex VertBlur
|
||
|
|
#pragma fragment FragBlurGaussian
|
||
|
|
#define BLUR_VERT
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Box Blur"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile_local_fragment _ _CONTACT_HARDENING
|
||
|
|
#pragma vertex VertSimple
|
||
|
|
#pragma fragment FragBlurBox
|
||
|
|
#define BOX_BLUR
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Compose with Blending"
|
||
|
|
Blend SrcAlpha OneMinusSrcAlpha
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile_local_fragment _ _PRESERVE_EDGES
|
||
|
|
#pragma multi_compile_local_fragment _ _NORMALS_TEXTURE
|
||
|
|
#pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
|
||
|
|
#pragma vertex VertSimple
|
||
|
|
#pragma fragment FragCompose
|
||
|
|
#define COMPOSE_WITH_BLENDING
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Downsample Depth"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma vertex VertSimple
|
||
|
|
#pragma fragment FragDownsampleDepth
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Umbra Cascade Blending"
|
||
|
|
Blend SrcAlpha OneMinusSrcAlpha
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE
|
||
|
|
#pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
|
||
|
|
#pragma multi_compile_local_fragment _ _NORMALS_TEXTURE
|
||
|
|
#pragma multi_compile_local_fragment _ _CONTACT_HARDENING
|
||
|
|
#pragma multi_compile_local_fragment _ _LOOP_STEP_X2 _LOOP_STEP_X3
|
||
|
|
#pragma multi_compile_local_fragment _ _MASK_TEXTURE
|
||
|
|
#define _BLEND_CASCADE
|
||
|
|
#pragma vertex Vert
|
||
|
|
#pragma fragment FragCast
|
||
|
|
#include "ShadowCast.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "ScreenSpaceShadows"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE
|
||
|
|
#pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
|
||
|
|
#pragma vertex Vert
|
||
|
|
#pragma fragment FragUnityShadows
|
||
|
|
#include "ShadowCast.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Compose Unity Shadows"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile_local_fragment _ _PRESERVE_EDGES
|
||
|
|
#pragma vertex VertSimple
|
||
|
|
#pragma fragment FragComposeUnity
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Contact Shadows"
|
||
|
|
Blend One One
|
||
|
|
BlendOp Min
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma vertex Vert
|
||
|
|
#pragma fragment FragContactShadows
|
||
|
|
#pragma multi_compile_local_fragment _ _LOOP_STEP_X2 _LOOP_STEP_X3
|
||
|
|
#pragma multi_compile_local_fragment _ _NORMALS_TEXTURE
|
||
|
|
#pragma multi_compile_local_fragment _ _RECEIVER_PLANE
|
||
|
|
#pragma multi_compile_local_fragment _ _USE_POINT_LIGHT
|
||
|
|
#pragma multi_compile_local_fragment _ _SOFT_EDGES
|
||
|
|
#include "ContactShadows.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Compose"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile_local_fragment _ _PRESERVE_EDGES
|
||
|
|
#pragma vertex VertSimple
|
||
|
|
#pragma fragment FragCompose
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Debug Shadows"
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma multi_compile_local_fragment _ _PRESERVE_EDGES
|
||
|
|
#pragma vertex Vert
|
||
|
|
#pragma fragment FragDebugShadows
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Contact Shadows After Opaque"
|
||
|
|
Blend SrcAlpha [_ContactShadowsBlend]
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma vertex Vert
|
||
|
|
#pragma fragment FragContactShadows
|
||
|
|
#pragma multi_compile_local_fragment _ _LOOP_STEP_X2 _LOOP_STEP_X3
|
||
|
|
#pragma multi_compile_local_fragment _ _NORMALS_TEXTURE
|
||
|
|
#pragma multi_compile_local_fragment _ _RECEIVER_PLANE
|
||
|
|
#pragma multi_compile_local_fragment _ _USE_POINT_LIGHT
|
||
|
|
#pragma multi_compile_local_fragment _ _SOFT_EDGES
|
||
|
|
#define CONTACT_SHADOWS_AFTER_OPAQUE
|
||
|
|
#include "ContactShadows.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "Overlay Shadows"
|
||
|
|
Blend SrcAlpha OneMinusSrcAlpha
|
||
|
|
HLSLPROGRAM
|
||
|
|
#pragma vertex Vert
|
||
|
|
#pragma fragment FragOverlayShadows
|
||
|
|
#include "ShadowBlur.hlsl"
|
||
|
|
ENDHLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|