十八、高级渲染

18.1 高级光线传播

18.1.1 无偏 & 有偏 蒙特卡洛估计

  1. 无偏:不论样本数是多少,估计值的期望总是正确的
  2. 有偏:期望和正确值不一样;但是样本数足够多时,会收敛到正确值consistency
    1. 有偏 = 模糊
    2. 一致性 = 样本足够多时可以收敛到不模糊

18.1.2 双向路径追踪 BDPT

  1. 从光源、观察点开始,分别生成两个不同的半路径
  2. 将半路径的端点连起来
  3. 缺点:渲染速度慢

image-20230330220720680

对于间接光较多的场景,双向路径追踪效果更好

image-20230330220814339

18.1.3 Metropolis光线传播 MLT

  1. 用马尔科夫链进行采样
    1. 马尔科夫链:当前有一个样本,返回一个与之接近的样本
    2. 优点:可以生成一个样本分布与与任意函数形状一致的PDF
  2. 给任意一个路径,可以生成与之相似的路径:是一个局部的方法

image-20230330221257024

适用于做困难的路径传播,因为可以由一条较好的路径开始,找到更多的路径

image-20230330221447583

缺点:

  1. 难以在理论上计算收敛的速度
  2. 所有操作都是局部的,有的像素快,有的像素满,会很"脏"
  3. 难以用于动画的渲染

image-20230330222050918

18.1.4 光子映射 Photon Mapping

  1. 适用于渲染SDS(Specular-Diffuse-Specular)路径、生成caustics

    1. caustics:由于光线的聚焦产生的非常强的高亮图案

    image-20230330222033557

  2. 分为两步:

    1. 从光源开始,辐射光子,直到光子打到diffuse表面,将结果记录下来
    2. 从摄像机开始,发射半路径,直到路径打到diffuse表面上
    3. 计算局部密度估计 local density estimation:
      1. 对任何一个着色点,取最近的n个光子,计算这n个光子占据的面积,计算其密度
      2. n较少时,噪声大;n较大时,会模糊
  3. 有偏估计:

    1. 因为dN / dA != ΔN / ΔA,只有ΔA很小时才接近dA
    2. 光子越多,找n个光子占据的面积越小,就更接近正确结果
    3. 不能确定ΔA,增加光子,因为ΔA永远不会接近dA

18.1.5 Vertex Connection and Merging

  1. 将BDPT和光子映射结合起来
  2. 使用BDPT生成两段sub-path
  3. 如果有两段sub-path的终点非常接近,则使用光子映射计算其贡献

image-20230330223206732

18.1.6 实时辐射度 Instant Radiosity

  1. 已经被照亮的地方,认为是光源,照亮别的地方
    1. 从光源开始发射sub-path,停在某些地方,形成新的光源VPL(Virtual Point Light)
    2. 用新的光源照亮着色点
  2. 优点:快,并且效果较好
  3. 缺点:
    1. 在缝隙处会出现问题
    2. 不能做glossy物体

image-20230330223358225

18.2 高级外观建模

外观 == 材质 == BRDF

18.2.1 非表面模型:云、 烟、雾等

Participating Media:参与介质

image-20230330224145788

Phase Function:相位函数,规定光线如何散射

image-20230330224250395

image-20230330224330452

18.2.2 头发表面

会有两种高光:有色、无色

Kajiya-Kay模型:光线打到圆柱上,会反射为圆锥

image-20230330224648071

Marschner模型:光线打到圆柱上,一部分会反射为圆锥,一部分会穿进去

  1. R:直接反射
  2. TT:穿进头发,然后再穿出来
  3. TRT:穿进头发,发生反射,然后再穿出来
  4. 定义光线和一根圆柱如何作用:R、TT、TRT
  5. 根据光线传播,计算和多个头发的作用

image-20230330224739393

image-20230330225204954

Double Cylinder Model:增加一个圆柱,模拟髓质

image-20230330225312464

image-20230330225323075

18.2.3 颗粒材质:Granular

  1. 由很多小石子构成的模型

    image-20230330225609403

    image-20230330225635165

18.2.4 表面模型:次表面散射 BSSRDF

Translucent:光线从一个点进入表面,在物体内发生了一系列散射,然后再从另一个点钻出表面

image-20230330225827858

image-20230330225950269

Dipole近似:在物体上下添加两个光源,模拟次表面反射的效果

image-20230330230124438

18.2.5 布料

布料的定义

  1. 纤维的集合 fiber
  2. 纤维缠绕,可以得到不同的股 Ply
  3. 股绕在一起,可以得到线 Yarn
  4. 线织成布 cloth

image-20230330230502109

将布料当作物体表面,使用BRDF渲染

image-20230330230747552

将布料划分为很小的块,作为散射介质渲染

image-20230330230632698

将布料划分为很多个线,类似头发模型渲染

image-20230330230810766

18.3 通过修改微表面法线分布,得到不同的效果

image-20230330231505492

image-20230330231516015

18.3.1 对一个区域内的微表面进行积分

image-20230330231534136

image-20230330231544316

image-20230330231601075

image-20230330231611914

18.3.2 波动光学与几何光学得到的NDF

image-20230330231719561

18.4 程序化生成表面

  1. 定义在空间中的函数,可以在使用的时候,查询空间中的某个点的值,而不是将三维纹理存储下来,噪声函数

image-20230330231937462