WebGL Lab.
// title: SinCurve2 #ifdef GL_ES precision mediump float; #endif #define PI 3.1415926538 uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_time; void main(){ vec3 color=vec3(0.); const float count=8.; vec2 g=gl_FragCoord.xy/u_resolution.xy; for(float i=0.;i<count;i++){ float ip=i/count; float siny=.5+.25*sin(2.*PI*g.x+i/PI+u_time+.2*i)*ip*sin(u_time*i/5.); float curve=siny-g.y; if(curve>=0.&&curve<.05*ip){ color+=.5*vec3(g.xy,g.x*g.y+ip*length(g)); } } gl_FragColor=vec4(color,1.); }