CS 6620 - Fall 2017 - Ray Tracing for Graphics

Project 8 - Antialiasing

Kevin Parker


Constant 64-sample supersampling

I first implemented constant supersampling just as a proof of concept. Timing results are listed later for when I got more features working.

First attempt of adaptive sampling

I next implemented adaptive sampling, which clearly isn't perfect. I continued to tune the thresholds from here. Also notice that this scene is too bright. I figured out later that I was improperly scaling the color values after combining them all together.

First attempt of sub sampling

I tried implementing subsampling using quadtrees. Clearly, my first attempt either did not work, or worked way too well.


Timing and final results

Constant 64 rays/px

This image took 65.6 seconds to render. No reconstructive filtering was applied.

Quadtree subsampled (1/16) -> supersampled (64)

This image took 16.2 seconds to render. It is clear that there are several major optimizations I can make to this, because it is slower than standard adaptive. For example the ray sample access time is O(NlogN), and I could reuse 'previous location' within the tree and step up/down instead of just down. Finally, it is also clear that this algorithm is a bit too excited to subsample, given some strange-looking artifacts. I have ideas of how to improve it but also know that it'd be significantly more complicated. Also, for what it's worth, the samples are all jittered within the quadtree. There is also slight reconstructive filtering applied.

Standard Adaptive Supersampling (4x -> 64x)

This image took 10.0 seconds to render. I used the Halton sequence (base 2,3) to generate samples. There is also slight reconstructive filtering applied.


Machine Specs

MacBook Pro (15-inch, 2016)

2.7 GHz quad-core Intel Core i7 Skylake (6820HQ)

16 GB 2133 MHz LPDDR3 RAM