

////////////////////////////////////////////////////////////////////////////////////////////////////////////

void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
  vec2 p = fragCoord / iResolution.xy;
  
  vec2 q;
  float angle = - PI * 0.5;
  q.x =   cos(angle)*p.x + sin(angle)*p.y;
  q.y = - sin(angle)*p.x + cos(angle)*p.y;
  q = q - vec2(-1.0, 0.0);
  
  vec2 rp = (q*2. - 1.);
  float a = atan(rp.y, rp.x);
  float pa = ((1.0 - iProgress)*PI*2.5-PI*1.25);
  
  vec4 fromc = texture2D(iChannel[0], p);
  vec4 toc = texture2D(iChannel[1], p);
  
  if(a>pa) {
    fragColor = mix(fromc, toc, smoothstep(0., 1., (a-pa)));
  } else {
    fragColor = fromc;
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

void main() {
    mainImage(gl_FragColor, gl_FragCoord.xy);
}
