GAMES202.闫令琪.11.基于物理的材质与非真实感渲染

  • https://www.bilibili.com/video/BV1YK4y1T7yY

基于物理的材质

  • Shading Microfacet Models using Linearly Transformed Cosines (LTC)
  • 使用 LTC 方法对微表面模型进行着色
  • LTC 方法可以用于简单反射叶(lobe)模型的着色
    • lobe:固定入射方向的反射叶,2D sliced BRDF

LTC

  • Linearly Transformed Cosines
  • 线性变换的余弦
  • 主要针对的是 GGX 法线分布的模型(其他的模型也 OK)
  • 不考虑 shadow
  • 解决的是微表面模型下,多边形光源的 shading
    • the split sum 做的是环境光下的 shading,和 LTC 不一样

  • 如果没有 LTC 方法的话,如何做多边形光源下的 shading
    • 需要做采样
    • 在多边形的光源上取很多采样点
    • 然后将这些采样点和 shading point 连线,求出 shading
  • LTC 不需要采样

LTC 的关键想法

  • lobe 可以通过某种线性变换,变换成一个余弦函数
  • 多边形的光源也可以有类似的变换
    • 例如上面的四边形,对四个顶点进行变换
    • 然后用变换后的结果进行 shading
  • 原来做渲染方程的积分不好做,但是经过上面的变换之后是有解析解
    • 将任意的 lobe 在任意的多边形光源下的积分问题转变为固定的 cosine 下对任意的多边形光源下进行积分的问题
    • 假设多边形内部是均匀的,任意的点对 shading point 的 radiance 都是相同的

