precision highp float; uniform float time; varying vec2 vUv; float mandelbrot(vec2 c) { vec2 z = c; float iterations = 100.0; for (float i = 0.0; i < iterations; i++) { z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c; if (length(z) > 2.0) { return i / iterations; } } return 0.0; } void main() { vec2 uv = vUv * vec2(3.0, 2.0) - vec2(2.0, 1.0); // Adjust the Mandelbrot set position and scale float mandel = mandelbrot(uv); // Color based on Mandelbrot iteration vec3 color = vec3(0.0); if (mandel > 0.0) { color = vec3(1.0 - smoothstep(0.0, 1.0, mandel)); } gl_FragColor = vec4(color, 1.0); }