GAMES101第五、六课笔记 - 光栅化与反走样

这是本系列的第四篇笔记。由于第五课内容较少(课程视频课件),因此我将第六课(课程视频课件)也整合到了一起。

这两课的内容主要涉及光栅化、反走样。至于深度测试,实际上在第七课才完成讲解,我也整合到了本篇笔记当中。

采样 Sampling

最简单的采样方案

  • 判断像素中心点是否落在三角形之内
  • \(\textit{inside}(t, x, y) = \begin{cases}1, &\textit{Point(x, y) in Triangle(t)}\\0, &\textit{otherwise}\end{cases}\)
    • 如何判断落在三角形内?用第二课讲过的叉乘
    • 边界条件怎么处理?自行设定规则并从一而终
  • 几个优化方法:
    • 轴对齐包围盒 Axis Aligned Bounding Box (AABB) 可以大幅度减少计算量
    • (增量三角形遍历?)Incremental Triangle Traversal

反走样 Antialiasing

  • 采样理论
    •  走样的典型表现
      • 锯齿
      • 摩尔纹
      • Wagon Wheel Illusion (风扇反转等「假运动」)
    • 为什么会产生走样?信号变化过快,采样速率过慢
      • 怎么解决?
        • 提高采样率(增加屏幕分辨率)——不现实
        • 反走样
  • 反走样方案:采样前进行滤波(模糊化)
    • 理论基础:信号与系统
      • 模糊操作相当于用低通滤波将高频信息过滤掉
      • 如何理解图像的频域图
      • (大学期间没学过信号与系统,这部分就不继续整理了,不影响接下去的学习)
    • 实践中采用的方案:
      • 先应用一像素宽的滤波器进行卷积(算平均),然后再采样
        • 三角形的光栅化过程中,模糊的过程可以用覆盖面积来表示
          • 一种近似方案:超采样 (MSAA)
            • 对单个像素再进行划分,并用在三角形内的点数占比作为近似值
    • 其他反走样方案
      • FXAA (Fast Approximate Anti-Antialiasing)
      • TAA (Temporal Anti-Antialiasing)
      • DLSS (Deep Learning Super Sampling)
        • 似乎不属于反走样方案,先继续完成学习,后续再进行勘误
        • NVIDIA 的一项技术,用深度学习来做超采样
          • 相比于未开启 DLSS 可以提升约 85% 的帧率(数据来源:下文链接)
          • 简单了解之后,我觉得性能提升是因为有专门的 Tensor Core 去做硬件支持吧?
        • 官方介绍页(英文)
        • 刚推出了 DLSS 2.0

深度测试

  • 画家算法:先画远的,近的再覆盖掉远的
    • 需要对物体的深度进行排序 \(O(n\log n)\)
    • 存在无法处理的深度顺序问题
  • Z-Buffer
    • 思路:对每个像素,存储当前最近的 Z 值 \(O(n)\)
    • 与绘制顺序无关

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据