#define rainbow(u) .5 + .5 * cos( atan(u.x,u.y) + 6.3 * iTime + vec3(0,23,21) )

void mainImage( out vec4 O, in vec2 U )
{
    U -= .5* iResolution.xy;
    O = vec4(rainbow(U),1.0);
}

// original version
/*
#define rainbow(a) .5 + .5 * cos(6.283 * (a + vec3(0.,.33,.66)))

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
	vec2 uv = (2. * fragCoord - iResolution.xy) / iResolution.y;
    uv.x+=length(uv);

    fragColor = vec4(rainbow(fract(atan(uv.x, uv.y) / 3.1415 + iTime)),1.0);
}
*/
