目录
Material == BRDF
BRDF可以用来表示不同材质。
不同材质的效果
Diffuse / Lambertian Material (BRDF)
BRDF(Bidirectional Reflectance Distribution Function)双向反射映射函数,用来定义给定入射方向上的辐射照度如何影响给定出射方向上的辐射率。
假设物体不吸收能量,且入射光和反射光都是均匀分布的,那么根据能量守恒,可以写出下述渲染方程。将常数项提取出来,最终可以得到
L
o
=
π
f
r
L
i
L_o=πf_rL_i
Lo=πfrLi,且$
L
o
=
L
i
L_o=L_i
Lo=Li,则
f
r
=
1
/
π
f_r=1/π
fr=1/π,这就是完全不吸收能量的BRDF。
此时可定义一个反射率albedo,其范围在0到1之间,这样就可以表示不同的颜色。(albedo可以是多个通道的,比如表示RGB)
Glossy material (BRDF)
Ideal reflective / refractive material (BSDF*)
Perfect Specular Reflection
ω
o
ω_o
ωo:反射角,通过平行四边形法则求得。
Φ
o
Φ_o
Φo:方位角,沿法线方向俯视,可以看到方向角
Φ
i
Φ_i
Φi和
Φ
o
Φ_o
Φo在一条线上且方向相反。
Specular Refraction
Snell’s Law
折射的方位角与反射相同。
折射角由Snell定律(折射定律)得知。
折射角的计算:
当
η
i
/
η
t
>
1
η_i/η_t > 1
ηi/ηt>1时,上式没有意义,不会发生折射现象。
因此从水中往外看,只会看到一个锥形的区域,被称为Snell’s Window/Circle.
Fresnel Reflection / Term(菲涅尔项)
入射光与法线的角度决定了有多少能量会被反射。
蓝色和绿色是光向两个方向的极化现象,渲染时不做考虑,通常将两者取平均。以下有精确的计算方法,可以使用Schlick的方法拟合曲线得到近似值。
R
0
R_0
R0是基准反射率,也就是光线与法线夹角为0时的反射率。当夹角为90时,反射率为1。
Microfacet Material(微表面材质)
从近处看到的是几何,从远处看到的是材质。
粗糙表面从宏观上看是平且粗糙的,但微观上可以由很多碎片镜面组成,是不平的,每个小表面都有自己的法线。如下图所示
Microfacet BRDF
关键在于微表面的法线分布。
- 当表面较光滑时,微表面的法线方向较集中,指向的方向相差不大。
- 当表面较粗糙时,微表面的法线方向是散乱的,指向的方向相差较大。
微表面模型BRDF
- F ( i , h ) F(i,h) F(i,h):菲涅尔项
- G ( i , o , h ) G(i,o,h) G(i,o,h):几何项,考虑被遮挡的现象,微表面可能会发生互相遮挡,当光线角度接近greezy角度时很有可能出现遮挡现象。
- D ( h ) D(h) D(h):法线的分布,可得到多少表面反射方向朝着出射方向。
greezy angle:光线和表面相平打到物体表面。
Isotropic / Anisotropic Materials (BRDFs)
材质两种分类:
- 各项异性(Anisotropic)
- 各项同性(Isotropic),认为微表面不存在方向性,或方向性很弱。
两者的区别取决于方位角,若其BRDF在方位角上旋转后相同,则是各向同性。
Properties of BRDFs
- 非负的
- 线性性质
- 可逆性:交换入射方向和出射方向,得到的BRDF相同
- 能量守恒:能量不可能变多
- 各项同性 vs. 各向异性
测量BRDFs
以前的模型不是很准的,因此需要测量。
测量
如何测量?
针对一个着色点,改变光源和相机的位置(球面上改变),这样可以得到很多不同入射角和出射角对,测出radiance即可。
但是用这种枚举的方式,需要测的数据很多,复杂度太高。
使用BRDF的可逆性和各向同性的特征可以省略一些测量。
现在的热门方法时,测量出若干点的数据,将剩下的猜出来。
存储
研究BRDF的存储方式,可以使用多种方法对其进行压缩。
PS:一个BRDF的库