My shader code is having an error with returns at lines 50 and 60.

Shader “PeerPlay/NewImageEffectShader”
{
Properties
{
_MainTex (“Texture”, 2D) = “white” {}
}
SubShader
{
// No culling or depth
Cull Off ZWrite Off ZTest Always

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma target 3.0

            #include "UnityCG.cginc"

            sampler2D _MainTex;
            uniform float4 _CamWorldSpace;
            uniform float4x4 _CamFrustum, _CamToWorld;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
                float3 ray : TEXTCOORD1;
            };

            v2f vert (appdata v)
            {
                v2f o;
                half index = v.vertex.z;
                v.vertex.z = 0;
                o.vertex = UnityObjectToClipPos(v.vertex);

                o.uv = v.uv;
                o.ray = _CamFrustum[(int)index].xyz;
                o.ray /= abs(o.ray.z);
                o.ray = mul(_CamToWorld, o.ray)

                return o;
            };



            fixed4 frag (v2f i) : SV_Target
            {
                float3 rayDirection = normalize(i.ray.xyz);
                float3 rayOrigin = _CamWorldSpace;

                return fixed4(rayDirection, 1);
            };
            ENDCG
        }
    }
}

At line 35;

float3 ray : TEXTCOORD1;

should be;

float3 ray : TEXCOORD1;