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 中作了很多预计算
- 通过优化方法计算
- \(F\) 变换到 Cosine 上
\[ \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:进入清漆之后打到木板上的反射
- 微表面模型模拟不了
- 多层材质
- 例子:刷了清漆的桌子
- 微表面模型表示不了所有的东西
- 例如 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
- 在最终的图片上进行阈值化
- Hard shading:thresholding on shading
- 阈值化可以是多值化,也可以是二值化
- 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)