Real-time Physically-Based Materials(Surface models)
PBR
PBR与PBR材质
PBR
- 一切基于物理,如材质、光照、相机、light transport等
- 不仅限于材质,但通常指材质
RTR中的PBR
- 实时渲染的材质种类、准确度等是不如离线的
- 实时渲染的PB通常并不真的physically based
RTR中的PBR材质
- Surface
- 大部分是微表面模型(使用错误,所以不太PBR)与Disney原则的BRDF(美术友好,但也不太PBR)
- Volumes
- 大部分关注性能和近似的single/multiple scattering(云、头发、皮肤等)
- 通常在使用上会使用很多hacks,并且非常关注性能
Microfacet BRDF微表面BRDF
在GAMES101中根据微表面模型提出了以下的BRDF模型吧
$$
f(i,o)=\frac{F(i,h)G(i,o,h)D(h)}{4(n,i)(n,o)}
$$
Fresnel
- 反射随着grazing angle(掠射角)增加会增多
在物理上需要考虑光线的极化-s极化与p极化
- 近似-Schlick’s approx
$$
R(\theta)=R_0+(1-R_0)(1-\cos\theta)^5
\R_0=(\frac{n_1-n_2}{n_1+n_2})^2
$$
Normal Distribution Function
描述微表面的法线分布
法线集中
- Glossy-specular
法线分散
- Diffuse
常用的法线分布函数模型
- Bechmann
- GGX
- 其他Detailed Model
Bechmann NDF
$$
D(h)=\frac{e^{-\frac{\tan^2\theta_h}{\alpha^2}}}{\pi\alpha^2\cos^4\theta_h}
$$
- $\alpha$: roughness
- $\theta_h$ : 半程向量h与法线夹角
- 近似于用高斯函数来建立模型,alpha描述了标准差,也即光滑程度
- 分母归一化保证了projected solid angle的积分域为1
- 定义在slope space(坡度空间)上
- 高斯函数的surpport(支撑集) 是无限大的,但可以映射到-90~90度的空间
- 描述的是各向同性的结果
GGX(Trowbridge-Reitz)
- Long tail(拖尾表现更好)
- 过渡渐变看起来更自然

Extending GGX(GTR)
- GTR(Generalized Trowbridge-Reitz)
- 更长的拖尾
Shadowing-Masking Term
- Geometry term G(几何遮蔽项)
- 表示微表面自遮挡的数量,表现为入射光线被遮挡产生shadow,反射到眼睛的光线被遮挡为mask
- Shadowing-light
- Masking-eye
- 为什么需要几何遮蔽项
- 考虑如果没有G项,掠射角的入射和出射会发生什么?
- 根据Fresnel,在掠射部分的反射会变成1,
- BRDF分母接近0,最后的结果是在边缘部分接近白色,这是不合理的。
Smith Shadowing-masking term
假设法线为一种统计学分布模型,
- 将shadowing和masking的部分分开考虑
- 假设$G(i,o,m)\simeq G_1(i,m)G_1(o,m)$
问题
- 在Multiple Bounces(多次弹射)中产生的能量损失(在粗糙度高时更明显)

