Skip to content

BRDF

BRDF,全称 Bidirectional Reflectance Distribution Function,双向反射分布函数

很高级,不过实际上大体只是在说一件事情 —— 描述表面点 x 处,从入射方向 L 到观察方向 V 的光反射“比例“

好,还是很难懂 —— 类比成描述光从一个方向入射,那么会有多少光反射到相机(视角)所在的方向,这也是其“双向”名称的由来 ——

  • 入射方向
  • 出射方向

BRDF 需要以来这两个方向

公式

先来点”数里数气“的东西,下面是 BRDF 的数学定义——

fr(x,ωi,ωo,λ)=dLor(x,ωo,λ)dEi(x,ωi,λ)

其中 ——

  • dEi​:从入射方向带来的微小 Irradiance;
  • dLor​:由这份入射光产生的、沿出射方向离开的反射 Radiance;
  • fr​:两者之间的比例密度

也就是说,实际上 BRDF 描述的是每输入一单位 Irradiance,材质会在指定出射方向产生多少 Radiance(辐射度量学继续挖坑)

那么渲染方程中,完整的反射部分 ——

Lor(x,ωo)=Ω+Li(x,ωi)fr(x,ωi,ωo)max(Nωi,0)dωi

也就是对整个上半球面(来自四面八方的光)入射的光进行积分得到对于视角(相机)而言的 Radiance

那么如果对于离散的几个光源来说,确乎是可以写成离散的形式

Lor(x,ωo)=j=1MLi,j(x,ωi,j)fr(x,ωi,j,ωo)max(Nωi,j,0)Vj

物理限制

对于物理正确的BRDF,有如下约束 ——

非负性

也就是说 BRDF 不应该输出负数,即

fr(ωi,ωo)0

也很好理解,有光入射那么一定有光出射

能量守恒

固定一个入射方向后,把材质向所有出射方向反射的能量累加起来,不能超过输入能量,即

Ω+fr(ωi,ωo)max(Nωo,0)dωo1

不过值得注意的是, BRDF 作为一个方向密度函数,当反射能量高度集中在很窄的方向范围时,局部值可以大于 1,所以真正受到限制的是对整个出射半球积分后的总反射能量

互易性

光路可逆有点像,即

fr(ωi,ωo)=fr(ωo,ωi)

也就是说交换入射方向和出射方向后,反射响应保持不变

漫反射和镜面反射

对于实际的材质来说,我们一般把 BRDF 拆解成两项来计算 ——

  • fd​:Diffuse BRDF,漫反射部分
  • fs​:Specular BRDF,镜面反射部分

写成公式——

fr=fd+fs

不论是镜面反射还是漫反射都是 BRDF, 因为都描述了入射光线到出射光线之间的关系,区别主要就是光的物理路径和方向分布

漫反射

描述了入射光经过材质内部的吸收和散射后,重新从表面离开,并分布到较宽的方向范围

那么常见(最简单的)的漫反射 BRDF 是 Lambert ——

fd(L,V)=ρdπ
  • ρd​:漫反射反照率
  • π 用于能量归一化

其核心在于如下假设——

在固定的入射 Irradiance 下,表面向所有观察方向产生相同的 Radiance。

当然还有其他更高级的模拟方法,比如

  • Oren–Nayar:用于粗糙漫反射表面
  • Burley Diffuse:Disney PBR 中常见
  • 专门的 Cloth Diffuse

(继续挖坑等填)

镜面反射

它描述的是光在材质表面或介质边界附近直接反射,并集中在某个特定方向附近 —— 所以具有非常强的方向性

  • 观察方向和光线理想反射方向相近则镜面反射强
  • 反之则非常弱

由初中知识可以得到,对于理想的镜面平面,有反射方向

R=I2(NI)N

其中I是是指向表面的入射传播方向,它满足入射角等于反射角,但现实中绝大多数表面不会只反射到一个绝对精确的方向,而会在理想反射方向附近形成一个有宽度的分布 —— 此时就可以非常好的引入微表面模型 ——

微表面模型假设:宏观表面由大量尺寸远小于一个像素的微小平面组成,每个微表面本身都是理想镜面。宏观粗糙度不表示单个微表面变得模糊,而表示这些微表面的法线方向分布得更分散。

(在此之前简单提一嘴对于传统的 Blinn–Phong / Phong 模型,它们是是经验高光模型,不是物理上严谨的方法,不保证能量守恒)

那么微表面模型中常见的一种建模是Cook–Torrance 镜面 BRDF,它的公式为

fs(L,V)=D(H)F(L,H)G(L,V)4(NL)(NV)
  • D,法线分布函数,可以说明有多少微表面“朝向正确”,因为只有法线接近 H 的微表面,才能把光反射到相机。
  • F,每个微表面反射多少光,它是 Fresnel 项,描述光照到一个微镜面后,有多少比例被反射(菲涅耳方程这块)
  • G,微表面是否被遮挡,描述有多少潜在镜面反射真正没有被遮挡

那么完整的说明依旧挖坑

简单来说

所有微表面

D:其中多少微表面朝向正确

F:这些微表面反射多少光

G:这些反射中有多少没有被遮挡

得到镜面反射 BRDF

然后对于各向异性各向同性这些也是微表面模型中可以拓展的内容,后面再说,不影响主线

总结

BRDF 相当于描述了要渲染的材质的“表面反光能力” —— 其主要聚焦在反射光线的能力上

Released under the MIT License.