void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = fragCoord/iResolution.y-.5; float zoom = sin(iTime0.1); uv=zoom; vec2 a = vec2(uv); vec2 b = vec2(uv) - vec2(sin(iTime*.1)0.5,cos(-iTime.1)*0.3); float ang = iTime -0.3 + 4. * atan(b.x, b.y); float w = .01 + sin(ang * .5) * .01 ; b.x += sin(ang) * w; b.y += cos(ang) * w; float e = smoothstep( .5,.497, length(b)); float d = smoothstep(.1, .9, length(a)) ; vec3 final = mix(vec3(1),vec3(.0,.9,1.),e) * mix(vec3(1.,0.,0.), vec3(1),d); final.b=1.1; fragColor = vec4(final, 1); }