AlphaBlendClipsafe using Far Clip Plane

Hello everybody,

I was looking for a way to partially fade in vertices from the far clip plane. I found a shader that fades out using the near clip plane. How can I modify this to fit my needs?

Shader "Particles/Alpha Blended Clipsafe" {
    Properties {
        _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
        _MainTex ("Particle Texture", 2D) = "white" {}
        _FadeDistance ("Fade Start Distance", float) = 0.5
    }

    SubShader {
        Tags { "Queue" = "Transparent" }
        Blend SrcAlpha OneMinusSrcAlpha
        AlphaTest Greater .01
        ColorMask RGB
        Lighting Off
        ZWrite Off
        Fog { Color (0,0,0,0) }
        Pass {
            CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #pragma multi_compile_builtin
                #pragma fragmentoption ARB_fog_exp2
                #pragma fragmentoption ARB_precision_hint_fastest
                #include "UnityCG.cginc"
               
                uniform float4  _MainTex_ST,
                                _TintColor;
                uniform float _FadeDistance;
               
                struct appdata_vert {
                    float4 vertex : POSITION;
                    float4 texcoord : TEXCOORD0;
                    float4 color : COLOR;
                };
               
                uniform sampler2D _MainTex;
               
                struct v2f {
                    V2F_POS_FOG;
                    float2  uv;
                    float4 color;
                };
               
                v2f vert (appdata_vert v) {
                    v2f o;
                    PositionFog( v.vertex, o.pos, o.fog );
                    o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
                    float4 viewPos = mul(glstate.matrix.modelview[0], v.vertex);
                    float alpha = (-viewPos.z - _ProjectionParams.y)/_FadeDistance;
                    alpha = min(alpha, 1);
                    o.color = float4(v.color.rgb, v.color.a*alpha);
                    o.color *= _TintColor*2;
                    return o;
                }
               
                float4 frag (v2f i) : COLOR {
                    half4 texcol = tex2D( _MainTex, i.uv );
                   
                    return texcol*i.color;
                }
            ENDCG
        }
    }
   
    Fallback "Particles/Alpha Blended"
}

Thanks in advance.

Anyone?

Well I did some trials, errors and guessing, and it looks like its working for my needs.

You just need to modify the line where the shader sets the alpha value inside the vertex function.

float alpha = (((viewPos.z+ _ProjectionParams.z+ _ProjectionParams.y))/(_FadeDistance));

I added this ProjectionParams.z, which looks like the length? of the viewing frustum?