[require] GLSL >= 1.20 [vertex shader] varying vec4 values[4]; uniform int index; void main() { values[0] = vec4(0.2); values[index] = vec4(0.4); values[2] = vec4(0.6); values[3] = vec4(0.7); gl_Position = gl_Vertex; } [fragment shader] varying vec4 values[4]; uniform float f0; uniform float f1; void main() { gl_FragColor = (f0 * values[0] + f1 * values[1] + f0 * values[2] + f0 * values[3]); } [test] uniform int index 1 uniform float f0 0.0 uniform float f1 1.0 draw rect -1 -1 2 2 probe rgba 1 1 0.4 0.4 0.4 0.4