② The third through fifth dimensions of every sample are
currently consumed for time and lens samples in pbrt, even though not all
scenes need these sample values. For some sample generation algorithms,
lower dimensions in the sample are better distributed than higher ones and
so this can cause an unnecessary reduction in image quality.
Modify pbrt so that the camera can report its sample requirements and
then use this information when samples are requested to initialize
CameraSamples. Render images and compare results to the current
implementation. Do you see an improvement? How do results differ with
different samplers? How do you explain any differences you see across
samplers?
② Keller (2004) and Dammertz and Keller
(2008b) described the application of rank-1
lattices to image synthesis. Rank-1 lattices are another way of
efficiently generating high-quality low-discrepancy sets of sample
points. Read their papers and implement a Sampler based on this
approach. Compare results to the other samplers in pbrt.
② Implement a Sampler based on orthogonal array
sampling, as described by Jarosz et al. (2019). Compare
both MSE and Monte Carlo efficiency of this sampler to pbrt’s current
samplers.
③ Mitchell and Netravali (1988) noted that
there is a family of reconstruction filters that use both the value of a
function and its derivative at the point to do substantially better
reconstruction than if just the value of the function is known.
Furthermore, they report that they have derived closed-form expressions for
the screen space derivatives of Lambertian and Phong reflection models,
although they do not include these expressions in their paper. Investigate
derivative-based reconstruction, and extend pbrt to support this
technique. If you decide to shy away from deriving expressions for the
screen space derivatives for general shapes and BSDF models, you may want
to investigate approximations based on finite differencing and the ideas
behind the ray differentials of Section 10.1.
③ Read some of the papers on adaptive sampling and
reconstruction techniques from the “Further Reading” section and
implement one of these techniques in pbrt. Note that you will likely need
to both write a new Sampler and add additional Film
functionality. Measure the
effectiveness of the approach you have implemented using Monte Carlo
efficiency in order to account for any increased computational cost. How
well does your implementation perform compared to non-adaptive samplers?