MSAA、FXAA、SMAA、TXAA、MSAA

1,393 阅读3分钟

www.cnblogs.com/somedayLi/p…

请问FXAA、FSAA与MSAA有什么区别?效果和性能上哪个好? - 知乎 (zhihu.com)

Anti_aliaing 简称AA

SSAA(Super Sampling AA)

  • 4xSSAA举例子,假设最终屏幕输出的分辨率是800x600, 4xSSAA就会先渲染到一个分辨率1600x1200的buffer上,然后再直接把这个放大4倍的buffer下采样致800x600。这种做法在数学上是最完美的抗锯齿。但是劣势也很明显,光栅化和着色的计算负荷都比原来多了4倍,render target的大小也涨了4倍。

多重采样抗锯齿(MSAA)MultiSampling Anti-Aliasing

  • MSAA主要是对 Z-Buffer 和 Stencil Buffer(模板缓冲)进行SSAA处理
  • 原理是通过提取像素界面周围的颜色信息,通过混合颜色信息来消除锯齿
  • MSAA(Multi-Sampling AA)则很聪明的只是在光栅化阶段,判断一个三角形是否被像素覆盖的时候会计算多个覆盖样本(Coverage sample),但是在pixel shader着色阶段计算像素颜色的时候每个像素还是只计算一次。例如下图是4xMSAA,三角形只覆盖了4个coverage sample中的2个。所以这个三角形需要生成一个fragment在pixel shader里着色,只不过生成的fragment还是在像素中央(位置,法线等信息插值到像素中央)然后只运行一次pixel shader,最后得到的结果在resolve阶段会乘以0.5,因为这个三角形只cover了一半的sample。 image.png
  • MSAA的一个问题就是和现在大街小巷都是的deferred shading框架并不是那么兼容。因为用deferred shading的时候场景都先被光栅化到GBuffer上去了,不直接做shading。
  • 只对多边形的边缘进行抗锯齿处理。(2D很有效)
  • 缺点资源耗费,画质上有些不如一般的SSAA。

快速近似抗锯齿(FXAA) Fast Approximately

  • 理是通过提取像素界面周围的颜色信息,通过混合颜色信息来消除高对比界面所产生的锯齿。
  • FXAA将像素的提取和混合过程交由GPU 内的ALU(arithmetic and logic unit,算术逻辑单元)执行,所占用的显存带宽会 << 传统的MSAA。
  • 消耗低,速度快;但是是一种粗糙的模糊处理。

子像素增强抗锯齿(SMAA)Enhanced Subpixel Morphological

  • 性能消耗小,但是相比FXAA更清晰。
  • SMAA是后处理抗锯齿技术的一种。
  • 动态画面时,锯齿抖动厉害。

覆盖采样抗锯齿(CSAA)Coverage Sampling Anti-Aliasing

  • 原理是将边缘多边形里需要采样的子像素坐标覆盖掉,抒原像素坐标强制安置在硬件和驱动程序预告算好的坐标中。
  • 相比MSAA减少了带宽和存储开销。

时间性抗锯齿(TXAA)

  • TXAA 抗锯齿比 MSAA和FXAA 以及 CSAA 的画质更高,
  • 与CG电影中所采用的技术类似,TXAA集MSAA的强大功能与复杂的解析滤镜于一身,可呈现出更加平滑的图像效果,远远超越了所有同类技术。此外,TXAA还能够对帧之间的整个场景进行抖动采样,以减少闪烁情形,闪烁情形在技术上又称作时间性锯齿。