#define S(a,b) mix(1., a, sin(b)*.5+.5)
#define s (iTime*.34-1.)
#define n iResolution

void mainImage(out vec4 O, in vec2 F) {
    vec3 a,r,t = normalize(vec3((2.*F.xy-n.xy)/n.y*S(2.,s+3.14), 1.)); 
    float i, d, l=1.;
    while (i++ < 200. && d<150. && l>0.001) {
        a = r+d*t; a.z+=s;
        d += l = length(mod(a+2.,4.)-2.) - step(1.,abs(a.y))+.001;
    }
    O.rgb = mix(cos(S(2.3,s)*vec3(1.02,1.04,1.06)*d+s)*.5+.5, vec3(1.), d*.008);
}
