Raytracer

This raytracer was made during a graphics programming course in IGAD v1. It has support for basic geometric shapes such as planes, cubes, spheres and triangles. Other features of this raytracer include:

  • point lights
  • area lights
  • phong shading
  • materials, such as glass
  • refractions and reflections (up to a maximum depth)
  • textures
  • SIMD variation
  • Multithreaded
  • Depth of Field
  • Fast render mode
  • averaging frames

Most of these features could be considered basic requirements for a raytracer. The multithreading and SIMD features are things I implemented of my own accord to speed up the raytracing process.

A job manager manages the threads and hand out jobs, of which each job renders a small chunk of the image.

The fast render mode turns of intensive processes such as reflections, allowing to move through the scene smoother. When the camera is positioned the way I want it to it can be turned off, It will then clear the image buffer and restart rendering.

Another adaption to speed up rendering is averaging frames. Instead of taking tons of reflection and refraction rays, only a few are taken each frame and averaged with the previous frames.