[vert.glsl] #version 130 in vec2 in_position; uniform vec2 u_screen_res; out vec2 pass_position; void main() { pass_position = ((vec2(1.0) + in_position) * 0.5 * u_screen_res); gl_Position = vec4(in_position, 0.0, 1.0); } [frag.glsl] #version 130 #if defined GL_ES precision highp float; #endif in vec2 pass_position; uniform sampler2D u_texture; uniform vec3 u_source_point; uniform vec2 u_screen_res; void main(void) { if (floor(u_source_point.xy) == floor(pass_position)) gl_FragColor = vec4(u_source_point.xy / u_screen_res, u_source_point.z, 1.0); else { vec4 src_color = texture2D(u_texture, pass_position / u_screen_res); gl_FragColor = src_color;//vec4(0.0, 0.0, 0.0, 1.0); } //vec4(pass_position / u_screen_res, 0.0, 1.0); }