[require] GLSL >= 1.10 [vertex shader] varying vec4 color; void main() { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; /* Renormalize to [-1, 2] */ color = (gl_Vertex + 1.0) * 3.0 / 2.0 - 1.0; } [fragment shader] varying vec4 color; void main() { vec2 x = min(max(vec2(0.0), color.x), 1.0) * 0.5 + 0.25; vec2 y = min(max(vec2(0.0), color.y), 1.0) * 0.5 + 0.25; gl_FragColor = vec4(x.y, y.y, 0.0, 0.0); } [test] draw rect -1 -1 2 2 relative probe rgba (0.0, 0.0) (0.25, 0.25, 0.0, 0.0) relative probe rgba (1.0, 0.0) (0.75, 0.25, 0.0, 0.0) relative probe rgba (0.0, 1.0) (0.25, 0.75, 0.0, 0.0) relative probe rgba (1.0, 1.0) (0.75, 0.75, 0.0, 0.0)