06 Rasterization (Antialiasing and Z-Buffering)
关键点
- 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. 闫令琪
本文来自博客园,作者:ETHERovo,转载请注明原文链接:https://www.cnblogs.com/etherovo/p/17318267.html