Niels P. Wouters

Graphics Programmer


Path Tracing

Personal Project


As part of the specialization phase of my education I developed a GPU path tracing application for the PS4™. The main goal of this project was to find out whether the hardware was capable of rendering a 3D scene with this particular technique with reasonable performance.

The application consists of a simple rasterizer, which can be used to verify resources and easily move the camera through the scene, as well as the path tracer. The user can switch between both techniques at any time.

A common approach to speed up a ray tracing application is to convert the geometry data in a more traversible form. For this project I decided to convert the scene to a kD-tree. This type of acceleration structure, compared to other commonly used structures, tends to give better runtime performance at the cost of longer initialization.

Overall I am very pleased with the results of this project. The quality of the final images is very nice and sometimes even hard to distinguish from reality. The performance of the application was a slight disappointment. Considering that the implementation is still far from optimal, the path tracer was still expected to perform better and resolve faster.

Feature list

  • Automated asset pipeline
    • Offline shader compilation
    • kD-tree conversion
    • Texture atlass creation
    • Texture conversion to .GNF format
  • Simple rasterizer
  • Path tracer
    • Wavefront path tracing
    • Stackless kD-tree traversal
    • Reflective materials
    • Refractive materials
    • Global illumination
    • Soft shadows

Technical

  • C++
  • GNM
  • PSSL