Unlit cutout receive shadow

Hello! I have a shader that makes unlit cutout surface receive shadow. It works as below:
I want to make its cutout let through light/shadow so shadow do not cast on transparent part of the surface.
Can someone please help with this?

Shader "Unlit With Shadows" {
    Properties{
        _Color("Main Color", Color) = (1,1,1,1)
        _MainTex("Base (RGB)", 2D) = "white" {}
    _Depthmap("Base (RGB) Trans (A)", 2D) = "white" {}
    _Cutoff("Alpha cutoff", Range(0,1)) = 0.5
    }
        SubShader{
            Tags {"Queue" = "Geometry" "RenderType" = "TransparentCutout"}
            LOD 100
            ZWrite On


            Pass {
                Tags {"LightMode" = "ForwardBase"}
                CGPROGRAM
                    #pragma vertex vert
                    #pragma fragment frag
                    #pragma multi_compile_fwdbase
                    #pragma fragmentoption ARB_fog_exp2
                    #pragma fragmentoption ARB_precision_hint_fastest

                    #include "UnityCG.cginc"
                    #include "AutoLight.cginc"

                    struct v2f
                    {
                        float4    pos            : SV_POSITION;
                        float2    uv            : TEXCOORD0;
                        LIGHTING_COORDS(1,2)
                    };

                    float4 _MainTex_ST;

                    v2f vert(appdata_tan v)
                    {
                        v2f o;

                        o.pos = UnityObjectToClipPos(v.vertex);
                        o.uv = TRANSFORM_TEX(v.texcoord, _MainTex).xy;
                        TRANSFER_VERTEX_TO_FRAGMENT(o);
                        UNITY_TRANSFER_FOG(o, o.pos);

                        return o;
                    }

                    sampler2D _MainTex;
                    sampler2D _Depthmap;
                    fixed _Cutoff;

                    fixed4 frag(v2f i) : COLOR
                    {
                        //fixed atten = LIGHT_ATTENUATION(i);    // Light attenuation + shadows.
                        fixed atten = SHADOW_ATTENUATION(i); // Shadows ONLY.

                        fixed4 col = tex2D(_MainTex, i.uv);
                        col.a = tex2D(_Depthmap, i.uv);                       
                        clip(col.a - _Cutoff); //clip alpha value,basic distance filter.
                        UNITY_APPLY_FOG(i.fogCoord, col);

                        return tex2D(_MainTex, i.uv) * atten;
                    }
                ENDCG
            }

            Pass {
                Tags {"LightMode" = "ForwardAdd"}
                Blend One One
                CGPROGRAM
                    #pragma vertex vert
                    #pragma fragment frag
                    #pragma multi_compile_fwdadd_fullshadows
                    #pragma fragmentoption ARB_fog_exp2
                    #pragma fragmentoption ARB_precision_hint_fastest

                    #include "UnityCG.cginc"
                    #include "AutoLight.cginc"

                    struct v2f
                    {
                        float4    pos            : SV_POSITION;
                        float2    uv            : TEXCOORD0;
                        LIGHTING_COORDS(1,2)
                    };

                    float4 _MainTex_ST;

                    v2f vert(appdata_tan v)
                    {
                        v2f o;

                        o.pos = UnityObjectToClipPos(v.vertex);
                        o.uv = TRANSFORM_TEX(v.texcoord, _MainTex).xy;
                        TRANSFER_VERTEX_TO_FRAGMENT(o);
                        return o;
                    }

                    sampler2D _MainTex;

                    fixed4 frag(v2f i) : COLOR
                    {
                        //fixed atten = LIGHT_ATTENUATION(i);    // Light attenuation + shadows.
                        fixed atten = SHADOW_ATTENUATION(i); // Shadows ONLY.
                        return tex2D(_MainTex, i.uv) * atten;
                    }
                ENDCG
            }
    }
        FallBack "VertexLit"
}

Your fallback shader is for an opaque material, which means its shadow caster (and shadow receiver, which reuses the same shader as the shadow caster) is opaque. You need to use the cutout version.

Fallback "Legacy Shaders/Transparent/Cutout/VertexLit"

I have changed the code, and no difference made.:face_with_spiral_eyes:

I missed you were doing this:

                        col.a = tex2D(_Depthmap, i.uv);

The built in shadow caster passes assume you’re using the alpha from the _MainTex. Since your shader isn’t doing that, you’ll need to manually write a custom shadow caster pass that uses the same logic as the base pass to clip, be that getting the alpha from the _Depthmap’s red channel or whatever you end up doing for your final shader.

How can I transfer this alpha from _Depthmap to _MainTex, so the shadow caster passes can use it,
or how to write this custom shadow pass?

Copy the shadow caster pass in the fallback shader I recommend, and modify it to your needs.