Search Unity

Help getting shader in URP to display shadows

Discussion in 'Shaders' started by AnxietyStallion, Jun 23, 2020.

  1. AnxietyStallion

    AnxietyStallion

    Joined:
    Jun 23, 2020
    Posts:
    1
    Hello,
    I am using a custom shader in my project and I have been struggling with making it display shadows.
    There is not much support with URP shaders and I am wondering if anyone can tell me what is wrong with my code.

    Thanks :)


    Code (CSharp):
    1. Pass
    2.         {
    3.             Name "ShadowCollector"
    4.             Tags { "LightMode" = "ShadowCollector" }
    5.            
    6.             Fog {Mode Off}
    7.             ZWrite On ZTest LEqual
    8.  
    9.             CGPROGRAM
    10.             #pragma target      3.0
    11.            
    12.             #pragma vertex         vert
    13.             #pragma fragment     frag
    14.            
    15.             #pragma multi_compile_shadowcollector
    16.             #pragma only_renderers d3d11
    17.            
    18.             #define SHADOW_COLLECTOR_PASS
    19.            
    20.             #include "UnityCG.cginc"
    21.             #include "HLSLSupport.cginc"
    22.            
    23.             float       _Explode;
    24.            
    25.             struct appdata
    26.             {
    27.                 float4 vertex : POSITION;
    28.             };
    29.  
    30.             struct v2f
    31.             {
    32.                 V2F_SHADOW_COLLECTOR;
    33.                 fixed4 color : COLOR;
    34.             };
    35.            
    36.             struct v2g
    37.             {
    38.                 float4 pos : SV_POSITION;
    39.             };
    40.            
    41.            
    42.             v2g vert (appdata v)
    43.             {
    44.                 v2g o;
    45.                 TRANSFER_SHADOW_COLLECTOR(o)
    46.                 return o;
    47.             }
    48.  
    49.             [maxvertexcount(12)]
    50.             void geom( triangle v2g input[3], inout TriangleStream<v2f> outStream )
    51.             {
    52.                 v2f output;
    53.                 for( int looper=0; looper<3; looper++ )
    54.                 {
    55.                     float4 wpos;
    56.                     TRANSFER_GEOM_SHADOW_COLLECTOR(output, input[looper].pos)      
    57.                 }
    58.  
    59.             }
    60.            
    61.             fixed4 frag (v2f i) : COLOR
    62.             {
    63.                 SHADOW_COLLECTOR_FRAGMENT(i)
    64.             }
    65.             ENDCG
    66.         }