## Exercises

- ② Write a program that compares Monte Carlo and one or more alternative numerical integration techniques. Structure this program so that it is easy to replace the particular function being integrated. Verify that the different techniques compute the same result (given a sufficient number of samples for each of them). Modify your program so that it draws samples from distributions other than the uniform distribution for the Monte Carlo estimate, and verify that it still computes the correct result when the correct estimator, Equation (13.3), is used. (Make sure that any alternative distributions you use have nonzero probability of choosing any value of where .)
- ① Write a program that computes Monte Carlo estimates of the integral of a given function. Compute an estimate of the variance of the estimates by taking a series of trials and using Equation (13.2) to compute variance. Demonstrate numerically that variance decreases at a rate of .
- ① The depth-of-field code for the
`ProjectiveCamera`in Section 6.2.3 uses the`ConcentricSampleDisk()`function to generate samples on the circular lens, since this function gives less distortion than`UniformSampleDisk()`. Try replacing it with`UniformSampleDisk()`, and measure the difference in image quality. For example, you might want to compare the error in images from using each approach and a relatively low number of samples to a highly sampled reference image. Does`ConcentricSampleDisk()`in fact give less error in practice? Does it make a difference if a relatively simple scene is being rendered versus a very complex scene? - ② Modify the
`Distribution1D`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`InfiniteAreaLight`s, which use the`Distribution2D`and, thus,`Distribution1D`for sampling.) Can you measure an improvement in rendering speed due to more efficient searches through the approximated CDF? - ③ One useful technique not discussed in this chapter is the
idea of adaptive density distribution functions that dynamically change the
sampling distribution as samples are taken and information is available
about the integrand’s actual distribution as a result of evaluating the
values of these samples. The standard Monte Carlo estimator can be written
to work with a nonuniform distribution of random numbers used in a
transformation method to generate samples ,
`pbrt`to apply them to. Measure how well this approach works for the problem you selected. One difficulty with methods like this is that different parts of the sampling domain will be the most effective at different times in different parts of the scene. For example, trying to adaptively change the sampling density of points over the surface of an area light source has to contend with the fact that, at different parts of the scene, different parts of the area light may be visible and thus be the important areas. You may find it useful to read Cline et al.’s paper (2008) on this topic.