Games101-P18 Advanced Topics in Rendering

  • P18 Preview
    • Advanced Light Transport: 截屏2023-05-08 13.32.40A
    • Advanced Appearance Modeling: 截屏2023-05-08 18.54.53

P18 Advanced Topics in Rendering

Advanced Light Transport

  • 概述
    • 截屏2023-05-08 13.32.40
    • Unbiased 无偏的

Biased vs. Unbiased Monte Carlo Estimators

  • 对比
    • Unbiased 无偏:无论使用多少样本,无偏估计量的期望值总是正确
    • 否则,为Biased有偏的(一种特殊情况,样本数无限多,期望值收敛于正确的值,这种情况称作consistent)

Bidirectional Path Tracing (BDPT)

跟踪来自照相机和光线的子路径,从两个子路径中连接端点

截屏2023-05-08 13.50.19

  • 应用场景:在光源由漫反射形成的场景中效果较好
    • 从相机出发的光线若为漫反射,则不容易达到光源处,因而BDPT效果会好
    • 截屏2023-05-08 13.55.09

Metropolis Light Transport (MLT)

  • 思想:利用统计学采样工具“马尔可夫链” + 蒙特卡洛积分,生成与被积分函数形状一致的函数为PDF进行采样(当PDF函数和被采样函数形状一致时,采样方差最小)

  • 局部的操作,采样(产生路径)时,通过一定的概率扰动路径的传播,以已有路径作为种子,生成与已有路径相似的路径

  • 截屏2023-05-08 14.05.38
  • 优:适用于光线复杂的场景

    • 截屏2023-05-08 14.14.44
  • 劣:难以理论分析收敛(渲染完成的)速度;画面效果可能比较脏

    • 截屏2023-05-08 14.20.35

Photon Mapping 光子映射

解释参考知乎:光子映射总结(1/4):基本全局光子映射(Basic Photon Mapping)

适用于caustics

截屏2023-05-08 14.21.49

  • 步骤
    • STEP1: 光线向各个方向出射光子,进行反射/折射,直到打到Diffuse的表面才停止(构建一张光子图,存储从光源发射的所有光子的通量信息)
    • STEP2: 从相机出发,进行反射/折射,直到打到Diffuse的表面才停止(从相机出发,进行传统的路径追踪(path tracing),在追踪到漫反射表面的时候,统计附近的光子信息,并根据这些信息计算出最终的辐射率(radiance))
    • STEP3: 局部密度估算
      • 想法:有更多光子的区域应该会更亮
      • 对于每个着色点,找到最近的 $N$ 个光子。取这 $N$ 个光子所占的表面积 $S$
      • 计算密度($N/S$)
    • 截屏2023-05-08 14.34.46
  • 问题:光子数少,Noise明显;光子数大,画面模糊
  • Why biased?
    • 截屏2023-05-08 14.40.22
    • But consistent: 射出光子无限多,无限趋向于真实

Vertex Connection and Merging (VCM)

  • 是BDPT和光子映射的结合
    • 两端使用BDPT后,对邻近的断点使用光子映射
  • 电影制作中广泛应用

截屏2023-05-08 18.31.04

Instant Radiosity (IR) 实时辐射度算法

  • 思想
    • 认为已经被照亮的面,都是光源
    • 针对一个着色点,认为其被其他“光源”照亮——利用直接光照的方法,获取间接光照的结果
  • 截屏2023-05-08 18.41.02
  • 优劣
    • 优:fast and usually gives good results on diffuse scenes
      • 缝隙处出现亮点(原因:对渲染方程的积分换元时,从换成 $d\omega$ 光源面积 $dA$ ,分母出现 $|x’ - x|^2$ 。因此两点间距离极小时, $L_o$ 极大)
      • 做不出glossy
    • 截屏2023-05-08 18.52.15

Advanced Appearance Modeling

  • 概述
    • 截屏2023-05-08 18.54.53

Non-Surface Models

