void mainImage(out vec4 fragColor, in vec2 fragCoord) {
    float t = 0.0, v = 0.0;
    vec2 uv = (fragCoord / iResolution.xy) * 2.0 - 2.;
    float time = (iTime-6.0)*50.0;
    vec3 col = vec3(-0.1);
    vec3 init = vec3(sin(time * .0032)*.3, .35 - tan(time * .005)*.3, time * 0.0002);
    for (int r = 0; r < 80; r++)
    {
        vec3 p = init + t * vec3(uv, 0.00005);
        p.z = exp(abs(p.z)) - sin(t);
        for (int i=0; i < 5; i++) {
            p = sin(abs(p * 2.04)) / dot(p, p) - 0.7 - t;
        }
        v += pow(dot(p, p), .8) * 0.03;
        col +=  fract(vec3(v * 0.2+0.4, 12.-t*2., 1.9 + v * 4.) * (v) * 0.00006);
        t += .02;
    }
    fragColor = vec4(clamp(col, .0, 1.0), 1.0);
}
