06 Rasterization (Antialiasing and Z-Buffering)

发布时间 2023-04-14 16:35:17作者: ETHERovo

关键点

  • MSAA/FXAA/TAA
  • Z-Buffering

1. Antialiasing 反走样

1.1 Sampling Artifacts

  • Jaggies
  • Moire Patterns 摩尔纹
  • Wagon Wheel Effect

1.2 Blurring(Pre-Filtering) 模糊

1.2.1 机理

做模糊处理是在进行低通滤波,相应的对采样频率的要求降低。
可知,不能再采样之后做模糊:

1.2.2 Average Pixel Value

使用卷积操作做平均来实现低通滤波,卷积核是一个像素大小;但是难以实现。

1.2.3 Multi Sample Antialiasing (MSAA)

  • Supersampling
    在一个像素内部放置多个采样点,然后判断采样点的内外信息,最终像素的值就是像素内部采样点值的平均值。
  • 一个需要注意的点是,MSAA是用来进行模糊的,并不意味着分辨率的增加。
  • 代价:计算量增加,但是会利用样本复用来降低影响。

1.2.4 Fast Approximate AA (FXAA)

先得到一个锯齿图,然后找到锯齿边界并换成无锯齿边界。

1.2.5 Temporal AA (TAA)

复用上一帧的像素值。

1.3 Super Resolution/Super Sampling 超分辨率

  • 另一个相似的概念。
  • 小图拉大之后,从低分辨率恢复高分辨率。
  • 深度学习

2. Visibility/Occusion -- Z-Buffering 深度缓存

2.1 画家逻辑

按照画家逻辑,将所有三角形由远到近排序,然后从远到近做投影;但是,在存在互相遮挡的情况下无法排序。

2.2 深度缓存

为此,引入深度缓存。(在此问题下,假设z代表像素到相机的深度,是一个正值,且近小远大

2.2.1 步骤

  • 对屏幕上的每个像素赋予一个属性“深度”,作为深度缓存,作为该像素目前被投影的最浅深度。
  • 为每一个三角形在屏幕上投影的像素也都赋予一个属性“深度”。
  • 初始化深度缓存为无穷大。
  • 遍历每一个三角形,遍历三角形投影的每一个像素,如果该深度比缓存值要小,则将其投影并更新缓存。

2.2.2 性质

  • O(n)
    因为没有进行排序,只是遍历。
  • 顺序无关
    两个浮点型的深度几乎不会相等,所以与顺序无关;当然,实际上可能会出现像素深度一致的情况。

来源

[1]Games101. 闫令琪