void mainImage(out vec4 fragColor, in vec2 fragCoord) {
    // Normalized pixel coordinates (from 0 to 1)
  vec2 aspect = iResolution.xy / iResolution.y;
  vec2 originUv = fragCoord / iResolution.xy;
  vec2 uv = 2. * (originUv - 0.5) * aspect;

  vec2 sum = vec2(0., 0.); // r, g

  float modTime = iTime - (60. * floor(iTime / 60.));
  float time = 50. * abs(fract(modTime / 30.) - .5);

  for(int i = 10; i < 13; i++) {
    vec2 pos = uv * 40. + vec2(sin(time / 3. * float(i) / 2.), cos(time / 3. * float(i) / 3.)) * 10. * (1.0 + float(i) / 10.);
    float dist = 1. / length(pos) * 6.;
    sum += dist;
  }
  sum *= 0.5;
  // sum.x = clamp(sum.x, 0., 1.);
  // sum.x = step(.5, sum.x);
  // fragColor = vec4(.1, sum.x, sum.x, sum.x);
  fragColor = sum.x > 0.5 ? jsvTexture2D(iChannel0, originUv) : vec4(0.);
}