For this assignment I extended pbrt. pbrt already includes a variety of sampling strategies, so I reimplemented a few of the ones discussed in class. In addition I added uniform sampling, which is not natively supported by pbrt (probably because it is so simple and yields poor results). The random sampler subsamples each pixel N times with each sample being selected uniformly in both x and y. The stratified sampler is basically a combination of the other two; it subsamples on a uniform grid within the pixel, but jitters each pixel based on a random value such that the resulting location stays within the local subsample region.
For the filtering component, I implemented what I refer to as a "mound" and also a clipped sinc. The mound is a symmetric trapezoid (a flat plateau with linear slopes on each side). I also implemented a clipped sinc filter. pbrt comes with an attenuated sinc filter, but mine simply cuts off at the edges---this provides poor results. For comparison, I have also included images using the Mitchell filter included with pbrt.
| mound sinc filter | clipped sinc filter | Mitchell filter (pbrt) | |
| uniform sampling | |
|
|
| random sampling | |
|
|
| stratified sampling | |
|
|