Participating Media Ray Tracer

Ryan Zesch

Overview

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.

Features

Geometry

Multiple primitive types are incorporated including spheres, planes, and triangles.

Materials

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.

Lighting

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.

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.

Parallelization

Rays are scattered in parallel via OpenMP, allowing for faster renders by using multiple threads.

Acceleration Structures

Render times are improved for complex geometry by importing meshes into a bounding volume hierarchy, reducing the number of collision computations required.

Raymarched Fractals

Support for raymarched Sierpinski tetrahedrons is added, as well as bases classes to expand upon for other fractal geometry for future studies.