微面元模型表示:在很小尺度下,相对于图像中的像素,表面是粗糙不平的,但相对于光的波长是巨大的。因为粗糙度是随机的,所以对于表面的一部分和另一部分而言是没有区别的;它们会有不同的表面几何形状,但是在大范围内的统计分布是一样的。这中表面行为类似于局部镜面,大尺度观测时,察觉不到表面特征,它们平均的分布在空间中。当表面稍微粗糙些,观察到的表面就不太有光泽。
我们称射线反射的微面元(microsurface)为细节表面(detailed surface),表面法向称之为微面元法向(microsurface normal)或者微法向(micronormal),用
m
m
m向量表示。大尺度表面关于我们定义平均的BRDF称之为大表面(macrosurface)。为了得到微面元模型,可以认为这是平面,因为我们只对不同区域的大面(假设包含大量微几何表示)感兴趣。大表面有它自己的法向称之为大表面法向(macrosurface normal或者macronormal),用
n
n
n向量表示。
也就是说在波长尺度是平滑的,在微面元尺度是粗糙的,在大面尺度是水平的。
从数学角度表示该问题,如果从大尺度比考虑表面,BRDF是什么尼?也就是说,如果从特定方向照射一个表面,光反射平均分布是什么尼?在微面元框架下,反射射线反射出来的总量
微面元法线分布(microfacet normal distribution) D ( m ) D(m) D(m)表示在微面元上的表面法线 m m m的统计分布。假如以法线 m m m为中心无限小的立体角为 d ω m d\omega _{m} dωm,以及无限小
现在能够计算对一个点适当阴影的两块非常重要信息,分别为位置和入射光。现在需要确定入射光在表面是如何散射的,具体而言,我们感兴趣的是通过跟踪而找到的交互点的射线有多少光量散射出来到达相机,如图1.6。
场景中的每一个物体都是一种材质,材质也是其在表面的每一个点的自身表现属性,被称作为双向反射分布函数
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
)
bidirectional \ reflectance \ distribution \ function (BRDF)
bidirectional reflectance distribution function(BRDF)。这个函数代表了从入射方向
ω
i
\omega _{i}
ωi过来的光有能量以反射方向
ω
o
\omega _{o}
ωo反射出去。如果在p点公式化BRDF为
f
r
(
p
,
ω
o
,
ω
i
)
f_{r}(p,\omega _{o},\omega _{i})
fr(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