How to change the alpha value in the vertex color using a shader ?

Hi guy what i’m trying to do is simple :
Regarding the distance between the camera and each vertex in a mesh I want to set its alpha value.
In my case the more my camera is close to a vertex more the vertex will be transparent.
I made a shader :

Shader "Custom/GradientTransparent" {
Properties {
		_mainTexture("Texture", 2D) = "white" {}
		_range("Range", Float) = 100
	}
	
	SubShader {
        Tags { "Queue" = "Transparent" } 
         // draw after all opaque geometry has been drawn
      Pass {
         ZWrite Off // don't write to depth buffer 
            // in order not to occlude other objects

         Blend SrcAlpha OneMinusSrcAlpha // use alpha blending

         CGPROGRAM 
 
        #pragma vertex vert 
        #pragma fragment frag
 		
 		#include "UnityCG.cginc"
 		
 		float _range;
 		sampler2D _mainTexture;
 		
 		struct vertIn{
 			float4 vertexPosition : POSITION;
 			float4 color : COLOR;
 			float4 texCoord : TEXCOORD0;
 		};
 		
 		struct v2f{
 			float4 pos : SV_POSITION;
 			float4 tex : TEXCOORD0;
 			float4 color : COLOR;
 		};
 
         v2f vert(vertIn i) 
         {
         	v2f o;
         	o.tex = i.texCoord;
            
            o.color = i.color;
            o.color.a = distance(i.vertexPosition, _WorldSpaceCameraPos) / _range;
            o.pos = mul(UNITY_MATRIX_MVP, i.vertexPosition);
            return o;
         }
 			
 		struct fragOut{
 			float4 color : COLOR;
 		};
 			
         fragOut frag(v2f i)
         {
         	fragOut o;
			float4 textureColor = tex2D(_mainTexture, i.tex.xy);
            o.color = textureColor * i.color ; 
            return o;


         }
 
         ENDCG  
      }
    }
}

With this shader I have a Fade transparency but with the entire mesh and not with all vertices independently.
And please I don’t want a solution including surface shader. I’m a noob at writing shader so I just want a classic vertex and fragment shader.
PS: I’m using Unity 4.6 and I can’t upgrade to 5.

So I just achieved what I wanted to do. My error was to not converting the vertex position in world position while processing the distance function.

v2f vert(vertIn i, appdata_full v) 
         {
         	v2f o;
         	o.tex = i.texCoord;
            
            o.color = v.color;
            o.color.a = distance(mul(_Object2World, v.vertex), _WorldSpaceCameraPos) / _range;
            o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
            return o;
         }