Lecture 10-11 Physically-Based Material

Content

  • Real-Time Physically-Based Materials
    • Microfacet BRDF
    • Disney principled BRDF
  • Shading with microfacet BRDFs under polygonal lighting
    • Linearly Transformed Cosines (LTC)

Concept

  • Physically-Based Rendering (PBR)
    • Everything in rendering should be physically based
    • Materials, lighting, camera, light transport, etc.
    • Not just materials, but usually referred to as materials
  • PBR materials in RTR
    • The RTR community is much behind the offline community
    • “PB” in RTR is usually not actually physically based

PBR materials in RTR

  • For surfaces

    • Microfacet models (used wrong so not “PBR”)
    • Disney principled BRDFs (artist friendly but still not “PBR”)
  • For volumes (cloud, hair, skin, etc.)

    focused on fast and approximate single scattering and multiple scattering

Recap: Microfacet BRDF

MicrofacetBRDF

Fresnel term
  • 精确表达非常复杂,需要考虑S/P极化 FresnelTerm

  • Schlick’s approximation 近似为基础反射率 \(R_0\) 的变化 \[ R(\theta)=R_0+(1-R_0)(1-\cos\theta)^5\\ R_0=\left(\dfrac{n_1-n_2}{n_1+n_2}\right)^2 \]

Normal Distribution Function (NDF)

此处NDF中的Normal为“法线”,须与表示“正态分布”的“Normal Distribution”中的Normal区分

  • 法线分布集中 ==> glossy NDF1

    法线分布分散 ==> diffuse NDF2

    (diffuse的微表面可以视作specular的微表面纵向scale而得到,而纵向scale使得diffuse的微表面“沟壑”较深)

  • 描述NDF的模型

    • Beckmann NDF \[ D(h)=\dfrac{e^{-\frac{\tan^2\theta_h}{\alpha^2}}}{\pi\alpha^2\cos^4\theta_h}\\ \alpha:\text{roughness of the surface}\\ \theta_h:\text{angle between half vector }h\text{ and normal }n \]

      • 类似Gaussian
      • 在slope space(坡度空间)上定义 如图即定义在 \(\tan\theta\) 所在平面上(可以保证不出现面朝下的微表面,但较难解决反射光朝下的情况) NDF3
      • 在project solid angle上积分为1
    • GGX (or Trowbridge-Reitz) \[ D_{\rm GGX}(\theta_h) = \frac{\alpha^2}{\pi\cos^4\theta_ m(\alpha^2 + \tan^2\theta_h)^2}\\ \alpha:\text{roughness}^2 \]

      • 特征:long tail 长尾巴 衰减到一定程度后非常慢,可使Specular出现“光晕” NDF4
      • 对比 NDF5
    • Extending GGX

      • GTR (Generalized Trowbridge-Reitz) (\(\gamma\) 较大时,接近Beckmann,相当于统一了两种model) NDF6
Shadowing-Masking Term

Or Geometry Term : G

  • 解决微表面之间的自遮挡问题

  • Shadowing 光线照射到微表面 ShadowingMaskingTerm1

    Masking 光线反射进入眼睛 ShadowingMaskingTerm2

  • 变暗操作,靠近垂直方向时几乎不变暗(G值为1),Grazing angle(掠视)时变暗(G值减小,直至接近0)

  • 常用的Shadowing-Masking Term

    • Smith Shadowing-Masking Term

    • 把Shadowing和Masking拆开(假定两者无关,事实上有关) \[ G(i,o,m)\approx G_1(i,m)G_1(o,m) \]

    • Beckmann(绿)和GGX(红)分别的Shadowing-Masking项 ShadowingMaskingTerm3

    • eg. 与GGX法线分布匹配的Smith模型 \[ G_{\rm Smith}(\mathbf{i},\mathbf{o},\mathbf{h})=G_{\rm Schlick}(\mathbf{l},\mathbf{h})G_{\rm Schlick}(\mathbf{v},\mathbf{h})\\ k=\dfrac{({\rm roughness}+1)^2}{8}\\ G_{\rm Schlick}(\mathbf{v},\mathbf{n})=\dfrac{\mathbf{n}\cdot \mathbf{v}}{\mathbf{n}\cdot \mathbf{v}(1-k)+k} \]

问题:能量损失

