Top row: Specular Phong BRDF (s=50,
ks= 1.0). Bottom row: Phong BRDF
with diffuse component (s=50, ks=kd=0.5).
Specular David in Sky Probe Gallery.
Top row: Bidirectional sampling.
Bottom row: SMC sampling. All frames rendered in 4 seconds.
Video
Sequential
sampling video
Correlated Visibility Sampling
Complex visibility situation around
Buddha's feet in the Grace Cathedral environment
|
|
Bidirectional
sampling |
Correlated
visibility sampling
|
Abstract
State-of-the-art
importance sampling strategies for direct
illumination take into account the importance of the incident
illumination, as well as the surface BRDF. Hence, these
techniques achieve low variance in unoccluded regions. However, the
resulting images still have noise in partially occluded
regions as these techniques do not take visibility into
account during the sampling process. We introduce the
notion of correlated visibility sampling, which considers
visibility in partially occluded regions during the sampling
process, thereby improving the quality of the
shadowed regions. We aim to draw samples in the partially
occluded regions according to the triple product of the incident
illumination, BRDF and visibility using Monte Carlo sampling
followed by Metropolis sampling.
Correlated Sampling
Our solution to sampling from the triple product
distribution is a two-step approach. In the first step, energy
estimates for each pixel are created using samples drawn from the
bidirectional importance (product distribution) of the incident
illumination and the surface BRDF. This estimate is built using the
sampling-importance resampling (SIR) algorithm. We create a visibility
mask and mark pixels for which one or more of the visibility tests
failed, i.e., pixels which are partially occluded. In the second step,
Metropolis sampling is started for the partially occluded pixels in
order to locally explore the shadowed regions more extensively. If
desired, any image-space operation such as dilation can be applied to
the visibility mask. Our approach has the following benefits:
- The energy
estimates from the first round of sampling are created with a small
number of visibility tests. For unoccluded regions, this small number
of samples is sufcient for providing a good estimate of the integral.
- By
employing the visibility mask, visibility tests can then be restricted
in the second phase to the partially occluded regions where more
samples are required in order to achieve low variance.
- The
sampling in the second phase can exploit correlation in the energy
estimates of neighboring pixels as a powerful tool for variance
reduction.
- Metropolis
sampling in the second phase is started only from those bidirectional
samples that passed visibility tests in the first phase as these are
the valid samples according to the target distribution. Markov chains are started from an
unbiased Monte Carlo estimate and hence, have no startup bias.
Visbility Masks and Lens Perturbation
Visibility
masks generated after first round of bidirectional
sampling |
Energy
transition from one pixel to another based on visibility tests.
Green arrow depicts un-occluded sample, red arrow depicts
occluded sample. |
After
an
initial pahse of bdirectional sampling, we create a visibility mask and
mark pixels for which one or more visibility tests failed. In the
second step, we employ the Metropolis-Hastings algorithm in order to
locally explore visibility in the shadowed regions more extensively. We
employ lens perturbation as the mutation strategy for our Metropolis
algorithm. Since there is correlation in the visibility of points in
neighboring pixels, using this strategy to transfer energy of samples w_i,x to neighboring pixels x' can be an effective means of
reducing variance. We partition the image plane into 5x5 tiles for lens perturbation and
carry out mutations only between the partially occluded pixels within
each tile. First a mutation of a valid unoccluded sample (obtained from
first round of bidirectional sampling) is proposed. Visibility is then
sampled in the same direction (for environment map illumination) for
the pixel that the sample gets mutated to. If the visibility test
passes, the mutation is accepted with an acceptance probability a, else it is rejected. If the
mutation is accepted, energy is transfered from pixel coordinate x to x'.
Results