PBR

PBR的一些小总结, 为了保持篇幅的简短,忽略了辐射度量学的基本知识。

参考链接

1 PBR模型主要的三个特征

  • 能量守恒
  • 微平面模型
  • 物理模型

2 物体表面颜色

可以看作 环境光 ambient + 漫反射 diffuse + 镜面反射 specular

  • 镜面反射是光线在物体表面反射出去的光线
  • 漫反射是光线进入物体内部,在内部散射后反射出物体表面的光线
  • 环境光就是考虑没有直接射到物体表面

2.1 终极渲染模型

$L(p, w_0) = \int f_r(p, w_0, w_i) L(p, w_i) n * w_i dw_i$

符号含义:

  • $f_r$ 为BRDF函数, 根据入射角度/出射角度/平面法线/粗糙程度决定每条光线的最终贡献率
  • $L(p, w_i)$为入射辐射率
  • $L(p, w_0)$为出射辐射率
  • $n$为法向量
  • $w_i$为光线方向

note:

  • $L(p, w_i) n * w_i$即光线以与法线一定夹角射到平面上辐射率会减小
  • 不同的光源(点光源/线光源/面光源…)的时候还要考虑光线在传播过程中随着路径的长度的衰减

总结:
即 使用半球平面内所有方向的光线贡献求和作为出射辐射率

2.2 BRDF

  • $fr = kd f_l + ks f_c$

  • $kd$为漫反射比例

  • $ks$为镜面反射比例
  • $f_{lambert}=\frac{C}{PI}$ C为基础反射率
  • $f_{cook-torrance}=\frac{DFG}{4 (nw_i) (nw_0)}$
    • $D$根据表面粗糙度估计给定微平面的法向量与中间向量(光线角度与观察角度的中间向量)一致的比例
    • $G$代表微平面相互遮蔽的比例
    • $F$代表根据观察方向而导致反射比例$ks$与折射比例$kd$的变化,一般来说垂直观察的时候折射最强反射最弱,水平观察的时候反射最强折射最弱

给定基础反射率$F_0$与观察角度$w_0$则可以通过$F$计算实际反射比例$ks$且$kd = 1 - ks$

2.3 金属与非金属

金属材质较为特殊:

  • 镜面反射很强
  • 没有漫反射

而非金属材质:

  • 漫反射很强
  • 镜面反射很弱

一般材质介于二者之间

2.4 基础反射率F0

  • 金属的基础反射率很高且三个通道的值一般不同
  • 非金属的基础反射率很低(默认为0.04)且三个通道的值一般相同
  • 而一般材质介于二者之间使用一个metallic进行插值

2.5 如何用统一的公式描述三种材质的基础反射率

给定基础反射率albedo以及金属度metallic进行线性插值
$F0 = (0.04, albedo, metallic)$
$ks = F(F0)$
$kd = (1 - metallic)(1 - ks)$ 因为金属没有漫反射

3 如何描述PBR材质

1
2
3
4
uniform vec3  albedo; // 基础反射率F0
uniform float metallic; // 金属度
uniform float roughness; // 粗糙程度
uniform float ao; // 环境光强度