| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- Shader "URP Shadow Receiver"
- {
- Properties
- {
- _ShadowColor ("Shadow Color", Color) = (0.35, 0.4, 0.45, 1.0)
- }
- SubShader
- {
- Tags
- {
- "RenderPipeline" = "UniversalPipeline"
- "RenderType" = "Transparent"
- "Queue" = "Transparent-1"
- }
- Pass
- {
- Name "ForwardLit"
- Tags
- {
- "LightMode" = "UniversalForward"
- }
- Blend DstColor Zero, Zero One
- Cull Back
- ZTest LEqual
- ZWrite Off
- HLSLPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma prefer_hlslcc gles
- #pragma exclude_renderers d3d11_9x
- #pragma target 2.0
- #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
- #pragma multi_compile _ _SHADOWS_SOFT
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- CBUFFER_START(UnityPerMaterial)
- float4 _ShadowColor;
- CBUFFER_END
- struct Attributes
- {
- half4 positionOS : POSITION;
- };
- struct Varyings
- {
- half4 positionCS : SV_POSITION;
- half3 positionWS : TEXCOORD0;
- };
- Varyings vert(Attributes input)
- {
- Varyings output;
- VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz);
- output.positionCS = vertexInput.positionCS;
- output.positionWS = vertexInput.positionWS;
- return output;
- }
- half4 frag(Varyings input) : SV_Target
- {
- half4 color = half4(1, 1, 1, 1);
- #if (defined(_MAIN_LIGHT_SHADOWS) || defined(_MAIN_LIGHT_SHADOWS_CASCADE) || defined(_MAIN_LIGHT_SHADOWS_SCREEN))
- VertexPositionInputs vertexInput = (VertexPositionInputs)0;
- vertexInput.positionWS = input.positionWS;
- float4 shadowCoord = GetShadowCoord(vertexInput);
- half shadowAttenutation = MainLightRealtimeShadow(shadowCoord);
- color = lerp(half4(1, 1, 1, 1), _ShadowColor, (1.0 - shadowAttenutation) * _ShadowColor.a);
- #endif
- return color;
- }
- ENDHLSL
- }
- }
- }
|