Category Archives: Screenshots

SYN: Reboot

It has been more than one year since I last wrote here. My Bachelor thesis kept me very busy, but nevertheless I have some big updates.

While working on the project I learned a lot of new stuffs and I developed new ideas. Unfortunately they hardly integrate with the existing code, thus I decided that it is time to restart the project from scratch, designing it with flexibility and extensibility in mind.

Since the project is very ambitious I decided to make it open source and to search for collaborations. So if you are interested in working on it leave a comment and I will contact you! Here you can find the public repository of the project.

Let’s conclude with some images: Mandelbox viewMandelbox viewBoth images are views of the Mandelbox set with naïve coloring algorithm. Compared to existing fractal rendering softwares these images still look very simple and there is not much space  for customizations yet, but the road is still long. I am confident that the new version will bring big improvements.

 

Advertisements

SYN: First images

“Do you know that feeling of satisfaction when your program runs immediately without errors?”
“No…”
“Me neither.”

Even if not at the first run, seeing your own program working is a big satisfaction. Today after several weeks of programming I finally got the skeleton of SYN working. Here is one of the first images I was able to render:

Power 8 Mandelbulb

It’s a simple Power 8 Mandelbulb raytraced with one directional light. The image itself is not impressive, but there are a couple of properties that make me consider it special:

The rendering time: The image was rendered at 16k x 10k pixels (160MP) in 77.6 seconds using all available resources on my PC: CPU Intel i7 2600k, GPUs NVIDIA GTX680 and GTX560Ti. I have no real comparison with other softwares at the moment and the code may not be optimized, but I believe this is a good result.

The flexibility of the rendering system: For casual users who just want to play with fractals, creating an image like this one  will be as simple as selecting the formula from a list, playing with the options and pressing Render. For advanced users who want to push their creativity to the limits or want to experiment with new formulas, SYN will be a huge playground. Do you remember the pipeline described in the first post? It’s designed to offer to the user the greatest customizability. The pieces of code that can be inserted at the different stages are now called bricks, since they can be assembled to build your world like LEGO bricks. Here is an example shader brick:

<SYN type="shader"
     name="Matte"
     author="Mattia Gollub"
     version="0100">

   <requires>
      <float3 name="direction"/>
      <float3 name="intersection"/>
      <float3 name="normal"/>
   </requires>

   <returns>
      <float4 name="color"/>
   </returns>

   <params>
      <float4 name="diffuse" default="0.0, 0.0, 1.0, 0.0" min="0.0, 0.0, 0.0, 0.0" display="Diffuse"/>
   </params>

   <code>
      <!--Shader code here-->
   </code>
</SYN>

Objects are defined with the same XML syntax. The code must be written in OpenCL C Language (which is very similar to C). SYN will automatically check the bricks for compatibility, build visual controls for the parameters, and assemble the code fragments in a complete OpenCL program.

It’s all for today. In the next weeks I’ll fix some bug and improve the work balance between multiple devices. I will also try to add support to multiple objects in the same scene.

Until next time,
Mattia.