purdy 发表于 2013-3-2 11:14

【转】孤岛危机3 支持的几种反锯齿讲解,如何设置可以得到最优质的画面呢,看完本文我想大家都会因地制宜了吧

孤岛危机3 支持的几种反锯齿如下:
MSAA=多重采样抗锯齿
SMAA=子像素增强抗锯齿
TXAA=时间近似抗锯齿
FXAA=快速近似抗锯齿
    要讲原理的话就不得不从最早的SSAA讲起。最老一代的SSAA超级采样抗锯齿(Super-Sampling Anti-aliasing,简称SSAA)此是早期抗锯齿方法,比较消耗资源,但简单直接,先把图像映射到缓存并把它放大,再用超级采样把放大后的图像像素进行采样,一般选取2个或4个邻近像素,把这些采样混合起来后,生成的最终像素,令每个像素拥有邻近像素的特征,像素与像素之间的过渡色彩,就变得近似,令图形的边缘色彩过渡趋于平滑。再把最终像素还原回原来大小的图像,并保存到帧缓存也就是显存中,替代原图像存储起来,最后输出到显示器,显示出一帧画面。这样就等于把一幅模糊的大图,通过细腻化后再缩小成清晰的小图。如果每帧都进行抗锯齿处理,游戏或视频中的所有画面都带有抗锯齿效果。 而将图像映射到缓存并把它放大时,放大的倍数被用于分别抗锯齿的效果,AA后面的x2、x4、x8就是原图放大的倍数。不过这个效果虽然很好 原理也是很好理解但是这样太耗费显卡资源了。也没必要那么MSAA应运而生。
    多重采样抗锯齿(MultiSampling Anti-Aliasing,简称MSAA)是一种特殊的超级采样抗锯齿(SSAA)。MSAA首先来自于OpenGL。具体是MSAA只对Z缓存(Z-Buffer)和模板缓存(StencilBuffer)中的数据进行超级采样抗锯齿的处理。可以简单理解为只对多边形的边缘进行抗锯齿处理。这样的话,相比SSAA对画面中所有数据进行处理,MSAA对资源的消耗需求大幅减少,不过在画质上可能稍有不如SSAA。
    这些都属于前期处理多重采样。那么剩下几个都属于后期处理多重采样。
    讲到后期处理多重采样 那就得说说大名鼎鼎的MLAA抗锯齿。英特尔实验室提出的MLAA(形态抗锯齿)技术揭开了后期处理式抗锯齿技术蓬勃发展的序幕,由于MLAA处理所需的数据仅仅是像素的颜色值,因此获得了卓越的兼容性,同时其理想状况下的处理质量甚至可以超越MSAA。根据目前对人脑视觉识别的研究结论,锯齿图案比颜色失真更加容易被人眼捕捉到。因此为了消除锯齿可以付出颜色准确度上的代价。基于此,MLAA将检测每帧图像中的颜色不连续信息,进行模式识别,把这些颜色上可感知的边缘组合成Z、U、L形状,并将这些边缘上的像素颜色根据覆盖区域的大小计算权重,与周围的颜色进行混合,从而达到平滑锯齿的目的。但是原始的MLAA算法是为CPU设计的,不经过优化改造是无法使用在实时渲染上的。根据SIGGRAPH2011上的讲座介绍,使用原始的MLAA代码在XBOX360上花费了几乎90毫秒/帧的处理时间,光是权重计算的步骤就付出了65毫秒,长得难以接受。于是一系列针对MLAA的优化改造工作如火如荼地展开,CPU+GPU的混合式MLAA、整体移植到GPU上的FXAA以及JimenezMLAA相继出现,终于将处理时间缩减到了几毫秒甚至零点几毫秒的量级上。受到MLAA的鼓舞,SRAA等同样基于后期处理思想的抗锯齿技术也在此期间诞生,它们兼备良好的质量与低廉的实现成本,因此受到了N、A两个阵营的关注。与《战地3》一同声名鹊起的寒霜2引擎就同时内置了FXAA和SRAA两种技术。
    快速近似抗锯齿(Fast Approximate Anti-Aliasing) 它是传统MSAA(多重采样抗锯齿)效果的一种高性能近似值。它是一种单程像素着色器,和MLAA一样运行于目标游戏渲染管线的后期处理阶段,但不像后者那样使用DirectCompute,而只是单纯的后期处理着色器,不依赖于任何GPU计算API。正因为如此,FXAA技术对显卡没有特殊要求,完全兼容NVIDIA、AMD的不同显卡(MLAA仅支持A卡)和DX9、DX10、DX11。至此,延迟渲染为抗锯齿技术筑起的性能瓶颈已经被突破,高质量的抗锯齿技术已经能够在主流显卡上与延迟渲染协同工作。虽然后期处理大大降低了gpu的运算资源但后期处理抗锯齿技术仍然存在缺陷,主要有:1.物体原有的形状未能得到较好保留,存在过度模糊的现象。例如Johan Andersson就将由MLAA演化而来的FXAA戏称为“模糊抗锯齿”。过度的模糊甚至影响到了一些纹理细节的表现。2.忽略了对角线模式的检测,导致抗锯齿质量的降低。现有的抗锯齿技术普遍存在这一弱点, 从MLAA到新近的SRAA无一例外,只是受影响的程度不同。SRAA的处理质量稍好,MLAA则相对糟糕。需要一个新算法将二者的优点进行融合。3.高光和着色上的锯齿没有较好地移除,子像素级别上的特征没有较好保留。这是一个普遍缺陷。局部对比度没有纳入考量,无法准确评估边缘是否被人眼识别,浪费运算资源,这是原始MLAA算法的另一重要缺陷。4.对接近水平或者垂直的边缘进行的处理在时间上不稳定,运动图像获益不如静态图像。
    为了解决这些问题,SMAA出现了。
    SMAA全称为增强型子像素形态学反锯齿(EnhancedSubpixel Morphological Antialiasing)。它的基本处理流程建立在Jimenez优化改造后的MLAA算法之上,但是每一个步骤都经过了强化或者是彻底的更新:边缘检测技术通过精确距离搜索和局部对比度自适应得到了提升,使得处理结果更加可靠。同时,模式识别方面被尖锐几何特征、对角线检测加以强化,能够在物体轮廓的斜线上产生更加准确的结果。SMAA技术来源于MLAA,因此该技术的首要工作仍是利用MLAA技术平滑锯齿。但是SMAA改进了边缘检测算法。一帧图像中的边缘有很多,但并非每一条都需要处理。据研究,若周围区域里存在一条颜色反差较大的边缘时,人的视觉系统会忽略对比度相对较低的边缘,因此可以把低对比度的部分从处理过程中早早剔除,保留图像的锐度,同时节约了处理时间。众所周知,MLAA的一大弱点就是模糊了文字边缘,未能保留文字显示应有的锐利。作为一个在MLAA之上构建的新技术,SMAA运用 尖锐几何特征检测来改进了这个不足。这一关键改进使得SMAA在对付文本时能够尽量保留锐度,从而将MLAA甩在了身后。整体来讲SMAA只需要MSAA 十分之一的运算时间。
    TXAA(时间近似抗锯齿), 这种抗锯齿原理和这几个后期处理抗锯齿类似。但是与它们有所不同的是 之前的后期处理技术 一般会在画面处理的最后时刻才发生作用。往往会误伤本来不该做抗锯齿的内容。 而TXaa不会直接出现在驱动中而是和游戏厂商合作 在游戏中植入TXAA这样就可以将后处理放在恰当位置。比如在纹理贴图前就先标定需要抗锯齿的部位。或者只对检测道儿几何体边缘做抗锯齿 从而避免字体模糊等误伤现象 是最新的N家的抗锯齿技术。只在6系列显卡中支持。按照N家说法这种抗锯齿2倍等于八倍的msaa抗锯齿。而耗损类似2倍msaa 但是实际上在孤岛危机3中仿佛还是8倍msaa效果最好 而4倍txaa 对显卡资源耗损最为严重。而且 TXAA抗锯齿技是一款提供等同于在动画、电影、游戏CG中所采用复杂的高画质过滤器,从而减少因为锯齿导致画面出现的撕裂和闪动等非常态显示。所以会给人模糊感和FXAA一样。
    实际应用中 smaa 4倍抗锯齿可能是孤岛3中最为性价比高的抗锯齿了。Msaa8倍虽然最精细但是资源消耗太严重并且一些细节比如草毛刺感很严重。TXAA 怎么说呢,往好说是电影效果不好了,说不好那就是画面“蒙”而且 4倍的TXAA也是非常耗损显卡资源。
    具体游戏运行中FXAA及1x SMAA这样的后期处理器特效无疑是最节省性能的,排名靠前,4x SSAA、8x MSAA以及TXAA 2则比较消耗资源,4x SMAA性能居中,再加上它的画质也不错,看来这就是他们最终选择4x SMAA胜出的原因了。

litmac 发表于 2013-3-2 11:37

支持 虽然我还是喜欢2Xsmaa

lililx 发表于 2013-3-2 11:47

感谢码字
简单易懂~~~
不过我觉得SM*2够了

abcg 发表于 2013-3-2 11:49

SMAA *2 某些场景还不错.....

purdy 发表于 2013-3-2 13:21

我个人觉得还是4xMSAA宝刀未老,一直用4xmsaa通关的

mahailong008 发表于 2013-3-2 13:35

谢谢。。。。。。。。。。。。。。。。

独傲云霄 发表于 2013-3-2 17:27

谢谢楼主无私的分享,学习了。

yzp0128 发表于 2013-3-2 17:33

学习了,长见识
页: [1]
查看完整版本: 【转】孤岛危机3 支持的几种反锯齿讲解,如何设置可以得到最优质的画面呢,看完本文我想大家都会因地制宜了吧