[require] GLSL >= 1.10 [vertex shader] varying vec2 pos; void main() { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; pos = gl_Vertex.xy; } [fragment shader] varying vec2 pos; struct s { bool x, y, z, w; }; void main() { s t1 = s(true, bool(42.0), pos.x > -20000.0, bool(111)); float r = ( float(all(bvec4(!t1.x, t1.y, t1.z, t1.w))) + float(all(bvec4( t1.x, !t1.y, t1.z, t1.w))) + float(all(bvec4( t1.x, t1.y, !t1.z, t1.w))) + float(all(bvec4( t1.x, t1.y, t1.z, !t1.w)))); float g = float(all(bvec4(t1.x, t1.y, t1.z, t1.w))); gl_FragColor = vec4(r, g, 0.0, 1.0); } [test] ortho clear color 0.5 0.5 0.5 0.5 clear draw rect 10 10 10 10 probe rgb 15 15 0.0 1.0 0.0