In spite of its inability to properly display bright or dark scenes, reflected light metering has been used in computer graphics exclusively up to now. Maybe the computer graphics community has been influenced by the fact that this is the dominant method in photography. It is certainly not convenient for a photographer to measure the incident light in all cases (and sometimes it is simply impossible). However, in computer generated images it can be achieved quite simply, as will be explained now. We will explain the method for the monochrome (or black and white) case in detail first. The extension to the color case is straight forward and described in the appendix.
The main idea is to place a limited number of diffusors into the scene. A diffusor is a half-space integrator used to measure irradiance. In computer graphics a perfectly diffuse surface can be used as the diffusor. Actually, the outgoing radiance of a surface with perfectly Lambertian BRDF is proportional to the surface's irradiance.
Usually only one diffusor is used in photography, as the
photographer knows the subject of interest in the scene. For
computer generated images more than one diffusor will be used, but
the number of diffusors is still low compared to the number of
patches or pixels in the final image. We suggest using e.g.
diffusors in the scene. The number of samples
required for incident light measuring is lower than the number for
measuring reflected light, because the variance of incident light
is much lower. Due to the lower variance, the contrast of irradiance
values is also lower than the contrast of radiance values.
Of course it is possible to allow the user to place diffusors
interactively into the scene, but our intention was to create an
automatic method. Once the diffusors have been placed, the
irradiance E of each diffusor should be computed as:

where
is the incident angle,
= rad,
is a solid angle,
= sr,
is the hemisphere,
is the radiance in the d incoming direction,
In general, for an arbitrary BRDF
the
outgoing radiance for distributed light sources is:

For an ideal Lambertian BRDF

where a is the dimensionless albedo or reflectivity,
. That means that:

Inserting a Lambertian BRDF in (7.2) and using (7.1) gives:

where
and has the same value for each
direction of the half space.
In the implementation methods to be described later, diffusors will be
realized as perfectly Lambertian, white, elementary metering surfaces,
each with the same albedo value: a=1. For the sake of simplicity,
let us first assume that the lighting is totally homogeneous,
i.e. each diffusor receives the same irradiance value E. Therefore,
all of the metering surfaces are the same, corresponding to
(7.5):

The linear scale factor m used to map the original radiance image is then:

Different surfaces in the scene can have different albedo values. How
will they be displayed using the scale factor m? According to (7.5)
each surface emits the radiance
. Multiplying this radiance with m (7.7),
results in exactly the albedo "a" being received for displaying. This is
the exact, desired, and correct solution!
In the case of inhomogeneous lighting there is a set of positions
with different
(and
) values. From this
set, a representative value should be produced to be used as an
appropriate scale factor. Our first idea was to use the average
value of a truncated histogram of the metering radiances (e.g. the
lowest x % and the highest x % of the histogram values are
clipped, with an x between 3 and 10), because some very dark or very
light areas in the image can greatly influence the average
value. The value of x is completely arbitrarily chosen and can be
increased in order to eliminate the excessive influence of a dark or
light part of the image. To eliminate this effect we use the median
value, where x = 50 %. In this general case the scale factor m
is:

where
is the median value of the
values of the diffusor set.
In the case of inhomogeneous lighting, this method does not produce the exact albedo value "a" for diffuse surfaces. However, the method offers a good compromise, in general a value near to the original "a". Sometimes the resulting device input value will exceed 1, in this case we propose to simply clip such values to 1.
Note that this is a two pass method. In the first pass a small irradiance image is rendered and the scale factor m is found. In the second pass the original image is rendered in the full resolution and this raw image is then mapped using the scale factor m from the first pass. Of course, there are no diffusors in the original scene used to render the final image.
The irradiance computation is included in some rendering packages (e.g. RADIANCE [Ward94a]). The irradiance calculation is often used for lighting engineering purposes. It is interesting that, in spite of this fact, up to now irradiances were not used to simulate incident light metering in computer graphics. In the next chapters we are going to explain how irradiance computation can be implemented in most rendering software that uses any kind of ray tracing or radiosity.