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
|
||
|
}
|
||
|
}
|
||
|
}
|