Participating Media 散射介质

  • 举例:雾(有体积,不局限于表面)

    • 截屏2023-05-12 22.13.17
    • 光可以穿过很多物体,不仅仅是雾这类,只是穿过不久会消失(次表面散射
      • 如,光穿过手:截屏2023-05-12 22.13.36
  • 光在行进过程中,穿过散射介质时,会发生吸收、散射

    • 截屏2023-05-08 18.59.12
  • Phase Function 相位函数:决定光线如何散射的函数(类比BRDF,决定光线如何反射)
    • 截屏2023-05-08 19.01.01
  • Rendering
    • 截屏2023-05-12 22.10.03

Hair Appearance

描述光线如何和一根曲线作用(写实)

Kajiya-Kay Model
  • 截屏2023-05-12 22.19.59
  • 截屏2023-05-12 22.20.31
Marschner Model —— 广泛应用
  • R:表示反射
  • T:表示折射
    • TT:两次折射穿出表面
    • TRT:头发内反射一次后,再折射出去
  • 截屏2023-05-12 22.22.02
  • 将毛发看作玻璃柱
    • 截屏2023-05-12 22.25.19
  • 截屏2023-05-12 22.27.12

  • Human Hair vs Animal Fur

    • 动物毛发髓质部分所占体积大,导致光线在毛发内更易发生散射
    • 截屏2023-05-12 22.42.57

Granular Material 颗粒材质

  • 渲染耗时长
  • 截屏2023-05-16 19.44.22

Surface Models

Translucent Material

  • 概念:光进入物体表面后,在内部会发生吸收、散射,改变传播方向,最终射出(举例:人体皮肤、玉石、水母)
  • Subsurface Scattering
    • 截屏2023-05-16 19.58.51
  • Scattering Functions
    • BSSRDF(对BRDF的延伸):不仅需考虑该点入射光的贡献,还需考虑周围其它点对该点的贡献。对方向和面积都需要进行积分
    • 截屏2023-05-16 20.09.54
    • IMG_3434
  • Dipole Approximation(一种对次表面散射的模拟方法)
    • 近似为,材质里面一个
    • 截屏2023-05-16 20.10.54

Cloth

  • 布料:Fiber纤维 ➡️ Ply股 ➡️ Yarn线

    • 截屏2023-05-16 21.01.51
  • Rendering

    • Render as Surface:当成整个表面渲染(BRDF,存在各向异性的局限性)

      • 截屏2023-05-16 21.08.35
    • Render as Participating Media:微观层面,将布料当成反射介质(计算量大)

      • 截屏2023-05-16 21.13.53
    • Render as Actual Fibers:渲染每一根纤维(计算量大)
      • 截屏2023-05-16 21.17.31

Detailed Appearance:

  • 更贴近真实世界:划痕
    • 截屏2023-05-16 21.23.16
  • Recap: Microfacet BRDF
    • $D(h)$ 为法线分布截屏2023-05-16 21.28.27
    • $D(h)$ 法线分布过于光滑时,无法模拟细节截屏2023-05-16 21.29.08
  • 法线分布不同的结果
    • IMG_3437
    • 截屏2023-05-16 21.38.42
  • Problem & Solution
    • Difficult path sampling problem
      • 每一个微表面都发生镜面反射,Path Tracing光线很难打到光源处截屏2023-05-16 21.35.04
    • Solution: BRDF over a pixel
      • 考虑一个像素覆盖很多微表面,计算覆盖范围内微表面的法线分布截屏2023-05-16 21.37.29

Recent Trend: Wave Optics 波动光学

  • 光的波动性——干涉、衍射截屏2023-05-17 15.28.01截屏2023-05-17 15.28.43

Procedural Appearance 程序化生成

  • 使用3D Noise函数定义三维纹理(如Perlin Noise;用于树木年轮等;切面纹理可见)
    • 截屏2023-05-17 17.17.27截屏2023-05-17 17.19.16