Games101学习笔记 Lecture 18: Advanced Topics in Rendering

发布于:2024-07-18 ⋅ 阅读:(148) ⋅ 点赞:(0)

一、高级光照传输

1.无偏方法 Unbiased

  • 无偏的蒙特卡洛积分得到的期望是真实值(无论多少次采样都是);有偏得到的期望值敛于真实值

①双向路径追踪 BDPT

  • 从相机和光源分别追踪路径(生成两条半路径),连接路径终点(将半路径端点连起来)
    在这里插入图片描述
  • 实现困难而且速度很慢

②蒙特卡洛光传输 MLT

  • 核心思想:构建一个马尔可夫链(统计采样工具)来生成一系列光线路径,并从中估计最终图像的颜色
  • 优势
    • 擅长处理困难的光路径(多次镜面反射和折射)
    • 无偏估计(渲染结果与真实场景的光照一致)
  • 缺点
    • 很难估计花费的时间——取决于场景的复杂度和初始路径的选择
    • 结果可能脏——存在噪声
    • 不适合实时渲染或者动画渲染

2.有偏方法 Biased

①光子映射 Photon Mapping

  • 由两部分组成:光子追踪(光源发射)和光子收集(相机发射)
a.光子追踪
  • 发射光子:从 光源 发射光子,并追踪光子的传播路径
  • 记录光子相交情况:当光子与场景中的漫反射表面相交时,将光子记录下来,并 存储其位置、能量和方向等信息
  • 光子存储结构:通常使用 K-D 树八叉树 等数据结构来存储光子,以便快速检索和查询
b.光子收集
  • 发射子路径:从 相机 发射 子路径,并追踪子路径的传播路径
  • 查找光子:当子路径与场景中的漫反射表面相交时,在光子存储结构中查找 距离交点最近的光子
  • 计算光照:根据找到的光子数量、能量和方向等信息,计算交点处的光照强度
  • 累积光照:将计算得到的光照强度 累积到最终图像中
c.局部密度估计
  • 假设:光子数量多的区域应该更亮
  • 方法:对于每个着色点,找到最近的 N 个光子,并计算这些光子覆盖的表面积
    在这里插入图片描述
  • 光照强度计算:根据找到的光子数量、能量和覆盖的表面积,计算着色点的光照强度
  • 通过局部密度估计,我们可以使用 有限数量的光子 来估计场景中每个像素的光照强度,从而 提高渲染效率

②Vertex Connection and Merging (VCM)

  • 结合了BDPT和Photon Mapping
  • 核心思想:利用 BDPT 生成的子路径,即使这些子路径的端点无法直接连接,也可以通过光子映射技术进行合并,从而提高渲染效率并改善图像质量

③Instant Radiosity (IR)

  • 核心思想:将光照表面视为光源,并使用虚拟点光源 (VPL) 来模拟光照效果

二、高级建模

1.非表面模型

①非散射介质 —— 烟雾、云层、水、空气

  • 当光线穿过 Participating Media 时,会 被介质中的颗粒或分子吸收和散射,导致光线强度减弱,并改变光线的传播方向
  • 渲染方法 :Participating Media 的渲染通常采用 蒙特卡洛方法,通过 随机选择光线传播方向和距离 来模拟光线的散射过程

②毛发

  • Kajiya-Kay 模型:
    • 基于光线追踪技术
    • 关注毛发的散射特性
  • Marschner 模型
    • 基于光线追踪技术
    • 更加详细地描述了毛发的结构,包括鳞片、皮质和髓质等
  • Medulla 髓质
    • 透明度:髓质层的大小和形状会影响头发的透明度(越大透明度越高)
    • 散射:髓质层的大小和形状会影响头发的透明度
  • Double Cylinder 模型
    • 基于光线追踪
    • 将头发纤维视为由两个圆柱体组成,外层圆柱体代表毛鳞片和皮质层,内层圆柱体代表髓质层
      在这里插入图片描述

③颗粒状材质 Granular Material

在这里插入图片描述

2.表面模型

①半透明材料

  • 玉、水母
  • 次表面散射 Surface Scattering —— BSSRDF
    在这里插入图片描述

②布料

  • 将布料渲染为 表面
    • 根据编织图案计算整体行为
    • 使用 BRDF 进行渲染
  • 将布料渲染为 非散射介质
    • 考虑单个纤维的性质和分布,将其作为参与介质进行渲染
    • 使用散射参数来模拟纤维对光线的影
  • 将布料渲染为 实际纤维
    • 明确渲染每根纤维
    • 需要较高的计算资源,但可以更真实地模拟布料的视觉效果

③细节模型

  • NDF:在微表面模型的BRDF中的法线分布函数

3.程序化

  • 使用算法而非纹理来创建物体表面的细节

优势

  • 无需纹理: 通过计算 噪声函数,可以生成复杂的细节,无需依赖预定义的纹理贴图
  • 3D 内部结构: 3D 噪声函数可以模拟物体内部的细节,例如切割或破碎后的内部结构
  • 复杂噪声函数:复杂的噪声函数可以生成更具真实感的细节