各种抗锯齿效果的记录

Posted 勤劳搬砖工

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种抗锯齿效果的记录相关的知识,希望对你有一定的参考价值。

抗锯齿介绍

SSAA :超级采样抗锯齿

描述

最早期的全屏抗锯齿,方法简单直接,

超级采样抗锯齿就是把当前分辨率成倍提高(如当前分辨率为1024×768,开启2倍的SSAA后,画面放大到2048×1536),然后再把画缩放到当前的显示器上。这样的做法实际上就是在显示尺寸不变的情况提高分辨率,让单个像素变得极小,这样就能够大幅减轻画面的锯齿感了。不过是由于对整个显示画面的放大,因此它消耗的显示资源也是非常大的。

大致过程为:首先,图像创建到一个分离的缓冲区,缓冲区图像分辨率高于屏幕分辨率,假设是2*1(或2x),那么缓冲区场景的水平尺寸比屏幕分辨率高两倍,若是2*2(或4x)抗锯齿,缓冲区图像的水平和垂直均比显示图像大两倍。像素计算加倍之后,选取2个或4个邻近像素,此过程称为采样。把这些采样混合起来后,生成的最终像素,拥有邻近像素的特征,那么像素与像素之间的过渡色彩,就变得更为近似,整个图像的色彩过渡趋于平滑。再把最终像素输出到帧缓冲,作为一幅图像存储起来,然后发到显示器,显示出一帧画面。每帧都进行抗锯齿处理,游戏过程中的所有画面都变得带有抗锯齿效果了。

优点

方法简单直接

缺点

消耗的显示资源非常大

参考

超级采样抗锯齿_百度百科 (baidu.com)

MSAA :多重采样抗锯齿

描述

一种特殊的超级采样抗锯齿(SSAA)。

来自于OpenGL。具体是MSAA只对Z缓存( Z-Buffer)和模板缓存(Stencil Buffer)中的数据进行超级采样抗锯齿的处理。可以简单理解为只对多边形的边缘进行抗锯齿处理。这样的话,相比SSAA对画面中所有数据进行处理,MSAA对资源的消耗需求大幅减少,不过在画质上可能稍有不如SSAA

优点

效果好,还原度很高

缺点

会额外消耗大量内存和带宽,

  1. 对于延迟渲染来说,GBuffer 本身就已经很大了,如果再使用 MSAA,额外的带宽消耗极大,
  2. 对于硬件来说,MSAA 对硬件的利用率很低,因为很多时候我们想要抗锯齿的部分,都只是在物体边缘或者高光变化的高频部分。其他颜色不怎么变化,比较低频的地方,其实是不需要抗锯齿效果的。使用 MSAA 进行大量物体的渲染时,很多带宽是被浪费的
  3. MSAA 是一种比较经典,但是目前显得略有些过时的抗锯齿方式。

参考

主流抗锯齿方案详解(一)MSAA - 知乎 (zhihu.com)

MSAA(多重采样抗锯齿)_百度百科 (baidu.com)

TXAA :时间性抗锯齿

描述

TXAA 是一种全新的电影风格抗锯齿技术,旨在减少时间性锯齿 (运动中的蠕动和闪烁)。 该技术集时间性过滤器、硬件抗锯齿以及定制的 CG 电影式抗锯齿解算法于一身。 要过滤屏幕上任意特定的像素,TXAA 需要使用像素内部和外部的采样以及之前帧中的采样,以便提供最高画质的过滤。 TXAA 在标准 2xMSAA 和 4xMSAA 的基础上改进了时间性过滤。 例如,在栅栏或植物上以及在运动画面中,TXAA 已经开始接近、有时甚至超过了其它高端专业抗锯齿算法的画质。TXAA 由于采用更高画质的过滤,因而与传统 MSAA 较低画质的过滤相比,图像更加柔和。