(如下图)在仅有的Uniform的全局光照下去照亮物体,对于specular的物体发生的正确反射,导致和背景融为一体。(白炉测试)
Roughness的部分会使反射光更容易被遮挡。因此在实际光线多次发生Bounce的过程中,只考虑一次Bounce,会导致能量损失
- Accurate methods[Heitz et al. 206]
- 在实时渲染中较慢
- Basic idea
- Being occluded = next bounce happening
- 被遮挡代表着下一次弹射发生
Kulla-county Approx
https://fpsunflower.github.io/ckulla/data/s2017_pbs_imageworks_slides_v2.pdf
依据经验来补全多次反射的能量
2D BRDF lobe中出射的总能量
$$
E(\mu_0)=\int^{2\pi}_0\int^1_0f(\mu_o,\mu_i,\phi)\mu_id\mu_id\phi
\\mu=\sin\theta
$$
在上式中注意$\mu d\mu d\phi$ 的部分,换成$\sin\theta$ ,即$\cos\theta\sin\theta d\theta d\phi$ ,也即球面参数化($\theta$, $\phi$)的表达。
- 丢失的能量
- 我们可以设计一个 additiional lobe,使得这部分积分为$1-E(\mu_o)$
- 出射的BRDF lobe和入射方向是不同的
- 考虑交换性,可以是如下形式$c(1-E(\mu_i))(1-E(\mu_o))$
$$
f_{ms}(\mu_o,\mu_i)=\frac{(1-E(\mu_i))(1-E(\mu_o))}{\pi(1-E_{avg})}
\E_{avg}=2\int_0^1E(\mu)\mu d\mu
$$
- $E_{avg}$ 的处理
- 对于复杂的积分,在split sum中,我们的处理方式是——precompute/tabulate预计算或制表
- $E_{avg}$ 的维度是多少 / $E_{avg}$ 有多少参数
- 只需考虑$\mu_0$ 和roughness
- 验证
$$
E_{ms}(\mu_o)=\int^{2\pi}0\int^1_0f{ms}(\mu_o,\mu_i,\phi)\mu_id\mu_id\phi
\=2\pi\int^1_0\frac{(1-E(\mu_i))(1-E(\mu_o))}{\pi(1-E_{avg})}\mu_id\mu_i
\=2\frac{1-E(\mu_o)}{1-E_{avg}}\int_0^1(1-E(\mu_i))\mu_id\mu_i
\=\frac{1-E(\mu_o)}{1-E_{avg}}(1-E_{avg})
\=1-E(\mu_o)
$$
- 以上的内容基于没有颜色(白色)的BRDF
- 但如果考虑其他颜色,也就代表着光线能量的吸收,也即能量的减少(损失)
- 因此我们只需要计算整体的能量损失
- 定义Average Fresnel平均菲涅尔
- 忽略入射角每次反射平均反射的能量
$$
F_{avg}=\frac{f_0^1F(\mu)\mu d\mu}{f_0^1\mu d\mu}=2\int_0^1F(\mu)\mu d\mu
$$
而$E_{avg}$ 代表我们能看到的能量(不参与多次bounce)
所以最后的能量可以分类为:
- 直接看到的能量$F_{avg}E_{avg}$
- 一次弹射后被看到的能量$F_{avg}(1-E_{avg})F_{avg}E_{avg}$
- ….
- k次弹射后被看到的能量$F_{avg}^k(1-E_{avg})^kF_{avg}E_{avg}$
相加起来的级数求和(这一部分直接和没有颜色的BRDF相乘)
$$
\frac{F_{avg}E_{avg}}{1-F_{avg}(1-E_{avg})}
$$
再来解释一遍带颜色的多次弹射的能量损失。
我们之间所做的计算都是基于没有颜色,也就是白色,也就是不吸收能量,所得到的结果。但是,如果物体存在颜色,也即会吸收能量,那么,在multi-bounces的过程中,每次弹射,都会吸收对应的能量,而我们用平均的菲涅尔来定义,这样就能忽略弹射的角度,而把所有的弹射加起来后,把这一部分由于颜色吸收能量带来的损失,和前面的乘起来,就是最后的结果。
Undesirable Hack
- 将Microfacet BRDF和一个diffuse lobe结合起来(在CV中的材质识别普遍使用)
- 这是不科学的(Cook-Torrance BRDF就是这么干的)
- 微表面已经将表面解释成表面的某种分布了,又怎么会加上一部分的理想漫反射呢
- 物理不正确,且能量不守恒
- (但也有加上diffuse后保证能量守恒的处理方式,这肯定也是存在的)
Linearly Transformed Cosines(LTC)
线性变换余弦方法——多边形光照下的微表面BRDF着色
解决microfacet model 的shading问题
主要基于GGX法线分布(其他模型也是可以的)
不考虑shadows
多边形光源
想法
- 任意2D的BRDF lobe可以被线性变换为余弦
- 光源的形状也可以被变换
在cosine lobe上积分变换后的光源是有解析解的
做法
认为多边形光源内部发出的光是uniform的,即Li是相同的,即从任意位置观察的多边形光源的Li是相同的
$$
\omega_i=\frac{M\omega_i’}{||M\omega_i’||}
\L(\omega_o)=L_i\cdot \int_PF(\omega_i)d\omega_i
\=L_i\cdot \int_P\cos(\omega_i’)d\frac{M\omega_i’}{||M\omega_i’||}
\=L_i\cdot \int_{P’}\cos(\omega_i’)Jd \omega_i’
$$
Disney Principled BRDF迪士尼原则的BRDF
- 微表面模型的缺陷
- 微表面模型不适合表现真实的物理材质
- 微表面模型缺少diffuse项
- 解释不了多层的材质
- 基于物理的参数艺术上不好用
- 反射率n-ik(复数)
- Disney Principled BRDF
- Art directable, 不要求物理上正确
- 实时渲染中认为是PBR的
- 需要使用更直接的参数,使用尽可能少的参数
- 参数最好是0-1的。如果有必要,也最好允许能够超出这个范围
- 所有有关联的参数应该鲁棒且合理

- sheen
- 类似天鹅绒的光泽效果
- clearcoat
- 清漆
Non-Photorrealistic rendering(NPR)
NPR——stylization(fast and reliable)
- 来源于真实感渲染
- 利用抽象
- 强化重点
应用
- 艺术
- 可视化
- 指示说明
- 教育
- 娱乐
风格化
- 描边
- 阴影
- 色块
- 。。。
Outline Rendering
- 描边不只是轮廓
Boundary
Crease
- 折痕
Material edge
Silhouette
- 在物体外部轮廓上,要求有多个面共享的边界
shading方法
- 描边粗细不一致
Geometry方法
背面渲染成黑色沿顶点法线外扩
postprocess方法
图像边缘检测的方法

Color blocks色块
- Hard shading: thresholding on shading
- posterization: thresholding on final image

Strokes Surfaces Stylization
- sketch

