[require] GLSL >= 1.10 [vertex shader] varying vec4 texcoords; void main() { gl_Position = gl_Vertex; texcoords = (gl_Vertex + 1.0) / 2.0; } [fragment shader] varying vec4 texcoords; uniform sampler2D tex; void main() { gl_FragColor.r = texture2D(tex, texcoords.xy).r; gl_FragColor.g = texture2D(tex, 1.0 - texcoords.xy).g; gl_FragColor.b = texture2D(tex, texcoords.xy).b; gl_FragColor.a = texture2D(tex, texcoords.xy).a; } [test] uniform int tex 0 texture rgbw 0 (8, 8) draw rect -1 -1 2 2 relative probe rgb (0.25, 0.25) (1.0, 1.0, 0.0) relative probe rgb (0.75, 0.25) (0.0, 0.0, 0.0) relative probe rgb (0.25, 0.75) (0.0, 1.0, 1.0) relative probe rgb (0.75, 0.75) (1.0, 0.0, 1.0)