BRDF
BRDF,全称 Bidirectional Reflectance Distribution Function,双向反射分布函数
很高级,不过实际上大体只是在说一件事情 —— 描述表面点
好,还是很难懂 —— 类比成描述光从一个方向入射,那么会有多少光反射到相机(视角)所在的方向,这也是其“双向”名称的由来 ——
- 入射方向
- 出射方向
BRDF 需要以来这两个方向
公式
先来点”数里数气“的东西,下面是 BRDF 的数学定义——
其中 ——
:从入射方向带来的微小 Irradiance; :由这份入射光产生的、沿出射方向离开的反射 Radiance; :两者之间的比例密度
也就是说,实际上 BRDF 描述的是每输入一单位 Irradiance,材质会在指定出射方向产生多少 Radiance(辐射度量学继续挖坑)
那么渲染方程中,完整的反射部分 ——
也就是对整个上半球面(来自四面八方的光)入射的光进行积分得到对于视角(相机)而言的 Radiance
那么如果对于离散的几个光源来说,确乎是可以写成离散的形式
物理限制
对于物理正确的BRDF,有如下约束 ——
非负性
也就是说 BRDF 不应该输出负数,即
也很好理解,有光入射那么一定有光出射
能量守恒
固定一个入射方向后,把材质向所有出射方向反射的能量累加起来,不能超过输入能量,即
不过值得注意的是, BRDF 作为一个方向密度函数,当反射能量高度集中在很窄的方向范围时,局部值可以大于 1,所以真正受到限制的是对整个出射半球积分后的总反射能量
互易性
光路可逆有点像,即
也就是说交换入射方向和出射方向后,反射响应保持不变
漫反射和镜面反射
对于实际的材质来说,我们一般把 BRDF 拆解成两项来计算 ——
:Diffuse BRDF,漫反射部分 :Specular BRDF,镜面反射部分
写成公式——
不论是镜面反射还是漫反射都是 BRDF, 因为都描述了入射光线到出射光线之间的关系,区别主要就是光的物理路径和方向分布
漫反射
描述了入射光经过材质内部的吸收和散射后,重新从表面离开,并分布到较宽的方向范围
那么常见(最简单的)的漫反射 BRDF 是 Lambert ——
:漫反射反照率 用于能量归一化
其核心在于如下假设——
在固定的入射 Irradiance 下,表面向所有观察方向产生相同的 Radiance。
当然还有其他更高级的模拟方法,比如
- Oren–Nayar:用于粗糙漫反射表面
- Burley Diffuse:Disney PBR 中常见
- 专门的 Cloth Diffuse
(继续挖坑等填)
镜面反射
它描述的是光在材质表面或介质边界附近直接反射,并集中在某个特定方向附近 —— 所以具有非常强的方向性
- 观察方向和光线理想反射方向相近则镜面反射强
- 反之则非常弱
由初中知识可以得到,对于理想的镜面平面,有反射方向
其中
微表面模型假设:宏观表面由大量尺寸远小于一个像素的微小平面组成,每个微表面本身都是理想镜面。宏观粗糙度不表示单个微表面变得模糊,而表示这些微表面的法线方向分布得更分散。
(在此之前简单提一嘴对于传统的 Blinn–Phong / Phong 模型,它们是是经验高光模型,不是物理上严谨的方法,不保证能量守恒)
那么微表面模型中常见的一种建模是Cook–Torrance 镜面 BRDF,它的公式为
,法线分布函数,可以说明有多少微表面“朝向正确”,因为只有法线接近 的微表面,才能把光反射到相机。 ,每个微表面反射多少光,它是 Fresnel 项,描述光照到一个微镜面后,有多少比例被反射(菲涅耳方程这块) ,微表面是否被遮挡,描述有多少潜在镜面反射真正没有被遮挡
那么完整的说明依旧挖坑
简单来说
所有微表面
↓
D:其中多少微表面朝向正确
↓
F:这些微表面反射多少光
↓
G:这些反射中有多少没有被遮挡
↓
得到镜面反射 BRDF然后对于各向异性各向同性这些也是微表面模型中可以拓展的内容,后面再说,不影响主线
总结
BRDF 相当于描述了要渲染的材质的“表面反光能力” —— 其主要聚焦在反射光线的能力上