Mandelbrot set not displaying properly
- by brainydexter
I am trying to render mandelbrot set using glsl. I'm not sure why its not rendering the correct shape. Does the mandelbrot calculation require values to be within a range for the (x,y) [ or (real, imag) ] ?
Here is a screenshot:
I render a quad as follows:
float w2 = 6;
float h2 = 5;
glBegin(GL_QUADS);
glVertex3f(-w2, h2, 0.0);
glVertex3f(-w2, -h2, 0.0);
glVertex3f(w2, -h2, 0.0);
glVertex3f(w2, h2, 0.0);
glEnd();
My vertex shader:
varying vec3 Position;
void main(void)
{
Position = gl_Vertex.xyz;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
My fragment shader (where all the meat is):
uniform float MAXITERATIONS;
varying vec3 Position;
void main (void)
{
float zoom = 1.0;
float centerX = 0.0;
float centerY = 0.0;
float real = Position.x * zoom + centerX;
float imag = Position.y * zoom + centerY;
float r2 = 0.0;
float iter;
for(iter = 0.0; iter < MAXITERATIONS && r2 < 4.0; ++iter)
{
float tempreal = real;
real = (tempreal * tempreal) + (imag * imag);
imag = 2.0 * real * imag;
r2 = (real * real) + (imag * imag);
}
vec3 color;
if(r2 < 4.0)
color = vec3(1.0);
else
color = vec3( iter / MAXITERATIONS );
gl_FragColor = vec4(color, 1.0);
}