top of page

CUDA Path Tracer

In this project, I implemented a CUDA-based path tracer capable of rendering globally-illuminated images very quickly. Path tracing is a computer graphics Monte Carlo method of rendering images of three-dimensional scenes such that the global illumination is faithful to reality. Basically, for every pixel of the image, we shoot a ray from the camera, find an intersection, and return a color based on the material, position of the objects & light source and so on after a few depths. As this process for every pixel is relatively similar, we can use GPU to run the programs simultaneously to make the path tracer faster.

​

Features

  • Ideal Diffuse surfaces

  • Perfectly specular-reflective surfaces

  • Stream Compaction

    • By using stream compaction, we can remove the paths that have terminated;

  • Material sort

    • Sort the rays/path segments so that rays/paths interacting with the same material are contiguous in memory before shading;

  • First bounce intersection cache

    • Cache the first bounce intersections for re-use across all subsequent iterations;

  • Refraction with Frensel effects

    • Refraction (e.g. glass/water) with Frensel effects using Schlick's approximation or more accurate methods;

  • Physically-based depth-of-field

    • Physically-based depth-of-field by jittering rays within an aperture;

  • Stochastic Sampled Antialiasing

    • Make the image smoother by add rays for sub-pixel sampling;

  • Motion blur

    • Defining object motion, and motion blur by averaging samples at different times of iterations;

​

To see more, please check https://github.com/githublsx/Project3-CUDA-Path-Tracer.

cornell3.2017-09-29_19-28-18z.5000samp
cornell_prob.2017-10-01_17-17-39z.5000samp
cornell2.2017-10-01_17-34-12z.5000samp
cornell2.2017-10-01_23-35-37z.5000samp
bottom of page