Lambert表面的brdf推导
在微表面模型下,基本的反射公式如下
L
o
(
p
,
ω
o
)
=
∫
Ω
f
r
(
p
,
ω
i
,
ω
o
)
L
i
(
p
,
ω
i
)
n
⋅
ω
i
d
ω
i
L_o(p,\omega_o) = \int\limits_{\Omega} f_r(p,\omega_i,\omega_o) L_i(p,\omega_i) n \cdot \omega_i d\omega_i
Lo(p,ωo)=Ω∫fr(p,ωi,ωo)Li(p,ωi)n⋅ωidωi
其中
f
r
(
p
,
ω
i
,
ω
o
)
f_r(p,\omega_i,\omega_o)
fr(p,ωi,ωo) 就是 BRDF,单位是
s
r
−
1
sr^{−1}
sr−1。
以下是维基百科中的介绍
f
r
(
ω
i
,
ω
r
)
=
d
L
r
(
ω
r
)
d
E
i
(
ω
i
)
=
d
L
r
(
ω
r
)
L
i
(
ω
i
)
cos
θ
i
d
ω
i
{\displaystyle f_{\text{r}}(\omega _{\text{i}},\,\omega _{\text{r}})\,=\,{\frac {\operatorname {d} L_{\text{r}}(\omega _{\text{r}})}{\operatorname {d} E_{\text{i}}(\omega _{\text{i}})}}\,=\,{\frac {\operatorname {d} L_{\text{r}}(\omega _{\text{r}})}{L_{\text{i}}(\omega _{\text{i}})\cos \theta _{\text{i}}\,\operatorname {d} \omega _{\text{i}}}}}
fr(ωi,ωr)=dEi(ωi)dLr(ωr)=Li(ωi)cosθidωidLr(ωr)
而在光照计算中
f
r
=
k
s
⋅
f
d
f
f
u
s
e
+
D
F
G
4
(
n
⋅
w
i
)
(
n
⋅
w
o
)
f_r = k_s \cdot f_{dffuse} + \frac{DFG}{4(n \cdot w_i)(n \cdot w_o)}
fr=ks⋅fdffuse+4(n⋅wi)(n⋅wo)DFG
brdf由漫反射和镜面反射构成,漫反射的时候最简单的就是假设平面是朗伯面,从而使用
f
d
i
f
f
u
s
e
=
c
π
f_{diffuse} = \frac{c}{\pi}
fdiffuse=πc
朗伯体性质
根据百度百科朗伯体的定义
朗伯体是指当入射能量在所有方向均匀反射,即入射能量以入射点为中心,在整个半球空间内向四周各向同性的反射能量的现象,称为漫反射,也称各向同性反射,一个完全的漫射体称为朗伯体。
详细推导
因为光的可逆性,朗伯体表面的入射光可以通过对该点处半球面上所有的出射光进行积分求得。
假设表面点的颜色是
c
c
c ,那么假设入射光 Radiance 是
L
i
L_i
Li,且垂直于当前点,则该点的法线对应的半球方向上任意一点的出射光 Iradiance 都是数值相等的,
L
i
2
π
\frac{L_i}{2\pi}
2πLi,而且朗博表面的brdf也必然是一个常数
f
l
f_l
fl,则通过对半球所有出射方向进行积分
c
L
i
=
∫
0
2
π
∫
0
π
/
2
f
l
L
i
2
π
sin
θ
d
θ
d
ϕ
=
L
i
f
l
2
π
∫
0
2
π
d
ϕ
=
L
i
f
l
⇓
f
l
=
c
π
\begin{aligned} c L_i &= \int_{0}^{2\pi}\int_{0}^{\pi/2} f_l \frac{L_i}{2\pi} \sin{\theta} d \theta d \phi\\ &=L_i \frac{f_l}{2\pi} \int_{0}^{2\pi} d \phi\\ &=L_i f_l \end{aligned} \\ \Downarrow \\ f_l = \frac{c}{\pi}
cLi=∫02π∫0π/2fl2πLisinθdθdϕ=Li2πfl∫02πdϕ=Lifl⇓fl=πc
这就是我们在计算环境光照的时候常用到的brdf
引用
[1] https://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function