precision mediump float; varying vec2 vTextureCoord; uniform sampler2D uSampler; uniform vec4 filterArea; uniform vec2 red; uniform vec2 green; uniform vec2 blue; void main(void) { gl_FragColor.r = texture2D(uSampler, vTextureCoord + red/filterArea.xy).r; gl_FragColor.g = texture2D(uSampler, vTextureCoord + green/filterArea.xy).g; gl_FragColor.b = texture2D(uSampler, vTextureCoord + blue/filterArea.xy).b; gl_FragColor.a = texture2D(uSampler, vTextureCoord).a; }