白炉测试 White Furnace Test:在完全均匀的全局环境光下渲染物体,若物体与背景同色,说明不存在能量损失,若变暗说明存在能量损失。

  • 发现,Roughness值增大会导致能量损失(图2为白炉测试) MissingEnergy1 MissingEnergy2

  • Roughness越大,微表面沟壑越多,越容易自遮挡(Shadowing-Masking程度大) ——而现实中,自遮挡的光线经过多次弹射最终会反射出来,不会损失能量,此时Microfacet模型中只考虑了一次弹射

  • 精确地还原损失的能量(Heitz et al. 2016)对实时渲染来说开销过大

  • Kulla-County Approximation

    • 被遮挡 == 发生下次弹射,从而有该经验性补全多次反射丢失能量的方法

    • 考虑一次反射时有多少能量能够保留:假定入射光 \(L_i=1\) ,BRDF项为 \(f(\mu_o,\mu_i,\phi)\) ,则出射能量(BRDF、cosine、Lighting乘积)的积分为: \[ E(\mu_0)=\int_0^{2\pi}\int_0^1f(\mu_o,\mu_i,\phi)\mu_i\,\mathrm d \mu_i\mathrm d\phi\\\mu=\sin\theta\quad(\text{用}\ \theta,\phi\ \text{定义立体角,换元积分}) \]

    • 则损失能量为 \(1-E(\mu_o)\) ,则只需补上这部分能量

    • \(E(\mu_o)\) 的积分值与观察方向有关

    • 由于BRDF的可逆性(入射出射互相可逆),则其表示应具有对称性,因此损失能量的形式为: \[ c(1-E(\mu_i))(1-E(\mu_o)) \] (凑积分简化的一种思路)

    • 可得: \[ f_{\rm ms}(\mu_o,\mu_i)=\dfrac{(1-E(\mu_i))(1-E(\mu_o))}{\pi(1-E_{\rm avg})},\quad E_{\rm avg}=2\int_0^1E(\mu)\mu\,\mathrm d \mu \] (推导略)

    • 此时将 \(f_{\rm ms}(\mu_o,\mu_i)\) 作为补全BRDF加入到渲染方程的积分中,就能够补全丢失的能量

    • 总结:设计一个function,即“补充的BRDF”,使得其积分等于丢失能量

    • 问题1: \(E_{\rm avg}=2\int_0^1E(\mu)\mu\,\mathrm d \mu\) 未知且计算困难

      • 预计算/打表
      • 维度/依赖的参数 —— \(\mu_o\) 和roughness
      • 形成一张二维的表在渲染时直接查询
    • 效果 MissingEnergy3

    • 问题2:若BRDF含有颜色

      • 颜色意味着有额外的能量损失(属于应该损失的)

      • 先考虑没有颜色的全局能量损失,求出补全BRDF,再考虑由于颜色造成的能量损失

      • Average Fresnel:不管入射角大小平均反射的能量占比 \[ F_{\rm avg}=\dfrac{\int_0^1F(\mu)\mu\,\mathrm d\mu}{\int_0^1\mu\,\mathrm d\mu}=2\int_0^1F(\mu)\mu\,\mathrm d\mu \]

      • \(E_{\rm avg}\) 不参与后续弹射,因此将能量逐步计算

      • 可以直接看到的 \(F_{\rm avg}E_{\rm avg}\)

      • 1次弹射后可以看到 \(F_{\rm avg}(1-E_{\rm avg})\cdot F_{\rm avg}E_{\rm avg}\)

      • k次弹射后可以看到 \(F_{\rm avg}^k(1-E_{\rm avg})^k\cdot F_{\rm avg}E_{\rm avg}\)

      • 求和求级数得Color Term \(\dfrac{F_{\rm avg}E_{\rm avg}}{1-F_{\rm avg}(1-E_{\rm avg})}\)

      • 将Color Term乘到没有考虑颜色的补全BRDF上,得到最终的补全BRDF,加入渲染方程积分

      • 结果 MissingEnergy4MissingEnergy5

  • 近年出现的不用Kulla-County方法的、不好的Hack: 直接对Microfacet BRDF增加一个diffuse lobe

    • eg. 在CV领域作材质识别时
    • “完全错误” “不能更糟糕” “我从来没有这么教过你”
    • 物理错误,无法保证能量守恒

Shading with Microfacet BRDFs under polygonal lighting – Linearly Transformed Cosines (LTC)

解决微表面模型着色问题

  • 主要针对GGX的NDF时(当然其他NDF也可以)
  • 不考虑阴影
  • 在多边形光源的情况下(不需要采样的方法)

