Filtering and Sampling

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 uniform mound uniform clippedsinc uniform Mitchell
random sampling random mound random clippedsinc random Mitchell
stratified sampling stratified mound stratified clippedsinc stratified Mitchell
sampler source code
filter source code