My first reaction when I see a beautiful image is to ask myself if and how can I do something similar. Fractals were no exception for me: I tried some existing softwares like Mandelbulb 3D and Ultrafractal, but none of them really satisfied me. I felt somehow limited, and as a programmer I prefer to build myself the tools I need. Fractals are a huge world and, to explore it deeply, a flexible software is needed. Speaking with the people of fractalforums.com I discovered that many artists are also waiting for more powerful tools, so, in collaboration with a friend who will write the GUI, I decided to start my own project: SYN.
SYN is an image synthesizer: a software that allows definition and real-time exploration of procedural shapes. It will also include a raytracer for the final rendering of images and animations. To ensure a high level of customization the rendering pipeline will be programmable at different stages:
- Sampling stage: defines how rays are shot from a pixel. This allows effects like depth-of-field and motion blur.
- Shape definition stage: the engine accepts scripts that defines either a distance estimator or a brute force intersection function.
- Shading stage: defines the color of the light on an intersection.
- Post processing stage: once the raytracing process finishes it’s possible to apply custom effects on the final image.
For those people who don’t like writing code, SYN will allow scripts to be loaded in a GUI where parameters can be modified with visual controls. In the image below you can see an early storyboarding draft showing how the user interface is going to look like.
Since raytracing requires heavy calculations, SYN will use all available resources through OpenCL. The rendering process will be distributed over both CPU and GPU for real-time previews. For the final renderings the engine will be able to distribute rendering tasks over multiple computers.
In this post I tried to give a general idea about what is SYN going to be. We will spend the next weeks programming, I hope to be able to publish a demo soon. In the meantime feel free to give suggestions and to express your opinion about this project.