void mainImage( out vec4 fragColor, in vec2 fragCoord) { vec2 uv = (fragCoord-0.5*iResolution.xy)/iResolution.y; float size = 0.25*(1.0+0.1*sin(2.0*iTime)); float mask = step(abs(uv.x)+abs(uv.y), size) * step(uv.y, 0.5*size); float mask2 = step(abs(uv.x), size) * step(-uv.y, 0.0); mask2 *= step(2.0*size, 1.25*abs(uv.x)+abs(uv.y-2.0*size)); mask = clamp(mask + mask2,0.0, 1.0); vec3[] c = vec3[](vec3(1.0, 1.0, 1.0), vec3(.961, .663, .722), vec3(.357, .808, .98)); vec3 col = c[int(abs(2.5*uv.x/size)+0.5)]*mask; col += exp(-2.0*length(uv)/size)*(1.0-mask)*0.5*(c[1]+c[2]); fragColor = vec4(col,1.0); }