#version 300 es // from case 685794 at Unity; a particular form of a loop // started to generate invalid shaders around Unity 4.6.3. out mediump vec4 _fragData; struct v2f_surf { mediump vec2 uv; highp vec4 pos; }; uniform sampler2D _MainTex; uniform mediump float _NumPasses; uniform mediump vec4 _ContrastShift; uniform mediump vec4 _SaturationShift; uniform lowp vec4 _HueShift; uniform lowp vec4 _LuminosityShift; lowp vec3 TestCycle2( in lowp vec3 res, in mediump float val ) { return ((res - 0.5) * pow( (cos(val) + 1.0), val)); } lowp vec3 TestCycle( in lowp vec3 rgb, in mediump float passes ) { lowp vec3 res = rgb; // a weird form of loop that was causing a bug highp float i = 0.0; for ( ; (i < 4.0); i += 1.0) { if ((i == passes)){ break; } if ((i == 0.0)){ res = TestCycle2( res, ((_ContrastShift.x * 3.0) + 12.0)); } else{ if ((i == 1.0)){ res = TestCycle2( res, ((_SaturationShift.y * 3.0) + 12.0)); } else{ if ((i == 2.0)){ res = TestCycle2( res, ((_HueShift.z * 3.0) + 12.0)); } else{ res = TestCycle2( res, ((_LuminosityShift.x * 3.0) + 12.0)); } } } } return res; } lowp vec3 surf( in mediump vec2 uv ) { lowp vec4 t = texture(_MainTex, uv); if (_NumPasses > 0.0) t.xyz = TestCycle(t.xyz, _NumPasses); return t.xyz; } lowp vec4 frag_surf( in v2f_surf IN ) { lowp vec3 col = surf( IN.uv); return vec4( col, 1.0); } in mediump vec2 xlv_TEXCOORD0; void main() { lowp vec4 xl_retval; v2f_surf xlt_IN; xlt_IN.uv = vec2(xlv_TEXCOORD0); xlt_IN.pos = vec4(0.0); xl_retval = frag_surf(xlt_IN); _fragData = vec4(xl_retval); }