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