University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 3
- Fengkai Wu
- Tested on: Windows 7, i7-6700 @ 3.40GHz 16GB, Quadro K620 4095MB (Moore 100C Lab)
Features:
-
Shading with BSDF evaluation
-
Path termination using stream compaction
-
Toggeable option to cache first bounce and sort path segments by materials
-
Refraction with frenesel effects using Shilick's approximation
-
Stochastic antialiasing
By adding a uniform random value to the ray, the aliasing effect is removed. As you can see from the picture, the edges of the cube and the wall is smoothened.
The sorting is on ray/path arrays with respect to their materials. It is performed right after computing intersections. However it increase the running time primialy due to this addition operation. Making ray/paths contiguous in memory sorting by material does seem to be a good choice. The reason might due to that each path is independent and the kernel does not access each pixel by material type.
The outcome of the first iteration of the pathtracing is cached in device and reused for the subsequent bouncing. The graph above shows that it indeed increase performance but at a constant rate. Reloading the cache for reuse is also a high cost.