For our final year of university we are required to complete a dissertation, focusing on a particular topic related to games technology. I decided to peruse mine in advanced rendering algorithms which has lead me to focus on creating a Bi-Directional Path Tracing renderer.
This is a renderer which implements the Bi-Directional Path Tracing algorithm, a rendering approached first proposed in the early 1990s by Eric Lafortune and is now available in many advanced renderers such as Renderman. This technique is classed as a global illumination technique due to its simulation of both direct and indirect light transport within a scene. The result of such an algorithm is that its capable of rendering very high quality images.
BDPT is an extension of path-tracing, a Monte-Carlo raytracing algorithm which utilises Monte Carlo integration in order to determine the radiance of all surfaces in a scene, accounting for direct and indirect light. Path-tracing does this by taking an average of a sum of surface samples. These samples in turn are weighted using a probability density function that matches the properties of the surface, reducing the variance on the image.
Whilst capable of amazing images, as the rays are traced from the camera it results in potential sources of variance, namely with caustic objects which results in the presence of noise, requiring more samples to reduce.
BDPT differs by tracing from both the eye and the light source, in essence combining elements of light tracing with path-tracing. The result is a lower convergence rate as well as better simulation of caustics, resulting in images which very closely replicate the real environment.
This rendering system is an implementation of this algorithm along with path and light tracing. In the system one of these three techniques can be selected allowing an image of the said scene to be produced.
I am quite satisfied with this project. I was able to implement the algorithm successfully but not perfectly. I hope to find time to make some important corrections in order to improve the quality of the images.
In the long term I intend on adding the following features:
Date: Apr 11, 2019
Author: Nathan Butt
Categories: University DissertationRenderingComputer Graphics
Tagged: Rendering, Low-level Systems, Global Illumination, C/C++, Bi Directional PathTracing
Client: University Project
Website: N/A