OpenGL-based application for exploring fractals in a customizable way. Knowing GLSL is helpful for customizing it, but not for just playing with it! It helps to know a little bit about the relationship between the Mandelbrot and Julia sets.
This application comes with three fractals built-in:
- Mandelbrot Fractal
- Burning Ship Fractal
- Simonbrot Fractal
These are located in the "Fractals" folder. To make your own fractal, just make a new .glsl file in that directory, make sure it has the same form as the other files there, and add its name to "config.txt" so the program will recognize it.
HOW TO USE THE APPLICATION: MOVING THE VIEW AROUND
- Click-and-drag the view around with the left mouse button
- Scroll up/down to zoom the view in/out
- Press H to move the camera back to the default position (good for if you get lost)
CONTROLLING THE PLOTTING PARAMETERS
- Shift+Scroll to change the number of iterations
- Ctrl+Shift+Scroll to double/half the current number of iterations (You'll want to try this out when you want a lot of iterations)
- Press C to switch to the next colorscheme
- Press Shift+C to switch to the previous colorscheme
- Prees S to toggle between escape-time coloring and final-state coloring (It's hard to explain what this means, just try it out)
- Press O to toggle orbit tracing
- Shift+RightClick to control the starting position (for Julia fractals)
CONTROLLING THE FRACTAL PARAMETERS
- Right-click to control the C-value (used in Julia fractals)
- Press F to switch to the next fractal
- Press Shift+F to switch to the next fractal
- Press D to change between C-Map (Mandelbrot-like) and Julia fractal modes
SAVING THE COOL THINGS YOU FIND
- Hold Ctrl and press any letter key to save the current viewing state under that key.
- Hold Ctrl+Shift and press that letter again at a later time to instantly return back to that viewing state. Try it out!
- Press P to print the current viewing state details to the console window.
- NOTE: Key-Saved viewing states are all discarded when the program closes. So if you really really don't wanna forget the fractal you're currently looking at, print the viewing state details and copy and paste them somewhere. There is currently no way to save them from inside the program.
MAKING YOUR OWN FRACTALS
- Each fractal is generated by a .glsl file in the "Fractals" folder.
- To make your own fractal, copy one of the ones there, rename it as you wish, and put its name in the "config.txt" file.
- Each fractal must have two functions defined in it: -f_iterFunc - the function iterated to generate the fractal -f_escapeTestFunc - the function used to test if a point has escaped
- Both of these functions are written in GLSL (a C-like language for programming OpenGL shaders)
- A few functions for operating on complex numbers are supplied in the file GlobalSource/Common_header.glsl. These functions are available for use in the fractal definition files.
- If there are any errors in one of the fractal .glsl files, a compilation error will be shown in the console upon program startup.
That's everything I can think of right now. Enjoy the program!
The fractals are defined in the Shaders folder. The first four of these are classic fractals, being the Mandelbrot, Mandelbrot-Julia, Burning Ship, and Burning Ship-Julia fractals in order. The fifth one (MiscShader1.frag) is meant for some user experimentation--since shaders are compiled upon program startup, you can modify the GLSL shader code to make your own fractals! It's fun to experiment with this.
Things I still haven't added: -An easier way to make your own fractals without needing to know too much about GLSL -A way for users to make their own colorschemes (instead of just having to use the ones I made) -An native way for users to take screencaps or larger-than-screen captures
Please feel free to request features if there's something you want to see!