LINSHEN XIAO
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.
![]() | ![]() |
---|---|
![]() | ![]() |