#define f(z) cos(fract(z / 6.) * 6.28 - vec2(0, 33)) / 2.

/* 442 chars
    com a ajuda do @FabriceNeyret2 */

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

    while(i++ < 2e2) {
        a += d = abs(length(p.xz) / 4e2 - .003) + 8e-5;

        p.z = a - mod(-t, 6.);
        p.xy = ((u - r.xy / 2.) / r.y * a
                + f(p.z) - f(t)
                + cos(t - vec2(0, 33))
                * .2)  * mat2(cos(t / 2. + vec4(0, 11, 33, 0))
               );
        int j;
        while (j++ < 6)
            p = abs(p + p),
            p = (p.x < p.y ? p.zxy : p.zyx)
                - vec3(6, 5, 7);
        o += (
                clamp(
                   abs(
                       mod(
                           vec4(6, 4, 2, 0)
                           + p.z * 3., 6.
                       ) - 3.
                   ) - 1.,
                   0., 1.
                ) * .2 + .5
                ) * .01 / exp(3e2 * d);
    }
    o *= o;
}



/* 541 chars

#define t iTime * .5
#define color(z, d) o += (clamp(abs(mod(vec4(6,4,2,0) + z * 3., 6.) - 3.) - 1., 0., 1.) * .2 + .5) * .01 / exp(3e2 * d);
#define path(z) cos(fract(z / 6.) * 6.28 - vec2(0, 33)) / 2.
#define path2(z) path(z) + cos(vec2(z, z - 33.)) * .2

void mainImage(out vec4 o, vec2 u) {
    float i, d, a;
    vec2  r = iResolution.xy;
          o *= .0;

    vec3 p;
    while(i++ < 2e2) {

        a += d = abs(length(p.xz) / 4e2 - .003) + 8e-5;;

        p = vec3((u - r / 2.) / r.y * a, a);

        p.z -= mod(-t, 6.);
        p.xy += path(p.z) - path2(t);

        p.yx *= mat2(cos(t / 2. + vec4(0, 11, 33, 0)));

        float j;
        while (j++ < 6.) {
            p = abs(p + p);
            p = p.x < p.y ? p.zxy : p.zyx;
            p -= vec3(6, 5, 7);
        }

        color(p.z, d);
    }
    o *= o;
}


*/
