My Shader code error since update 5.3 "'input parameter 'i' missing semantics at line 106 (on glcore)"

Would you mind helping me identify what the problem is with my shader code? It was working perfectly before I updated today to Unity 5.3.

The error is

‘frag’: input parameter ‘i’ missing semantics at line 106 (on glcore)

And my code is as follows:

// Per pixel bumped refraction.
// Uses a normal map to distort the image behind, and
// an additional texture to tint the color.

Shader "FX/Glass/Glass w RimLight" {
Properties {
    _BumpAmt  ("Distortion", range (0,128)) = 10
    _MainTex ("Tint Texture (RGB)", 2D) = "white" {}
    _TintColor ("Tint Color", Color) = (1,1,1,0.0)
    _BumpMap ("Normalmap", 2D) = "bump" {}
    _RimThick ("Rim Width", Range (0.0, 10.0)) = 0.1
    _RimColor ("Rim Color", Color) = (1, 1, 1, 1)
    _Cube ("Reflection Cubemap", Cube) = "_Skybox" {}
    _ReflectColor ("Reflection Color", Color) = (1,1,1,0.5)
}

Category {

    // We must be transparent, so other objects are drawn before this one.
    Tags { "Queue"="Transparent" "RenderType"="Opaque" }


    SubShader {

        // This pass grabs the screen behind the object into a texture.
        // We can access the result in the next pass as _GrabTexture
       ZWrite On
        GrabPass {
            Name "BASE"
            
            Tags { "LightMode" = "Always" }
        }
        
        // Main pass: Take the texture grabbed above and use the bumpmap to perturb it
        // on to the screen
         
        Pass {
            Name "BASE"
            
            Tags { "LightMode" = "Always" }
            
CGPROGRAM
// Upgrade NOTE: excluded shader from DX11 and Xbox360; has structs without semantics (struct v2f members rimcol,worldRefl)
#pragma exclude_renderers d3d11 xbox360
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
#include "UnityCG.cginc"

struct appdata_t {
    float4 vertex : POSITION;
    float2 texcoord: TEXCOORD0;
    float3 normal : NORMAL;
    
};

struct v2f {
    float4 vertex : SV_POSITION;
    float4 uvgrab : TEXCOORD0;
    float2 uvbump : TEXCOORD1;
    float2 uvmain : TEXCOORD2;
    float4 rimcol;
    float3 worldRefl;
    UNITY_FOG_COORDS(3)
};

float _BumpAmt;
float4 _BumpMap_ST;
float4 _MainTex_ST;
float _RimThick;
float4 _RimColor;
float4 _ReflectColor;
float4 _TintColor;

v2f vert (appdata_t v)
{
    v2f o;
    o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
    #if UNITY_UV_STARTS_AT_TOP
    float scale = -1.0;
    #else
    float scale = 1.0;
    #endif
    o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
    o.uvgrab.zw = o.vertex.zw;
    o.uvbump = TRANSFORM_TEX( v.texcoord, _BumpMap );
    o.uvmain = TRANSFORM_TEX( v.texcoord, _MainTex );
    UNITY_TRANSFER_FOG(o,o.vertex);
    
    
    //Rimlight Stuff
    float3 viewDir = normalize(ObjSpaceViewDir(v.vertex));
    float dotProduct = 1 - dot(v.normal, viewDir);
    o.rimcol= smoothstep(1 - _RimThick, 1.0, dotProduct)*_RimColor;
    o.worldRefl = ObjSpaceViewDir(v.vertex);
    
    return o;
}

sampler2D _GrabTexture;
float4 _GrabTexture_TexelSize;
sampler2D _BumpMap;
sampler2D _MainTex;
samplerCUBE _Cube;

half4 frag (v2f i) : SV_Target
{

    half2 bump = UnpackNormal(tex2D( _BumpMap, i.uvbump )).rg; 
    float2 offset = bump * _BumpAmt * _GrabTexture_TexelSize.xy;
    i.uvgrab.xy = offset * i.uvgrab.z + i.uvgrab.xy;
    
    half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab));
    half4 tint = tex2D(_MainTex, i.uvmain);
    col *= tint+_TintColor;
    UNITY_APPLY_FOG(i.fogCoord, col);
    
    col+=i.rimcol;
    half4 reflcol = texCUBE (_Cube, i.worldRefl);
    col+=(reflcol * _ReflectColor);
    
    return col;
}
ENDCG
        }
    }

    // ------------------------------------------------------------------
    // Fallback for older cards and Unity non-Pro

    SubShader {
        Blend DstColor Zero
        Pass {
            Name "BASE"
            SetTexture [_MainTex] {    combine texture }
        }
    }
}

}

Error says you’re missing semantics in the v2f struct. So you just need to add them:

 float4 rimcol : COLOR0;
 float3 worldRefl : COLOR1;

Alternatively, probably not ideal though, you can exclude d3d11_9x

 #pragma exclude_renderers d3d11_9x d3d11 xbox360