How to use AlphaTest with a CGPROGRAM

I’ve used AlphaTest Greater 0 as an ‘Alpha Cutoff’ type of effect for a shader I’m using (Because I need ZWrite On), however when I try to implement a CGPROGRAM to add a Tint over my texture, it seems to be overriding the AlphaTest.

The result looks like so:

But I want it to look like this:

I’ve just used the Sprite-Default.shader from unity to add the Color tint. I’m obviously a rookie with this, and I’d like to understand whats going on. Any help would be great!

And here is my Shader as it currently stands:

Shader "Unlit/planetDefault"  {
             _MainTex ("Base", 2D) = "white" {}
             _Color ("Tint", Color) = (1,1,1,1)
             Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Opaque"}
             LOD 200

             Cull Off
             ZWrite On
             Blend SrcAlpha OneMinusSrcAlpha 
             AlphaTest Greater 0


            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile _ PIXELSNAP_ON
            #include "UnityCG.cginc"
            struct appdata_t
                float4 vertex   : POSITION;
                float4 color    : COLOR;
                float2 texcoord : TEXCOORD0;

            struct v2f
                float4 vertex   : SV_POSITION;
                fixed4 color    : COLOR;
                float2 texcoord  : TEXCOORD0;
            fixed4 _Color;

            v2f vert(appdata_t IN)
                v2f OUT;
                OUT.vertex = UnityObjectToClipPos(IN.vertex);
                OUT.texcoord = IN.texcoord;
                OUT.color = IN.color * _Color;
                #ifdef PIXELSNAP_ON
                OUT.vertex = UnityPixelSnap (OUT.vertex);

                return OUT;

            sampler2D _MainTex;
            sampler2D _AlphaTex;
            float _AlphaSplitEnabled;

            fixed4 SampleSpriteTexture (float2 uv)
                fixed4 color = tex2D (_MainTex, uv);

                if (_AlphaSplitEnabled)
                    color.a = tex2D (_AlphaTex, uv).r;

                return color;

            fixed4 frag(v2f IN) : SV_Target
                fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
                c.rgb *= c.a;
                return c;

             Lighting Off
             SetTexture [_MainTex] 
                Combine texture


I’ve just tracked this down. Because i’m using a Unity Particle System, there is apparently a known issue with particles rendering incorrectly (something to do with the Depth Buffer I guess?) where any particle in front of the particle system’s transform.position isn’t rendering correctly because the Z wont go below 0.