#define TAU 6.283185307179586

/*
// pastel
#define A vec3(0xd6,0xe6,0xff)/255.
#define B vec3(0xd7,0xf9,0xf8)/255.
#define C vec3(0xff,0xff,0xea)/255.
#define D vec3(0xff,0xf0,0xd4)/255.
#define E vec3(0xe5,0xd4,0xef)/255.
*/

/*
// Sunset
#define A vec3(0x00,0x3f,0x5c)/255.
#define B vec3(0x58,0x50,0x8d)/255.
#define C vec3(0xbc,0x50,0x90)/255.
#define D vec3(0xff,0x63,0x61)/255.
#define E vec3(0xff,0xa6,0x00)/255.
*/
// Cotton Candy
#define A vec3(0xff,0x59,0x5e)/255.
#define B vec3(0xff,0xca,0x3a)/255.
#define C vec3(0x8a,0xc9,0x26)/255.
#define D vec3(0x19,0x82,0xc4)/255.
#define E vec3(0x6a,0x4c,0x93)/255.



#define rA .4 * kR
#define rB .3 * kR
#define rC .35 * kR
#define rD .45 * kR
#define rE .25 * kR

vec2 rot(float alpha, vec2 p) {
    float c = cos(alpha);
    float s = sin(alpha);
    return vec2(c*p.x-s*p.y,s*p.x+c*p.y);
}

vec2 dihedral(in vec2 _uv, float n) {
    //_uv = rot(+iTime/5.,_uv);
    float alpha0 = (atan(_uv.y/_uv.x) / TAU + step(0.,_uv.x) * .5) * n;
    float falpha = abs(fract(alpha0)-.5) * TAU;
    float l = length(_uv);
    return l*vec2(cos(falpha),sin(falpha));
}

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

    uv = dihedral(uv,iTime/5.);//(iTime/5.))
    

    vec2 cA = vec2(.3*sin(iTime * 1.5),.3);
    vec2 cB = vec2(.1+.1*sin(iTime * 1.2),-.4-.3*sin(iTime * 1.3));
    vec2 cC = vec2(-.1-.5*sin(iTime * .4),.4*sin(iTime * 1.4));
    vec2 cD = vec2(.2-.5*cos(iTime * .3),.4*cos(iTime * 2.4));
    vec2 cE = vec2(.7-.5*sin(iTime * .7),.7*cos(iTime * 1.9));
    
    
    float kR = .1 + 3.*abs(sin(iTime));

    vec3 col = vec3(0);
    col = A * smoothstep(rA,0.,length(cA-uv));
    col = max(col,B * smoothstep(rB,0.,length(cB-uv)));
    col = max(col,C * smoothstep(rC,0.,length(cC-uv)));
    col = max(col,D * smoothstep(rD,0.,length(cD-uv)));
    col = max(col,E * smoothstep(rD,0.,length(cE-uv)));
    
    float circles = cos(length(uv)*sin(iTime/4.)*12.);
    col *= (1.2+circles)/1.2;
    
    fragColor = vec4(col,.2);
}
