void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = fragCoord/iResolution.xy;
    float x = uv.s, y = uv.t, time = iTime;

    vec3 color = vec3(0.);
    x -= 0.5;
    y -= 0.5;
    x *= iResolution.x / iResolution.y ;
    x *= 2.0;
    y *= 2.0;
    
    x = cos(x * 1.2);
   
    float r = sqrt(x*x + y*y);
    float t = sin(atan(x, y));
    float th = 0.17;
    th = pow(0.17, sin(pow(r, t * cos(y*7.0) * sin(x*6.0))));
    float a = 1.0 * (sin(time + r * 1.0) + 0.0) * t;
    a += 0.7 * cos(time + 0.4712 + x);
    a += 0.3 * sin(time + 0.4 + y);
    color.r = abs(mod(r + a, th) / th - 0.5) * 2.0;
    color.b = abs(mod(r + a, th) / th - 0.2) * 2.0;
    color.g = abs(mod(r + a, th) / th + a * 1.068) * 1.152;

    fragColor = vec4(color,1.0);
}
