学习教程来自:【技术美术百人计划】图形 4.4 抗锯齿概论
笔记
1. 锯齿是怎么产生的
从几何着色器阶段到光栅化的过程中,产生的走样
2. 基本的抗锯齿
2.1 MSAA(Multisample Anti-aliasing)
增加采样点,再平均
![](https://i-blog.csdnimg.cn/blog_migrate/ff4aa21337ef06bfe752f2767d8beec8.png)
2.2 SSAA(Super Sample Anti-aliasing)
渲染4x或更高倍数,再下采样
3. 更多的抗锯齿
MSAA的衍生,时间消耗是其的多倍
3.1 TemporalAA(Temporal Anti-aliasing)
- 每帧采样一次,并继承了MSAA的偏移,当前帧平均前几帧的采样结果
- 使用motion vector保存帧之间的偏移,判断当前像素是不是具有前几帧的值,没有的话就不能平均(比如新出现的像素)
3.2 FXAA(Fast Approximate Anti-aliasing)
后处理的方式,利用卷积进行边缘检测、模糊,最后混合
3.3 以上速度排序
FXAA->TemporalAA->MSAA->SSAA
3.4 更多其他的抗锯齿
渲染方式 | 名称 |
---|---|
前向渲染 | SSAA、MSAA、CSAA、RGSS等 |
延迟渲染 | FXAA、MLAA、SMAA等 |
时间域上的抗锯齿 | TAA、TXAA |
基于深度学习的抗锯齿 | DLAA |
作业
1. 对比各个抗锯齿方案的优劣(从效果、效率2个方面)
2. 各个方案的真机测试
建议:尽量达到瓶颈状态下的测试
我测试了下SSAA FXAA,可能我是高通骁龙865的处理器,2个算法都在0.1ms左右完成了Anti aliasing,帧率上几乎没有变化
![](https://img-blog.csdnimg.cn/552180768c3b445c88fe0c98bee9b302.png)
![](https://img-blog.csdnimg.cn/333501dc27f94456b0a3988b05f6b968.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2m5Yqf6auY5by655qE55uy5YOn,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://i-blog.csdnimg.cn/blog_migrate/40fa6b2970f94965e3b157e7118e35bd.jpeg)
原理上看,SSAA确实平均了一些像素,而FXAA则让边界更加模糊了
![](https://img-blog.csdnimg.cn/cbc3b027f43c490c9a448b5e715c90d6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2m5Yqf6auY5by655qE55uy5YOn,size_20,color_FFFFFF,t_70,g_se,x_16)
针对我这个场景远看几乎是没有差别的,不过细节上还是有点差别的,比如SSAA只是单纯的增加了采样次数,会导致我的场景中的一些树枝连接不上了,而FXAA则会使得边缘更平滑,也不会造成中断的问题。
![](https://i-blog.csdnimg.cn/blog_migrate/437db2d0a3dc62aeda5bee750caf8cfe.png)
所以我这个场景可能更适合FXAA,这种抗锯齿的算法确实需要针对不同的场景进行一些调整,效果上的优劣要具体问题具体分析了
(目前的话只做了这2个算法的测试,以后碰到具体的情景再慢慢补充这部分吧)