WebGL Lab.
#ifdef GL_ES precision mediump float; #endif uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_time; float circle(in vec2 _st,in float _radius){ vec2 dist=_st-vec2(.5); return 1.-smoothstep(_radius-(_radius*.01), _radius+(_radius*.01), dot(dist,dist)*25.*(1.-.5*abs(sin(u_time)))); } void main(){ vec2 st=gl_FragCoord.xy/u_resolution.xy; st.x*=u_resolution.x/u_resolution.y; vec3 color=vec3(0.); float r=step(.7,sin(10.*u_time+10.*(sin(st.y)/sin(st.x)))); color=circle(st,r)*vec3(st.yxx); gl_FragColor=vec4(color,1.); }