"RenderType" = "Transparent"
"RenderPipeline"= "UniversalPipeline"
Tags { "LightMode"="UniversalForward" }
// standard alpha blending for transparency
Blend SrcAlpha OneMinusSrcAlpha
// enable fog if you need it
#pragma multi_compile_fog
// enable main-light & additional-light shadows
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
// URP lighting / shadow helpers
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
float4 positionOS : POSITION;
float3 normalOS : NORMAL;
// ... any UVs, colors, etc.
float4 positionCS : SV_POSITION;
float3 normalWS : NORMAL;
float3 positionWS : TEXCOORD0;
float4 shadowCoord : TEXCOORD1;
Varyings Vert(Attributes IN)
OUT.positionCS = TransformObjectToHClip(IN.positionOS.xyz);
float3 worldPos = TransformObjectToWorld(IN.positionOS.xyz);
OUT.positionWS = worldPos;
OUT.normalWS = TransformObjectToWorldNormal(IN.normalOS);
// compute shadow-map UVs
VertexPositionInputs vpi = GetVertexPositionInputs(IN.positionOS.xyz);
OUT.shadowCoord = GetShadowCoord(vpi);
UNITY_TRANSFER_FOG(OUT, OUT.positionCS);
half4 Frag(Varyings IN) : SV_Target
// sample your base color/texture here...
half4 baseCol = half4(1,1,1, IN.shadowCoord.w /* or your alpha */);
// get the shadow weight [0..1] from the main light
half shadowMain = MainLightRealtimeShadow(IN.shadowCoord);
// if you also want additional lights:
// int addCount = GetAdditionalLightsCount();
// for(...) shadowMain *= AdditionalLightRealtimeShadow(...);
// modulate your lighting by the shadow
baseCol.rgb *= shadowMain;
UNITY_APPLY_FOG(IN.fogCoord, baseCol);
// … ShadowCaster / DepthOnly passes go here …