Unity-抗锯齿方案介绍

文章目录[x]
  1. 0.1:一、Unity中常用的抗锯齿方案
  2. 0.2:二、实现抗锯齿的两种思路
  3. 0.3:三、MSAA
  4. 0.4:四、FXAA
  5. 0.5:五、TAA
  6. 0.6:六、SMAA

一、Unity中常用的抗锯齿方案

1.MSAA-----多重采样抗锯齿----MultiSampling Anti-Aliasing

2.FXAA-----快速近似抗锯齿----Fast Approximate Anti-Aliasing

3.SMAA----亚像素形态抗锯齿----Subpixel Morphological Anti-Aliasing

4.TAA------时间性抗锯齿----Temporal AA(TXAA,TSMAA,TSSAA)

二、实现抗锯齿的两种思路

第一种思路自然就是在每个像素中进行多次采样,然后根据多次采样的结果综合来计算像素的颜色值。使用这种方式来实现的抗锯齿技术有MSAA,TAA。

第二种思路是通过后处理的方式,寻找屏幕中的像素块边界,然后根据边界的信息,将两侧的像素点颜色进行插值,这样就会得到平滑过渡的边缘,实现抗锯齿的效果。使用这种方式来实现的抗锯齿技术有FXAA,SMAA。

这四种抗锯齿技术是目前最主流、最常见的抗锯齿技术方案。

三、MSAA

MSAA基本上只对画面中物体的边缘进行放大、混合的抗锯操作,因为边缘是锯齿最明显的地方(注意不是所有的边缘)。在光栅化阶段,判断一个三角形是否被像素覆盖的时候会计算多个覆盖样本,但是在pixel shader着色阶段计算像素颜色的时候每个像素还是只计算一次。Unity自带的设置中的2倍、4倍、8倍就是MSAA。

优点:使用起来简单方便,抗锯齿效果非常好。

缺点:会额外消耗大量内存和带宽,特别是对于延迟渲染来说,GBuffer 本身就已经很大了,如果再使用 MSAA,额外的带宽消耗极大。因此延迟渲染一般不会使用 MSAA来作为实现抗锯齿手段。而目前大部分 PC 端游戏都是基于延迟渲染管线的,包括Unity 的 HDRP ,所以 PC 游戏一般不会使用 MSAA。

四、FXAA

FXAA是屏幕后处理的边缘模糊技术。但是和MSAA不同,MSAA提边缘是在图形管线的前段(跟深度有关)。FXAA是种后处理技术,后处理技术一般在画面完成后,通过像素颜色检测边缘(色彩差异太大时,不是边缘也被认为成边缘,精度有问题)。后处理技术一般没倍数概念,因为不存在放大。效果上FXAA接近MSAA的4倍效果,但在一些细节上会比4倍MSAA差一点。

FXAA 的优点就是集成比较方便,只需要一个 Pass 来实现抗锯齿,同时提供了两个版本,可根据情况灵活选用,是目前手机上的最常用的抗锯齿方式。

FXAA的缺点是画面会略微有些模糊。而且由于FXAA是基于后处理判断边界来实现的,因此没有次像素特性,在光照高频(颜色变化很快)的地方会不稳定。单独看静态的场景没有问题,但是移动摄影机时,就会导致一些闪烁。

五、TAA

TAA是目前业内游戏最广泛的抗锯齿。使用运动矢量组合两帧,以确定在何处对前一帧进行采样。在每一帧对屏幕区域内的像素进行一个抖动操作,这样当连续的多个帧的数据混合起来以后,就相当于对每个像素进行了多次采样,他将采样点从单帧分布到多个帧上,使得每一帧并不需要多次采样增加计算量,但TAA往往会盲目地跟随移动物体的运动矢量,从而造成屏幕上的细节模糊不清。

因为 TAA 本质上是和 SSAA 类似的原理,所以完全不会有后处理抗锯齿的次像素问题,AA效果可以和 MSAA 相当。由于 MSAA 在延迟渲染管线中无法使用,且使用 Motion Vector 也和延迟渲染比较契合,因此在 Unreal 引擎的带领下,TAA 目前也逐渐成为现代 3A游戏的标配。

当然其缺点也比较明显,虽然 TAA 实现的原理并不复杂,但是和渲染管线关系密切,需要改动的地方较多。可以说是牵一发而动全身,对于其他的每一项渲染功能,都需要考虑 TAA 的影响。

六、SMAA

SMAA是类似FXAA的滤镜类抗锯齿,性能消耗约为FXAA的2倍左右,也算比较好的,SMAA的核心原理来源于MLAA。MLAA的基本思路是:检测每帧图像上的边缘(通常可对亮度、颜色、深度或者法线进行边缘检测),然后对这些边缘进行模式识别,归类出Z、U、L三种形状,根据形状对边缘进行重新矢量化(re-vectorization),并对边缘上的像素根据覆盖面积计算混合权重,将其与周围的颜色进行混合,从而达到平滑锯齿的目的。

参考资料:https://www.jianshu.com/p/ba97cf44c71e

https://zhuanlan.zhihu.com/p/415087003

https://zhuanlan.zhihu.com/p/425233743

 

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像