1000x1000 GIF Loop, 46 Frames
float random (vec2 st) { return fract(sin(dot(st.xy,vec2(12.9898,78.233)))43758.5453123); } void mainImage( out vec4 fragColor, in vec2 fragCoord ){ vec2 u = 10. * fragCoord / iResolution.y - .05; float rnd = random(floor(u)); u = fract(u); bool rev = iMouse.z < 0.; float a = (rev ? 0. : 2.9) - sin(iTime * 4.0 + rnd5.5)*1.8; vec2 r = u + vec2(sin(a),cos(a)) * .3; float c = length(r - .5); float z = smoothstep(c, c *1.1 , .2); fragColor = vec4(rev ? z : 1. - z); }