#define rot(r) mat2(cos(r), sin(r), -sin(r), cos(r))

void mainImage(out vec4 o, vec2 u) {
    float i, d, a, t = iTime;
    vec2  r = iResolution.xy;
          u = (u - r / 2.) / r.y;
          o *= d;

    while(i++ < 180.) {
        vec3 p = vec3(u * a, a - 60.);

        p.xy *= rot(t * .27);
        p.xz *= rot(t * .24);

        float s = 1., j;
        while(j++ < 3.)
            s *= .6,
            p = abs(p + p),
            p = (p.x < p.y ? p.zxy : p.zyx )
                - (vec3(//
                    cos(t *  .1) * 2. + 3.,
                    cos(t * 1.8) * .75 + .75,
                    sin(t *  .1) * 2. + 3.
                )) * 8.;

        d = abs(length(p.xz) / 140. - .06) + 8e-5;
        a += d / s;

        o += ( clamp(
                  abs(
                      mod(vec4(6, 4, 2, 0) + p.z * .5, 6.) - 3.
                  ) - 1.,
                  0., .25
                ) * .002 + .005
              ) / exp(d);
    }
    o *= o * o;
}
