#version 130 uniform sampler2D sampler; varying mediump vec2 coord; varying vec4 u, w; struct s1 { int i; float f; }; struct s2 { int i; float f; s1 s1_1; }; uniform s1 foo1; uniform s2 foo2a; uniform s2 foo2b; void main() { vec4 v; s1 a[3], b[3]; a = s1[3](s1(int(u.x), u.y), s1(int(u.z), u.w), s1(14, 14.0)); b = s1[3](s1(17, 17.0), s1(int(w.x), w.y), s1(int(w.z), w.w)); if (foo2a == foo2b) v = texture2D(sampler, coord); else v = texture2D(sampler, 2.0*coord); if (u == v) v *= 3.0; if (u != v) v *= 4.0; if (coord == v.yw) v *= 5.0; if (a == b) v *= 6.0; if (a != b) v *= 7.0; gl_FragColor = v; }