现在能够计算对一个proper shading的两块非常重要信息,分别为位置和入射光。需要确定入射光在表面是如何散射的,具体而言,我们感兴趣的是通过跟踪而找到的交互点的射线有多少光量散射出来到达相机,如图1.6。
场景中的每一个物体都是一种材质,材质也是其在表面的每一个点的自身表现属性,被称作为双向反射分布函数
bidirectional reflectance distribution function(BRDF)
b
i
d
i
r
e
c
t
i
o
n
a
l
r
e
f
l
e
c
t
a
n
c
e
d
i
s
t
r
i
b
u
t
i
o
n
f
u
n
c
t
i
o
n
(
B
R
D
F
)
。这个函数代表了从入射方向
ωi
ω
i
过来的光有能量以反射方向
ωo
ω
o
反射出去。如果在p点公式化BRDF为
fr(p,ωo,ωi)
f
r
(
p
,
ω
o
,
ω
i
)
,那么计算光线L散射出去的能量如下:
for each light:
if light is not blocked:
incident_light = light.L(point)
amount_reflected = surface.BRDF( hit_point,
camera_vector,
light_vector)
L += amount_reflected * incident_light
这里使用符号
L
L
表示光线,与以前的表示相比较,这个表示与单位光测量略微不同。
L
L
<script type="math/tex" id="MathJax-Element-11">L</script>表示辐射率,测量我们能够看到的光的单位。
很容易扩展BRDF的概念(即BTDF)为透射光或者一般的散射光来自表面的任何一边。一般散射的函数称为BSDF(bidirection scattering distribution function),第8张详细介绍。更复杂的函数模型是BSSRDF(bidirectional subsurface scattering reflectance distribution function),该函数模拟光出射点与入射点不同的情况,BSSRDF在5.6.2,11.4及15.5中详细介绍。