// // Fragment shader for drawing the Mandelbrot set // // Authors: Dave Baldwin, Steve Koren, Randi Rost // based on a shader by Michael Rivero // // Copyright (c) 2002-2005: 3Dlabs, Inc. // // See 3Dlabs-License.txt for license information // varying vec3 Position; varying float LightIntensity; uniform float MaxIterations; uniform float Zoom; uniform float Xcenter; uniform float Ycenter; uniform vec3 InnerColor; uniform vec3 OuterColor1; uniform vec3 OuterColor2; void main() { float real = Position.x * Zoom + Xcenter; float imag = Position.y * Zoom + Ycenter; float Creal = real; // Change this line... float Cimag = imag; // ...and this one to get a Julia set float r2 = 0.0; float iter; // for (iter = 0.0; iter < MaxIterations && r2 < 4.0; ++iter) for (iter = 0.0; iter < 12.0 && r2 < 4.0; ++iter) { float tempreal = real; real = (tempreal * tempreal) - (imag * imag) + Creal; imag = 2.0 * tempreal * imag + Cimag; r2 = (real * real) + (imag * imag); } // Base the color on the number of iterations vec3 color; if (r2 < 4.0) color = InnerColor; else color = mix(OuterColor1, OuterColor2, fract(iter * 0.05)); color *= LightIntensity; gl_FragColor = vec4(color, 1.0); }