i
i
i
i
i
i
i
i
312 8. Area and Environmental Lighting
symmetric. Beyond the problem at the horizon, most BRDFs do not have
uniform, radially symmetric lobes at all angles; at grazing angles the lobes
often become sharper and thinner. Also, the lengths of the lobes normally
vary with elevation angle.
This effect usually is not noticeable for curved surfaces. However, for
flat surfaces such as floors, radially symmetric filters can introduce notice-
able errors (see Section 7.5.7 for a detailed explanation).
Kautz and McCool address the problem by approximating the BRDF
with multiple lobes, resulting in several reflection maps added
together [626]. Their approach requires an array of reflection maps, one for
each lobe.
McAllister et al. [830, 831] present a method for representing spatially
variant BRDFs (SVBRDFs) with textures containing multiple coefficients
for the Lafortune BRDF [710]. Since Lafortune lobes are generalized Phong
lobes, a single environment map texture can be used where the mipmap
levels are filtered with different Phong cosine exponents. This approach en-
ables rendering a variety of BRDF effects, including anisotropy and retrore-
flection with environment maps.
Green et al. [443] propose a similar method, which uses Gaussian lobes
instead of Phong lobes. Their fitting process is much faster than McAllis-
ter’s. In addition, their approach can be extended to support directional
shadowing of the environment map (see Section 9.10.2).
Colbert and Kˇriv´anek [187, 188] describe a high-quality algorithm that
supports arbitrary BRDFs. It is quite expensive, requiring 20 to 40 reads
from the environment map, but reproduces the effects of integrating over
the environment map with the actual BRDF. Colbert and Kˇriv´anek’s al-
gorithm uses a method called Monte Carlo quadrature with importance
sampling, which is also used in ray tracing. It is based on the idea that
the integral of a function can be approximated by taking random samples,
weighted to occur more often in areas where the function is expected to
have high values.
Filtering environment maps as a pre-process is straightforward, and
toolssuchasATI’sCubeMapGen are available to assist in this process.
If the environment maps are dynamically generated, efficient filtering can
be difficult. The auto-generated MIP map levels provided by most APIs
may be sufficient for some needs, but can result in artifacts. Kautz et
al. [627] present a technique for rapidly generating filtered parabolic re-
flection maps. Hensley et al. [542, 543] present a method to interactively
generate summed-area tables (see Section 6.2.2), which are subsequently
used for high-quality glossy reflections.
An alternative to regenerating the full environment map is to add the
specular highlights from dynamic light sources onto a static base environ-
ment map. This technique can be an alternative way to solve the light-