具体的操作

  • 我们观察到 2D 的 BRDF lobe 可以变幻成一个余弦
    • \(\mathrm{BRDF\;lobe}{\buildrel{M^{-1}}\over\longrightarrow}\mathrm{Cosine}\)

  • 我们需要对所有的方向进行一个变换
    • \(\omega_i{\buildrel{M^{-1}}\over\longrightarrow}\omega_i'\)
  • 积分域发生变化
    • \(P{\buildrel{M^{-1}}\over\longrightarrow}P'\)
  • 结果如下

LTC 的推导

  • 我们所做的事情就是变换积分变量
  • 我们在这里假设,多边形光源的 radiance 是相同(uniform)的(\(L_i\) 相同)
    • 论文中可以通过其他的方法去掉这个假设
  • 新的方向经过 \(M\) 变换,可以变成原来的方向
    • 注意我们上面用的符号是 \(M^{-1}\)
    • \(w_i=\dfrac{M\omega_i'}{\Vert M\omega_i'\Vert}\)
    • 归一化的原因是,单元球上的点我们的变换操作可能不在单位球上(长度发生变化)
  • 渲染方程的变化
    • \(F\) 变换到 Cosine 上
      • 具体怎么变换,在 Paper 中作了很多预计算
      • 通过优化方法计算

\[ \begin{aligned} L(\omega_o)&=L_i\cdot\int_PF(\omega_i)\;\mathrm{d}\omega_i\\ &=L_i\cdot\int_{P'}\cos(\omega_i')\;\mathrm{d}\dfrac{M\omega_i'}{\Vert M\omega_i'\Vert}\\ &=L_i\cdot\int_{P'}\cos(\omega_i')J\;\mathrm{d}\omega_i'\\ \end{aligned} \]

LTC 渲染结果

LTC 总结

  • shadow 的问题
    • 可以先做 LTC,再通过其他方法计算 shadow
  • 如果多边形光源不是 uniform 的,比如光源带纹理
    • 这样 LTC 就不准确,但是也是一个好的近似
  • 各向异性的表面能不能变换到 Cosine
    • 是可以的,入射方向确定之后,出射方向就是一个 lobe

Disney’s Principled BRDF

  • Disney 原则的 BRDF

动机 Motivation

  • 微表面模型对于真实的材质表示的不是很好
    • 例如 diffuse 项缺失
      • 虽然我们可以通过某些方法可以补上,但是还是存在一些其他问题
    • 微表面模型 fit 不了我们一些实测的材质
      • 例子:刷了清漆的桌子
        • 高光+diffuse
        • 高光:清漆上的反射
        • diffuse:进入清漆之后打到木板上的反射
        • 微表面模型模拟不了
      • 多层材质
    • 微表面模型表示不了所有的东西
  • 微表面模型不好用,对于艺术家们来说不友好
    • 例如金属的折射率是一个复数:\(n-ik\),可能不好理解,不好调

设计目标

  • Art directable,使用起来比较友好
  • 物理上并不是很准确,只是在一定程度上保证正确
  • 在实时渲染中,PBR 做了很多近似,因此还是认为这种方法是 PBR 的

一些设计原则

  • Intuitive rather than physical parameters should be used.
    • 使用的参数需要更直观一点,而不是生硬的物理参数
  • There should be as few parameters as possible.
    • 参数越少越好(调起来方便)
  • Parameters should be zero to one over their plausible range.
    • 参数设置为 0-1 的拖动条
  • Parameters should be allowed to be pushed beyond their plausible range where it makes sense.
    • 有时候允许结果超出原始的范围(营造特殊的效果)
  • All combinations of parameters should be as robust and plausible as possible.
    • 所有组合应该都是可以的(不会导致程序崩溃)

一个例子

  • 某些参数及其效果
    • 表示能力很强大
    • 参数可能有冗余

  • subsurface:次表面散射
    • 用来描述光线穿过透明/半透明表面时发生散射的照明现象,是指光从表面进入物体经过内部散射,然后又通过物体表面的其他顶点出射的光线传递过程
    • 效果:比 diffuse 还要平的效果(求被按扁了的效果)
  • metallic:金属性
  • specular:镜面反射的强度
  • specular Tint:镜面反射的颜色更偏向于白色(0)还是物体本身的颜色
  • roughness:粗糙程度
  • anisotropic:各向异性程度
  • sheen:天鹅绒的效果
    • 沿着法线长了很多绒毛,在 grazing angle 看过去会有一种雾化的效果
  • sheen Tint:sheen 的颜色是偏白还是物体本身的颜色
  • clearcoat:木板上刷一层清漆的效果
  • clearcoat Gloss:清漆的光滑程度(粗糙程度反一下)

Pros and Cons

  • 容易理解和使用
  • 表示能力很强大
  • 实现是开源的,很多实现是对基于物理材质的近似
  • 不是基于物理的
    • 牺牲了物理上的准确性
    • 学术界和工业界的不同
  • 参数空间很大
    • 表示能力很强
    • 可能有冗余
    • 难以学习和训练
  • 模型本身是拟合能量守恒的

NPR

  • 非真实感渲染
  • Non-Photorealistic Rendering (NPR)
  • 实时渲染中
    • NPR == fast and reliable stylization
    • 这也是神经网络不能够应用于 NPR 中的原因,可能不满足其中的某个因素

Photorealistic Rendering

  • 照片级真实感渲染
  • 正确的阴影、光照、几何、材质
  • 目标是渲染出更加真实的图片,达到照片级的效果
  • 左右,一半是渲染,一半是真实
    • 原作者记不清了,没有参考答案

NPR 目标

  • 目标是营造一种艺术效果

NPR 的思路

  • 从真实感渲染出发,将某些部分简化,将某些重要的部分加强
    • Starts from photorealistic rendering
    • Exploits abstraction
    • Strengthens important parts

NPR 的应用

  • art、visualization、instruction、education、entertainment
  • 艺术、可视化、说明书、教育(小孩子绘画)、娱乐
  • 说明书中非真实的图片可能更能够说明问题

  • 游戏应用
    • [Atelier Ryza 2: Lost Legends & the Secret Fairy]
  • 动漫
    • [Attack on Titan, Season 4]
    • 虽然是 NPR,同时保留了很多真实感渲染的部分

哪些地方需要做风格化

  • [Xenoblade Chronicles 2]
    • 焰、光

  • Borderlands 3

  • 描边:Bold contours(outlines)
  • 色块:Blocks of colors
  • 素描的效果:Strokes on surfaces

Outline Rendering

什么是边

  • outlines 不仅仅是 contours
    • [B]oundary / border edge:边界
    • [C]rease:折痕
    • [M]aterial edge:材质的连接
    • [S]ilhouette edge:轮廓
      • 在物体的外面一圈的轮廓上(2D 最外边的轮廓)
      • 得是多个面共享的边界
      • S 是 C 的子集

描边的思路

  • shading 方法来做
  • 修改几何
  • 后期图像处理

Shading 方法描边

  • 只能做 silhouette 的边
  • 对于封闭的物体,什么样的边是 silhouette 边呢?
    • 观察的方向和法线几乎垂直的边
    • grazing angle
  • 渲染的时候可以为夹角设置一个阈值 threshold
    • 域值越小,被认为是边缘的点越多,最终形成的边缘越粗

  • step:硬边界
  • smooth step:过渡的效果
问题
  • 不同位置的边的粗细不一致
    • 法线变换比较平滑的地方,边比较粗

Geometry 方法描边

  • Backface fattening
  • 把所有的背向面扩大一圈渲染成黑的,正向面正常渲染

Image 方法描边

  • 后期图像处理
  • Edge detection(边缘检测)
    • Sobel detector
  • 锐化操作:边界增强,找到边界,加回到原来的图上

  • 可以通过其他辅助图像找到边界
    • 法线、深度图

Color blocks

  • 色块效果
  • 下图:glossy、diffuse、color block

  • 实现方法
    • Hard shading:thresholding on shading
      • 正常计算 shading,对计算出来的结果进行一个阈值化
    • Posterization:thresholding on final image color
      • 在最终的图片上进行阈值化
  • 阈值化可以是多值化,也可以是二值化
    • Quantization(量化)

  • 在不同的部分(specular、diffuse)上使用不同的阈值化方法

Strokes Surface Stylization

  • 素描的效果

  • 什么是素描的效果?
    • 打格子
    • 密度:使用格子的密度表示明暗效果
    • 连续性:使用纹理代替点的计算,保证笔触的连续性
  • 设计几种不同密度的纹理
    • 我们希望在远处,不会变得越来越暗,导致全黑
    • 我们自己做一个 Mipmap,缩小之后不改变密度(相当于截取一部分)
  • Tonal art maps (TAMs)
    • Strokes of different densities
    • Each density has a MIPMAP

  • 一些其他方法

NPR 总结

  • NPR is art driven
  • 怎么把艺术家的需求转化为具体的渲染实现才是有趣/有挑战的
  • 多和艺术家交流
  • NPR 很多时候是 if...else...
    • 每个场景
    • 每个部分
  • NPR 做的好与不好,很大程度上取决于原来的 photorealistic rendering 做的好坏
    • Photorealistic models are super important in NPR
    • 艺术是真实的抽象
    • NPR 与 PR 不能被分开来看待
  • 例如:布料(cloth)