LTC1

Lobe:瓣,如图蓝色区域,表示从视点发射的光线反射的分布,分布的形状类似一片花瓣。严格定义:BRDF的二维切片(BRDF输入两维、输出两维, \(\theta\)\(\phi\) ,共四维)。

核心想法

  • BRDF的入射/出射的Lobe可以通过线性变换转换成余弦函数(转换到顶部,90度时最大,逐步向外减小)
  • 多边形光源也可以作同样的线性变换
  • 在这种情况下,在余弦Lobe上积分变形后的光源可以得到解析解

LTC2

具体做法

  • \[ {\rm BRDF}\xrightarrow{M^{-1}}{\rm Cosine}\\ 方向:\omega_i\xrightarrow{M^{-1}}\omega_i'\\ 积分域:P\xrightarrow{M^{-1}}P' \] LTC3 LTC4

  • 替换一个变量 假设多边形光源是uniform的,即\(L_i\)对各方向保持一致,则 \[ \text{渲染方程}\quad L(\omega_o)=L_i\cdot\int_P F(\omega_i)\,\mathrm d\omega_i\text{(BRDF、Cosine合并为$F()$)}\\ \omega_i=\dfrac{M\omega'_i}{\|M\omega'_i\|}\quad\text{代入替换得}\\ \begin{aligned}L(\omega_o)&=L_i\cdot\int_P\cos(\omega'_i)\,\mathrm d\dfrac{M\omega'_i}{\|M\omega'_i\|}\\&=L_i\cdot\int_{P'}\cos(\omega'_i)J\,\mathrm d\omega'_i\end{aligned} \]

  • 如何得到\(M\):预计算(给初始值通过优化方法计算)

Disney Principled BRDF

为什么需要?

  • Microfacet模型不能表征所有真实感材质
    • 不够Diffuse
    • 无法解释多层材质(eg.刷有清漆的表面)
  • Microfacet模型不够Artist-friendly
    • eg. 定义折射率的\(n\)\(k\)

Disney Principled BRDF设计原则

  • Art directable,不必须物理真实
  • 还是一定程度上基于物理的(在实时渲染中)

Principle 原则

  • 看起来直观,不用物理量
  • 尽可能减少参数
  • 0-1范围
  • 允许<0和>1情况,呈现特殊效果
  • 具有稳健性

Disney Principled BRDF建立在拟合的基础上,有开放源码

sheen : 绒毛,在grazing angle上有类似羽化效果 clearcoat : 类似清漆的透明层

维度多时,会出现多种参数呈现类似结果的现象

优劣势

  • 易于理解/控制
  • 能描述的材质广泛
  • 开源的实现
  • 不完全基于物理
  • 巨大的参数空间

Non-Photorealistic Rendering

== (fast and reliable) stylization

风格化

  • 描边
  • 模型简化、色块
  • 阴影分界线

轮廓

NPR1

  • 分类

    • 边界 Boundary / Border edge
    • 折痕 Crease
    • 材质边缘 Material edge
    • 有多个面共享的外轮廓线 Silhouette edge
  • Silhouette edge 描边绘制

    • Silhouette edge处观察方向与法线方向几乎垂直

      • 设定观察方向与发现夹角的阈值,超过的像素设黑
      • 问题:描边粗细不一样
    • 背面的三角形/模型扩大一小圈渲染为黑

    • 图像后处理:Edge Detect

      • Sobel Detector 纵向/横向,色块处两侧抵消,分界线两侧不抵消 \[ \begin{bmatrix} 1 & 0 & -1\\ 2 & 0 & -2\\ 1 & 0 & -1 \end{bmatrix}\quad \begin{bmatrix} -1 & -2 & -1\\ 0 & 0 & 0\\ 1 & 2 & 1 \end{bmatrix} \]

        NPR2NPR3

      • 利用G-Buffer信息,深度、法线等

  • 色块

    • 先得到正常的shading结果,再做一个阈值化(多值化 Quantization)
    • 在不同的部分(Diffuse、Specular…)应用不同的阈值化方法
  • 素描效果

    • 阴影部分打横竖线格,格子密度与阴影明暗相关
    • 提前设计不同密度的格状纹理查询(结果邻近像素查询纹理邻近像素,保证笔触连续)
    • 对每种纹理做MIPMAP时,保证每一级MIPMAP的密度一致(类似裁切而非等比缩小)

    NPR4

真实感模型是非真实感渲染的基础。