① Show that the WeightedReservoirSampler::Merge() method
leaves the resulting reservoir with a sample that indeed is stored with
probability equal to its weight divided by the sums of weights for all
the samples in the two reservoirs.
② Modify the PiecewiseConstant1D implementation to
use the adaptive CDF representation described by Lawrence
et al. (2005), and experiment with how much more compact
the CDF representation can be made without causing image artifacts. (Good
test scenes include those that use ImageInfiniteLights, which use the
PiecewiseConstant2D and, thus, PiecewiseConstant1D for
sampling.) Can you measure an improvement in rendering speed due to more
efficient searches through the approximated CDF?
② Extend SummedAreaTable to provide methods that
efficiently compute 1D integrals along each dimension and then modify the
WindowedPiecewiseConstant2D class’s Sample() method to use
this capability for sampling the conditional CDF . How is overall
rendering performance affected by your change when rendering a scene that
uses the PortalImageInfiniteLight? Profile pbrt and measure the
change in performance of the Sample() method with your changes. What
conclusions can you draw from your results?