For my final project for CSC-473, I built upon my CPU based render by adding volume rendering and a bounding volume heirarchy. This allowed for scenes with fog, meshes filled with smoke, and god rays to be produced at faster speed, on top of the features of my base renderer.
Multiple primitive types are incorporated including spheres, planes, and triangles.
Various material classes are incorporated for matte, reflective, and refractive materials. Additionally, other materials were added specifically to support volume rendering. Textures are supported for sphere geometry.
An emissive material is supported for any geometry, and axis aligned rectangle area lights are supported via the partial POV-Ray parser. Additionally, a point light is used in order to support in scattering for volumes.
Volume rending is supported for arbitrary meshes. Input parameters include fog density, color, and scattering method. In scattering is computed at a fixed probability from a single point light in order to create god rays, as seen below.
Rays are scattered in parallel via OpenMP, allowing for faster renders by using multiple threads.
Render times are improved for complex geometry by importing meshes into a bounding volume hierarchy, reducing the number of collision computations required.
Support for raymarched Sierpinski tetrahedrons is added, as well as bases classes to expand upon for other fractal geometry for future studies.