void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = fragCoord/iResolution.xy - vec2(0.5,0.5);
    uv = fragCoord/min(iResolution.y,iResolution.x);
    uv = uv - vec2(iResolution.x/iResolution.y/2.,iResolution.x/iResolution.y/4.);
    float d = 1.-(uv.x*uv.x + uv.y*uv.y);
    float d2 = .3*(1.5+sin(d*204.));
    d = sin(d*d*3.*.8*(2.+sin(iTime*.5)));
    

    
    float a = 1.-abs(dot(uv,vec2(1.,.55)));
    //float a = 1.-abs(dot(uv,vec2(cos(iTime),cos(.55*iTime))));
    a=a*a*a*a*a;
    float b = 1.-abs(dot(uv,vec2(1.,-.55)));
    b=b*b*b*b*b;
    float c = 1.-abs(dot(uv,vec2(0.,1.)));
    c=c*c*c*c*c;
    
    d2 = d2*pow((a+b+c)*d,6.);
    // Output to screen
    fragColor = vec4((((((a+b+c)*d)/3.))-d2*.2));
    fragColor = vec4(
    
    .6*(1.1+sin(mod(-iTime+(
    round(min((a+b+c)*d,1.))-d2-(sin(pow(pow((a+b+c),2.5)*d,4.)))
    ),1.6))),
    
    (a+b+c)/2.*sin(pow(sin(iTime/2.),d2)),
    
    1.-d*a*b*c,
    
    0
    );
    //fragColor = vec4(d2*pow((a+b+c)*d,3.));
    
}
