Hi, I am getting this error "Shader error in 'Custom/WobbleEffectShader_Object': syntax error: unexpected token 'float2' at line 62 (on glcore) " if anyone could help that would be great, Thanks Code (CSharp): Shader "Custom/WobbleEffectShader_Object" { Properties { _MainTex ("Texture", 2D) = "white" {} _NoiseTex ("Noise Texture", 2D) = "white" {} _DistortionDamper ("Distortion Damper", Float) = 10 _DistortionSpreader ("Distortion Spreader", Float) = 100 _TimeDamper ("Time Damper", Float) = 20 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; sampler2D _NoiseTex; float _DistortionDamper; float _DistortionSpreader; float _TimeDamper; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target float2 offset = float2( tex2D( _NoiseTex, float2(IN.worldPosition.y / _DistortionSpreader, _Time[1]/_TimeDamper ) ).r , tex2D( _NoiseTex, float2(_Time[1]/_TimeDamper, IN.worldPosition.x / _DistortionSpreader ) ).r // Displacement in the Y direction ); offset -= 0.5; { // sample the texture fixed4 col = tex2D(_MainTex, IN.texcoord + offset / _DistortionDamper i.uv); // apply fog UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } }
Here's a very basic fragment shader function: Code (CSharp): fixed4 frag (v2f i) : SV_Target { return fixed4(1,1,1,1); } Lets break it down quickly: This is a function declaration. It describes the output value(s) (fixed4), name of the function (frag), and input arguments(s) (v2f i), and in the case of shader stage functions, the output semantic (SV_Target) The open brace is the start of the function body, the code the function actually runs This is the function body's expression, ie: the code that runs, and in this case return value The close brace is the end of the function body Line 62 is between the function declaration and the first open brace, so the compiler is trying to use that as part of the function declaration, but has no idea how to use a float2 here as the only thing between the colon : and open brace { should be an output semantic. TLDR; move the open brace on line 70 to line 61.