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 }
}
}
}
}
Answer by Jessespike · Dec 08, 2015 at 05:33 PM
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
Thank you very much, the first suggestion worked perfectly. $$anonymous$$uch appreciated!
Your answer
Follow this Question
Related Questions
compiler error - playmode 0 Answers
Shader works in editor but not in Android - Pass 'meta' has no vertex shader 1 Answer
My map turns blue red and green always! 0 Answers
VR Red Dot Shader Error 0 Answers
Black screen on Android build 14 Answers