#define B (1.-fract(t*2.))
#define R(p,a,t) mix(a*dot(p,a),p,cos(t))+sin(t)*cross(p,a)
#define H(h) (cos((h)*6.3+vec3(0,23,21))*.5+.5)
void mainImage(out vec4 O, vec2 C)
{
    vec3 p,r=iResolution,c=vec3(0),
    d=normalize(vec3((C-.5*r.xy)/r.y,1));
    float i=0.,s,e,g=0.,t=iTime;
    for(;i++<99.;){
        p=d*g;
        p.z-=-t*2.5;
        p=R(p,vec3(.577),clamp(sin(t/4.)*6.,-.5,.5)+.7);
        p=asin(sin(p/2.))*3.;
        vec4 q=vec4(p,.5);
        s=2.;
        for(int i=0;i++<8;){
            q=abs(q);
            q=q.x<q.y?q.zwxy:q.zwyx;
            s*=e=9./min(dot(q,q),6.);
            q=q*e-vec4(5.,2.+B,4.+B,8.);
        }
        g+=e=abs(length(q.zw)/s)+.001;
        c+=mix(vec3(1),H(log(s)*.2),.8)*2e-4/e;
    }
    c*=c*c;
    O=vec4(c,1);
}
