0%

GAMES101——Ray Tracing

本文章是关于GAMES101课程的笔记。

课程链接:GAMES101-现代计算机图形学入门-闫令琪

一、影子映射(Shadow Mapping)

算法核心: 光源估计深度与相机重映射的深度是否相等?

image-20231220215733008

image-20231220215743193

存在问题:

  • 硬阴影(仅限点光源)
  • 质量取决于阴影图分辨率(基于图像的技术的一般问题)
  • 涉及浮点深度值的相等比较意味着规模、偏差、容差问题

硬阴影与软阴影:

image-20231220215936776

二、光线投射(Ray Casting)

  1. 提出:

    • 通过每个像素投射一条光线来生成图像
    • 通过向光源发射光线来检查阴影
  2. 针孔模型:

    image-20231223161014038

    image-20231223161032437

    image-20231223161052489

三、光线-表面相交(Ray-Surface Intersection)

  1. 射线等式:

    image-20231223161258639

  2. 射线与平面相交:

    image-20231223161433887

  3. Moller Trumbore 算法: 加速射线与平面相交的计算。

    image-20231223161516567

四、加速射线-平面相交计算

  1. Bounding Volumes:

    • 物体完全包含在体积中;
    • 若没有击中体积,则没有击中物体;
    • 先测试是否击中体积,再测试物体是否击中

    image-20231223161821380

  2. AABB: Axis-Aligned Bounding Box:

    • 射线仅在进入所有板对时才进入盒子
    • 只要光线离开任意板对,则它就是离开了盒子
    • 对于三维盒子,则 $t_{enter}=\max\{\mathrm{t_{min}}\},\mathrm{t_{exit}}=\min\{\mathrm{t_{max}}\}$ ;
    • 当且仅当 $t_{\mathrm{enter}}=0$ 时,AABB成立

    image-20231223162512095

  3. AABB 的优势: 加速计算

    image-20231223162632056

五、AABB加速光线追踪

  1. Grids:统一空间分割:

    image-20231223162929798

  2. Grids 存在的问题:

    • Grids 适用于大小和空间均匀分布的大型对象集合
    • 大量空白区域使用 Grids 会造成资源浪费
  3. 空间分割:

    image-20231223163152996

  4. KD-Tree:

    • 内部节点存储
      • 分割轴:x、y 或 z 轴
      • 分割位置:分割平面沿轴的坐标
      • 子节点:指向子节点的指针
      • 内部节点中不存储任何对象
    • 叶子节点存储
      • 对象列表

    image-20231223163430625

  5. 物体分割——Bounding Volume Hierarchy(BVH):

    • 查找边界框
    • 递归地将对象集拆分成两个子集
    • 重新计算子集的边界框
    • 必要时停止
    • 在每个叶子节点存储对象

    image-20231223163931669

  6. 空间划分 vs 物体划分:

    • 空间:
      • 将空间划分为不重叠的区域
      • 一个对象可以包含在多个区域中
    • 物体:
      • 将对象集划分为不相交的子集
      • 每组的边界框可能在空间上重叠

    image-20231223164303114

六、辐射度量学(Radiometry)

  1. 基本名词解释:

    • Radiant flux:光度量的功率

      image-20231223164614751

    • Radiant Intensity:单位立体角(Solid angle)上的功率

      image-20231223164730096

    • Solid Angle:立体角,球体所对面积与半径平方之比,积分和为 $4\pi$

      image-20231223164943833

    • Irradiance:入射到表面点上的每单位面积的功率

      image-20231224211102605

    • Radiance:每单位立体角、每单位投影面积发射、反射、传播或接收的功率

      image-20231224211350025

    • 联系:

      image-20231224211503860

    • Incident Radiance:到达表面的每单位立体角的 Irradiance

      image-20231224211914054

    • Exiting Radiance:离开表面的每单位投影面积的 Intensity

      image-20231224212144021

    1. Irradiance vs. Radiance

      image-20231224212727547

七、双向反射率分布函数(Bidirectional Reflectance Distribution Function )

  1. 定义: 表示有多少光从每个入射方向反射到每个出射方向 $w_r$

    image-20231224213203379

    image-20231224213229115

  2. 渲染方程:

    image-20231224213317014

  3. 通过渲染方程得到全局光照:

    image-20231224213413160

  4. 光线追踪与折射: 光线追踪最终可以拆解为光源发射和多次折射光的累加

    image-20231224213825450

    八、蒙特卡洛积分(Monte Carlo Integration)

  1. 意义: 对于一个复杂函数较难得到其积分,故采用蒙特卡洛的随机性近似得到复杂函数的积分。

  2. 求解: 取随机采样的积分的平均值。

    image-20231228110012849

    image-20231228110026597

九、路径追踪(Path Tracing)

  1. Ray Tracing 的局限性:

    1. 始终执行镜面反射或折射;
    2. 在漫反射表面停止。
  2. 路径追综于蒙特卡洛积分 : 路径追踪可以看成某个半球内的所有光线对某一出射方向的积分和,但该积分较难求得解析解,故此时可以使用蒙特卡洛积分进行近似求解。

    image-20231228110533218

  3. 直接光照的路径追踪:

    image-20231228110702397

    image-20231228110724044

  4. 引入全局光照: 对于经过一次或多次折射的光线,可以以入射点反向观测,直至形成新的直接光照。

    image-20231228110920467

  5. 全局光照的指数爆炸问题: 到达入射点的光线可以是无限多,若每一条光线进行反向传播则会导致指数爆炸,计算量过大。

    image-20231228111046036

  6. 俄罗斯轮盘赌(Russian Roulette,RR):

    image-20231228111218893

  7. RR 解决指数爆炸问题:

    image-20231228111553069

  8. 对光源采样: 某一被观测点,其“打中”光源所需的射线会由于光源大小而产生不同,此时如果对光源位置进行采样,则可以避免资源的浪费。

    image-20231228121633524

  9. 光源采样模型: 将对半球的积分转移到对光源到半球某一面积上的积分。

    image-20231228121743334

    image-20231228121757385

  10. 最终采样模型:

    1. 光源(无需使用RR)
    2. 间接反射(需要RR)

    image-20231228121904776

  11. 直接光源是否被遮挡: 对光线进行采样积分时先检测光源与入射点之间是否存在遮挡关系。

    image-20231228122025298