Переглянути джерело

feat: 添加抗锯齿说明

NiceTry12138 7 місяців тому
батько
коміт
de172c2209

BIN
图形学/OpenGL学习/Image/042.png


BIN
图形学/OpenGL学习/Image/043.png


BIN
图形学/OpenGL学习/Image/044.png


BIN
图形学/OpenGL学习/Image/045.png


+ 30 - 0
图形学/OpenGL学习/OpenGLDemo.md

@@ -1168,4 +1168,34 @@ layout (location = 3) in mat4 aInstanceMatrix;
 
 这是因为 OpenGL 允许 **属性聚合**,当顶点属性是 `mat4` 时,OpenGL 会自动将其映射到连续的 4 个 `vec4` 属性
 
+### 抗锯齿
+
+超采样抗锯齿(Super Sample Anti-aliasing, SSAA)技术,通过比正常分辨率更高的分辨率(超采样)来渲染场景,当图像输出在帧缓冲中更新时,分辨率会被下采样(DownSample)至正常的分辨率。这些额外的分辨率会被用来防止锯齿边缘的产生,但是由于绘制更多的片段,会带来很大的性能开销
+
+#### 多重抗锯齿采样(MultiSample Anti-aliasing, MSAA)
+
+将屏幕理解为一个一个的像素格,每个像素的中心包含一个采样点,这个采样点被用来决定整个像素格的颜色
+
+| 三角形 | 渲染结果 |
+| --- | --- |
+| ![](Image/042.png) | ![](Image/043.png) |
+
+可以看到,一个采样点决定了整个像素格的颜色,最后导致的结果就是不光滑的边缘而显示的锯齿效果
+
+多重采样所作的就是将单一的采样点变为多个采样点(名称的由来)
+
+![](Image/044.png)
+
+> 采样点数量可以任意,更多更多采样点可以带来更精确的覆盖率
+
+注意,使用 MSAA 仅仅是几何处理计算量增加,着色计算并没有变化。相比之下 SSAA 几何和着色计算都成倍增加
+
+> 在几何处理阶段需要对每个采样点进行**覆盖测试**和**深度测试**,但是对每个像素只进行一次着色计算
+
+不过 MASS 也有一定的局限性,如果像素内不同采样点的颜色差异较大,最后的结果可能会出现误差,最后出现伪影(如锯齿状高光)
+
+MASS 并没有消除锯齿,而是通过插值计算的方法使得观察物体时较为平滑
+
+![](Image/045.png)
+