

////////////////////////////////////////////////////////////////////////////////////////////////////////////

 float dots = 40.0;
 float size = 0.3;
 float blur = 0.3;

void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
  vec2 vUv = fragCoord / iResolution.xy;
  float dotSize = 1.0/dots;
  vec2 samplePos = vUv - mod(vUv, dotSize) + 0.5 * dotSize;
  float distanceFromSamplePoint = distance(samplePos, vUv);
  vec4 col = texture2D(iChannel[0], samplePos);
  fragColor = mix(col, vec4(0.0), smoothstep(dotSize * size, dotSize *(size + blur), distanceFromSamplePoint));
} 

////////////////////////////////////////////////////////////////////////////////////////////////////////////

void main() {
    mainImage(gl_FragColor, gl_FragCoord.xy);
}
