// http://www.pouet.net/prod.php?which=57245 #define t iTime #define r vec2(max(iResolution.x, iResolution.y)) void mainImage( out vec4 fragColor, in vec2 fragCoord ){ vec3 c; float l,z=t; for(int i=0;i<3;i++) { vec2 uv,p=fragCoord.xy/r; uv=p; p-=vec2(.5, 0.05); p.x*=r.x/r.y; z+=.07; l=length(p); uv+=p/l*(sin(z)+1.)*abs(sin(l*9.-z*2.)); c[i]=.01/length(abs(mod(uv,1.)-.5)); } fragColor=vec4(c/l,t); } // https://www.shadertoy.com/view/XsXXDn