WebGL Mandelbrot
Mandelbrot using shaders
This is a Mandelbrot zoomer done using shaders. See below for code.
The shader code
Vertex shader
attribute vec3 position;
void main(void) {
gl_Position = vec4(position, 1.0);
}
Fragment shader
precision mediump float;
uniform float width;
uniform float zoom;
void main(void) {
float zx = 0.0;
float zy = 0.0;
float x;
float y;
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
for(int i = 0; i < 50; i++) {
x = zx * zx - zy * zy;
y = zx * zy;
if(zx * zx + zy * zy > 4.0) {
gl_FragColor.r = sin(float(i) / 10.0);
gl_FragColor.b = cos(float(i) / 10.0);
break;
}
zx = x + gl_FragCoord.x / width - zoom;
zy = 2.0 * y + gl_FragCoord.y / width;
}
}