University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 4
- (Charles) Zixin Zhang
- Tested on: Windows 11, 11th Core i7, 3060 Laptop GPU
Figure 1: Zoomed-in "So many balls" Scene:
Denoised:
Noised:
Figure 2: "So many balls" Scene:
Denoised:
Noised:
Figure 3: A Simple Cornell Box:
This denoiser is achieved by implementing the paper "Edge-Avoiding A-Trous Wavelet Transform for fast Global Illumination Filtering," by Dammertz, Sewtz, Hanika, and Lensch.
In my implementation, denoising is performed during the last iteration. We perform 10 iterations on the ray traced images and the 11th iteration is the denoising step.
How much time does denoising take in ms? | |
---|---|
Figure 1 | 52 |
Figure 2 | 43 |
Figure 3 | 44 |
Since we apply denoising once, this technique is very efficient at eliminating noise in the scene.
How many iterations do ray traced images need to achieve a smooth result? | |
---|---|
Figure 1 | ~1000 |
Figure 2 | ~5000 |
Figure 3 | ~5000 |
As shown in the table, if we took more samples per pixel to eliminate the noise, it would take more iterations and time to achieve a similar result.
Denoising took a significant amount of extra time when the resolution went from 1080p to 4k. It is expected since our run time depends linearly on the pixel count in the scene.
720p | 1080p | 4K | |
---|---|---|---|
Figure 1 | 10ms | ~52ms | 120ms |
Figure 2 | ~16ms | ~43ms | ~215ms |
Figure 3 | ~17ms | ~44ms | ~215ms |
In order to programmatically generate a lot of balls (121 balls in figure 1 and 2), scene files are only used to specify the camera specifications. All geometric shapes and materials are specified at run time in the actual code.
Fuzziness is added to the material properties such as we can have fuzzy reflection.
Figure 1 and 2 is genreated by scenes/manyBalls.txt
.