precision highp float; uniform vec2 m; uniform vec2 r; vec3 hsv(float h, float s, float v){ vec4 t = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(vec3(h) + t.xyz) * 6.0 - vec3(t.w)); return v * mix(vec3(t.x), clamp(p - vec3(t.x), 0.0, 1.0), s); } void main(void) { vec2 uv = gl_FragCoord.xy/r.xy; uv += .1 * sin(uv.yx * 10. + m / r * 10.); gl_FragColor=vec4(hsv(uv.x, uv.y, 1.), 1.); }