// Lame 1k shadertoy compofiller
// By Fell ov thee RiFT
// Sundown2013 baby - mad love!

#define f float
#define r return
#define v vec3
#define N normalize

const f m=.00001,F=100.,ms=128.;
f t=iGlobalTime;

f s(v p,f g,f b){
       p*=g;
       v i=floor(p),c;
       vec4 a=dot(i,v(1,57,21))+vec4(0,57,21,78);
       c=-cos((p-i)*3.141)/2.+.5;
       a=mix(sin(cos(a)*a),sin(cos(1.+a)*(1.+a)),c.x);
       a.xy=mix(a.xz,a.yw,c.y);
       r mix(a.x,a.y,c.z)*b;
}

v P(v p,v c){
       r mod(p,c)-c/2.;
}

f h(v p){
       v p2=P(p,v(20.));
       r length(p2)-(5.+5.*sin(t/2.))+5.*s(p,.5,1.);
}

v sk(vec2 u){
       r mix(v(1.,.607,0),v(.349,.922,.882),u.y);
}

void main(){
       vec2 q=-1.+2.*gl_FragCoord.xy/iResolution.xy;
       q.x*=iResolution.x/iResolution.y;

       v cp=v(.1*sin(t),.5,6.*t),
       w=N(-cp),u=N(cross(v(cos(t/2.),sin(t/2.),0),w)),
       rd=N(q.x*u+q.y*N(cross(w,u))+w);
       v p=cp,c;
       f d,E=0.,S=1.;
       for(f k=0.;k<ms;k++){
               d=h(p)-m;
               if(d<m)break;
               p+=N(rd)*d/4.;
               E=length(p-cp);
               if(E>F)break;
       }
       if(d<.8){
               d=0.;
               for(f i=0.;i<9.;i++)
                       d+=h(p+v(cos(i),sin(i),-cos(i))/4.);
               c=mix(clamp(min(2.,d*d*h(p+v(.5,.5,0)*.1)*16.)*v(.5,.5,.44)*S,v(0),v(1)),sk(q),pow(E/F,2.));
       }else
               c=sk(q);

       if(t<5.)c*=t/5.;
       gl_FragColor=vec4(c,abs(2./(E-F/2.)));
}