TXAA 将 MSAA 的强大能力与类似 CG 电影中复杂的解算过滤器相结合,因而生成的图像远比其它技术更加光滑。根据特定游戏中所实施的不同着色类型,TXAA 对性能的影响也略有不同。与 FXAA 等牺牲画质以换取最高性能的方法相比,TXAA 则是以牺牲性能来换取最高画质。 对于那些寻求最高画质抗锯齿效果和最高效性能的玩家来说,TXAA 是一个更好的选项。它可以让「刺客信条 3 (Assassin's Creed III)」和「使命召唤: 黑色行动 2 (Call of Duty: Black Ops 2)」等游戏的视觉效果无比出色。

优点

基于SSAA进行的优化 效果相对于FXAA 比较好。

缺点

注: 只有 NVIDIA® Kepler™ GPU 才支持 TXAA,而且玩家需要使用 GTX 600 系列或更高型号的显卡才能在游戏图形选项中启用这一特性。 如果你的系统未达到启用 TXAA 所需的要求,那么该选项会处于隐藏状态。 在静态屏幕截图中无法正确观察到 TXAA 的效果,只有在运动场景中才能观察到。

参考

TXAA | 技术 | GeForce (nvidia.cn)

TAA :时间性抗锯齿(THREEJS)

描述

TAA的原理和 SSAA 大致相同,都是每个像素点有多个采样点。但是不同与 SSAA 的方式,TAA (Temporal Anti-Aliasing) 综合历史帧的数据来实现抗锯齿,这样会将每个像素点的多次采样均摊到多个帧中,相对的开销要小得多。

优点

基于SSAA进行的优化 效果相对于FXAA 比较好。

缺点

相对于SSAA的开销要小,但是仍然比较吃内存

参考

主流抗锯齿方案详解(二)TAA - 知乎 (zhihu.com)

注意

threejs的 taaRenderPass 使用的时候 必须要在canvas的父级元素上面添加background-color(建议为黑色)

FXAA :快速近似抗锯齿

描述

传统MSAA(多重采样抗锯齿)效果的一种高性能近似值。它是一种单程像素着色器,和MLAA一样运行于目标游戏渲染管线的后期处理阶段,但不像后者那样使用DirectCompute,而只是单纯的后期处理着色器,不依赖于任何GPU计算API。正因为如此,FXAA技术对显卡没有特殊要求,完全兼容NVIDIA、AMD的不同显卡(MLAA仅支持A卡)和DirectX 9.0、DirectX 10、DirectX 11

优点

快速近似抗锯齿,消耗最低,低配置开这种抗锯齿不卡,

缺点

一种粗糙的模糊化处理, 影响清晰度

参考

主流抗锯齿方案详解(三)FXAA - 知乎 (zhihu.com)

SMAA :子像素增强抗锯齿

描述

SMAA是性耗比最佳的模式,用适量的资源得到比较满意的抗锯齿效果,FXAA和SMAA一样性能损失小,效果都一般,毕竟后处理抗锯齿,清晰度上都有所损失,SMAA较FXAA清晰些。致命的弱点在于锯齿抖动方面,别看它们的效果截图看着都不错,甚至比肩MSAA,但是一旦是实际玩,也就是动态画面,锯齿抖动就非常明显时间和空间两方面交替使用抗锯齿采样格式,4xMFAA 的性能代价仅相当于 2xMSAA,但是抗锯齿效果却与 4xMSAA相当

MSAA 是通过添加次像素点,来实现抗锯齿效果,需要消耗额外的内存

优点

类似FXAA的滤镜类抗锯齿。性能损耗小,效果一般,影响清晰度

缺点

动态画面中,锯齿抖动明显,需要额外消耗内存

参考

抗锯齿是什么意思?FXAA、SMAA、MSAA、TXAA等抗锯齿之间的区别 (tinyb.cn)

CSAA :覆盖采样抗锯齿

描述

是nVidia在G80及其衍生产品首次推向实用化的AA技术,也是目前nVidia GeForce 8/9/G200系列独享的AA技术。CSAA就是在MSAA基础上更进一步的节省显存使用量及带宽,简单说CSAA就是将边缘多边形里需要取样的子像素坐标覆盖掉,把原像素坐标强制安置在硬件和驱动程序预先算好的坐标中。这就好比取样标准统一的MSAA,能够最高效率的执行边缘取样,效能提升非常的显著。比方说16xCSAA取样性能下降幅度仅比4xMSAA略高一点,处理效果却几乎和8xMSAA一样。8xCSAA有着4xMSAA的处理效果,性能消耗却和2xMSAA相同。

优点

在MSAA基础上效能提升明显,性能消耗减半

缺点

Vidia GeForce 8/9/G200系列独享的AA技术

参考

抗锯齿是什么意思?FXAA、SMAA、MSAA、TXAA等抗锯齿之间的区别 (tinyb.cn)

CFAA :可编程过滤抗锯齿

描述

起源于AMD-ATI的R600家庭。简单地说CFAA就是扩大取样面积的MSAA,比方说之前的MSAA是严格选取物体边缘像素进行缩放的,而CFAA则可以通过驱动和谐灵活地选择对影响锯齿效果较大的像素进行缩放,以较少的性能牺牲换取平滑效果。显卡资源占用也比较小

优点

待补充

缺点

待补充

参考

抗锯齿是什么意思?FXAA、SMAA、MSAA、TXAA等抗锯齿之间的区别 (tinyb.cn)

MFAA :多帧采样抗锯齿

描述

NVIDIA(英伟达)根据MSAA改进出的一种抗锯齿技术。目前只有使用 Maxwell 架构GPU的显卡才可以使用。在 Maxwell 上,英伟达推出了用于光栅化的可编程采样位置,它们被存储在随机存取存储器 (RAM) 中。如此一来便为更灵活、更创新的全新抗锯齿技术创造了机会,这类抗锯齿技术能够独特地解决现代游戏引擎所带来的难题,例如高画质抗锯齿对性能的更高要求。只要在NVIDIA控制面板里为程序开启MFAA并在游戏中选择MSAA就可以开启。画面表现明显强于同级别的MSAA,这种全新抗锯齿技术在提升边缘画质的同时能够将性能代价降至最低。

优点

待补充

缺点

目前只有使用 Maxwell 架构GPU的显卡才可以使用

参考

抗锯齿是什么意思?FXAA、SMAA、MSAA、TXAA等抗锯齿之间的区别 (tinyb.cn)

总结

FXAA:快速,效果差但还看得过去,吃资源少,开不开一般反响不大

MSAA:比FXAA更好但更吃资源,低配显卡一般开不到这个程度

SSAA:更吃资源,

TXAA:NVIDIA的技术,开了之后如果处于动态,锯齿消除的效果很明显,如果不动,那么可以看到很多锯齿。吃资源的水平比MSAA 4X稍低

以上是关于各种抗锯齿效果的记录的主要内容,如果未能解决你的问题,请参考以下文章

emWin6.x抗锯齿

手机端页面:抗锯齿和快速滚动和回弹效果

SDL2 OpenGL 抗锯齿没有效果

unity抗锯齿(Antialiasing)

基于图片的抗锯齿方法

画布中的抗锯齿大文本