88 lines
2.3 KiB
Plaintext
88 lines
2.3 KiB
Plaintext
Shader "Hidden/ShadowProjected2D"
|
|
{
|
|
Properties
|
|
{
|
|
[HideInInspector] _ShadowColorMask("__ShadowColorMask", Float) = 0
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
Tags { "RenderType"="Transparent" }
|
|
|
|
Cull Off
|
|
BlendOp Add
|
|
ZWrite Off
|
|
ZTest Always
|
|
|
|
// This pass draws the projected shadow and sets the composite shadow bit.
|
|
Pass
|
|
{
|
|
// Bit 0: Composite Shadow Bit, Bit 1: Global Shadow Bit
|
|
Stencil
|
|
{
|
|
Ref 5
|
|
ReadMask 4
|
|
WriteMask 1
|
|
Comp NotEqual
|
|
Pass Replace
|
|
Fail Keep
|
|
}
|
|
|
|
ColorMask [_ShadowColorMask]
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
#include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/ShadowProjectVertex.hlsl"
|
|
|
|
Varyings vert (Attributes v)
|
|
{
|
|
return ProjectShadow(v);
|
|
}
|
|
|
|
half4 frag (Varyings i) : SV_Target
|
|
{
|
|
return half4(1,1,1,1);
|
|
}
|
|
ENDHLSL
|
|
}
|
|
// Sets the global shadow bit, and clears the composite shadow bit
|
|
Pass
|
|
{
|
|
// Bit 0: Composite Shadow Bit, Bit 1: Global Shadow Bit
|
|
Stencil
|
|
{
|
|
Ref 3
|
|
WriteMask 2
|
|
ReadMask 1
|
|
Comp Equal
|
|
Pass Replace
|
|
Fail Keep
|
|
}
|
|
|
|
// We only want to change the stencil value in this pass
|
|
ColorMask 0
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
#include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/ShadowProjectVertex.hlsl"
|
|
|
|
Varyings vert (Attributes v)
|
|
{
|
|
return ProjectShadow(v);
|
|
}
|
|
|
|
half4 frag (Varyings i) : SV_Target
|
|
{
|
|
return half4(1,1,1,1);
|
|
}
|
|
ENDHLSL
|
|
}
|
|
}
|
|
}
|