DISCLAIMER: This project is subject to change as the deadline for the dissertation is at the end of May 2020. After the marking process will be finished the dissertation report, as well as the source code, will be publicly available and will be posted on this page.
This DXR based path tracer is a project meant to offer a sandbox for studying and experimenting with NVidia’s latest RTX technology as well as Microsoft’s DXR library. It is written in C++ and DirectX 12 and it features a voxel editor and an unbiased path tracer. The software is divided into 2 main workflows, edit and render.
The editing workflow is using a traditional rasterization rendering pipeline to offer speed at the cost of lacking advanced visual features. It has a simplistic Lambertian diffuse shading model and shadows traced in the pixel shader. The user can add, subtract, and edit voxels in order to create the desired scene. Each voxel has the following material setting: albedo color, roughness, metalness, and emission intensity. These parameters affect the final look when rendering.
The rendering workflow offers a progressive path tracer which is using DXR and the ray-tracing cores in the RTX supported graphics cards. The path tracer features an unbiased Monte Carlo integrator with importance sampling, next event estimation for direct lighting and Russian roulette path decision, and termination for variance reduction and faster convergence. The shading model is composed of a Lambertian BRDF with cosine importance sampling and the microfacet Cook-Torrance BRDF for specular reflections. It uses Trowbridge-Reitz for the normal distribution function. For the geometric shadowing, it uses Schlick approximation of the Smith equation for Beckmann distribution, and finally, the Fresnel term is computed using the Schlick’s approximation. This model offers a few advantages over the popular Phong model such as energy conservation, microgeometry, and follows a PBR workflow.