i
i
i
i
i
i
i
i
252 7. Advanced Shading
literature, and several good surveys are available [44, 926, 1129, 1170, 1345,
1346]. BRDF models fall into two broad groups: those based on physical
theory [41, 97, 192, 193, 515, 640, 973, 1027, 1213] and those that are
designed to empirically fit a class of surface types [42, 43, 1014, 1326].
Since the empirical BRDF models tend to be simpler, they are more
commonly used in real-time rendering. The first such model used in ren-
dering was the Lambertian or constant BRDF. Phong introduced the first
specular model to computer graphics in 1975 [1014]. This model is still in
common use; however, it has several drawbacks that merit discussion. The
form in which the Phong lighting model has historically been used (shown
with a single light source for simplicity) is
L
o
(v)=
⎧
⎨
⎩
cos θ
i
c
diff
+ cos
m
α
r
c
spec
⊗ B
L
, where θ
i
> 0,
0, where θ
i
≤ 0.
(7.44)
The use of B
L
rather than E
L
is due to the fact that this form of the
shading equation does not use physical illumination quantities, but rather
uses ad hoc “brightness” values assigned to light sources. Recall from
Section 7.5.4 that effectively B
L
= E
L
/π. Using this and Equation 7.21,
we can transform Equation 7.44 into a BRDF:
f(l, v)=
⎧
⎨
⎩
c
diff
π
+
c
spec
cos
m
α
r
π cos θ
i
, where θ
i
> 0,
0, where θ
i
≤ 0.
(7.45)
Comparing this to Equation 7.36 on page 240 shows that c
diff
is equal
to the directional-hemispherical reflectance of the diffuse term. This is
fortunate—reflectance values make very good BRDF parameters. As a
reflectance value, c
diff
is restricted to values between 0 and 1, so it can be
selected with color-picker interfaces, stored using standard texture formats,
etc. The fact that c
diff
has a clear physical interpretation can also be used
to help select appropriate values for it.
It would be useful to ensure that c
spec
is a reflectance value, as well.
To do this, we need to look at the directional-hemispherical reflectance
R
spec
of the specular term. However, it turns out that for Equation 7.45,
R
spec
is unbounded, increasing to infinity as θ
i
goes to 90
◦
[769]. This
is unfortunate—it means that the BRDF is much too bright at glancing
angles. The cause of the problem is the division by
cos θ
i
.Removingthis
division also allows us to remove the conditional term, resulting in a simpler
BRDF:
f(l, v)=
c
diff
π
+
c
spec
cos
m
α
r
π
. (7.46)
This version of the Phong BRDF is more physically plausible in several
ways—its reflectance does not go to infinity, it is reciprocal, and it lacks