runnable fragment
code snippet
precision mediump float;
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = (gl_FragCoord.xy - 0.5 * resolution.xy) / min(resolution.x, resolution.y);
vec2 a = uv + 0.18 * vec2(sin(time * 0.5), cos(time * 0.4));
vec2 b = uv - 0.16 * vec2(cos(time * 0.35), sin(time * 0.55));
float r1 = sin(length(a) * 72.0 - time * 3.0);
float r2 = sin(length(b) * 69.0 + time * 2.4);
float m = smoothstep(0.0, 0.08, abs(r1 - r2));
vec3 color = mix(vec3(0.98,0.2,0.55), vec3(0.1,0.9,1.0), m);
color *= 0.55 + 0.45 * sin(length(uv) * 8.0 - time);
gl_FragColor = vec4(color, 1.0);
}