#version 130 uniform sampler2D sampler; varying vec2 coord; struct lunarStruct1 { int i; float f[4]; vec4 color[5]; }; struct lunarStruct2 { int i[5]; float f; lunarStruct1 s1_1[7]; }; uniform lunarStruct1 foo; uniform lunarStruct2 foo2[5]; void main() { float scale = 0.0; if (foo2[3].i[4] > 0) scale = foo2[3].s1_1[2].color[3].x; else scale = foo2[3].s1_1[2].f[3]; gl_FragColor = scale * texture2D(sampler, coord); }