precision mediump float; varying vec2 vTextureCoord; uniform vec4 dimensions; uniform vec2 pixelSize; uniform sampler2D uSampler; void main(void) { vec2 coord = vTextureCoord; vec2 size = dimensions.xy / pixelSize; vec2 color = floor( ( vTextureCoord * size ) ) / size + pixelSize/dimensions.xy * 0.5; gl_FragColor = texture2D(uSampler, color); }