![]()
![]()
The image on the left was computed with direct lighting only using deterministic techniques. The image on the right is a Monte Carlo global illumination solution of the same scene, with 2 indirect diffuse bounces and 30x30 hermispherical sampling (1800 rays per pixel), including volume-to-surface as well as surface-to-surface transport.[So why is the lit spot red on the wall and yellow on the floor, you say? Because the left wall is red and the ground, ceiling and back wall are yellowish.]
2 bounces -- 3x3, 9x9, 16x16, 30x30 samples
![]()
![]()
![]()
![]()
The entire hemisphere of incoming directions is integrated using a combination of stratified and low discrepancy sampling patterns. The patterns follow a uniform distribution on the hemisphere, hence no importance sampling was used. As evidenced in these images, it takes a large number of samples to reduce the noise to acceptable levels, especially in diffuse scenes with small sources like this one. No energy-preserving noise reduction filters were applied.
1, 2, 3 bounces -- 16x16 samples
![]()
![]()
![]()
In principle, the recursive radiance equation governing the light transport process contains paths of infinite length which are impossible to compute exactly. Fortunately, but only if physically plausible reflection models are used, the integral operator of the radiance equation is contractive so higher order terms contribute much less than the first few terms. In practice, we truncate the Neumann series expansion after a fixed small number of terms, introducing bias into the final result. This bias can be quite significant for highly reflective scenes with mostly indirect illumination. Russian roulette is a technique that provides an asymptotically unbiased estimate by using probabilistic termination of the Neumann series, effectively trading bias for variance, but it's not implemented in the current prototype.In this particular test scene, even one or two terms seem to be enough. Higher order terms don't contribute much to the final image, but increase rendering times by a linear factor.
Volume-to-surface transport (2 bounces, 30x30 samples)
![]()
![]()
![]()
Not only surface-to-surface, but also volume-to-surface transport is taken into account. Thus, light scatters off the atmosphere and illuminates the surrounding environment indirectly. A Mie-like scattering phase function was used, producing forward anisotropic scattering.Volume scattering has been disabled completely in the first image, whereas in the second image it is enabled for eye rays only. Volume-to-surface interaction is shown in the third image.