电影级高画质!3D游戏抗锯齿技术解析

来源:互联网 发布:vm虚拟机mac显存解锁 编辑:程序博客网 时间:2024/04/30 15:48

几乎无法区分的现实和虚拟


    泡泡网显卡频道8月24日 近几年来显卡技术的发展速度可谓是突飞猛进,不仅仅是性能的提升,更多的新特效也令我们的游戏世界更加精彩更加逼真。近日人气明星姚晨在微博上发出一张水面照片,有不少玩家表示照片和游戏中的场景几乎完全吻合,由此不难看出目前有些游戏的逼真度已经让玩家几乎无法区分出现实和虚拟世界了。

执行效率大飞跃!全新抗锯齿技术解析

    相信经常打游戏的玩家肯定有过如下的疑问:尽管有些游戏的画质已经达到了电影级水平,几乎可以以假乱真,但细看物体边缘的“毛边”却露出了马脚。那么游戏中的物体边缘为什么会产生“毛边”?这些“毛边”如何能够消除?最新的相关技术又是怎样的呢?在本篇文章中小编就为大家一一解答!

由浅入深 图像边缘锯齿的由来


    我们知道,电脑画面是由一个个小像素所构成的。虽然这些像素非常的小,不过每一个像素都覆盖了这一画面上的某一个区域。我们可以将这些像素比作通向虚拟世界的一扇一扇窗户,而电脑的任务就是决定每一个像素的颜色以使得我们通过这些窗户能看到一幅最美的画面。

666

    不过渲染的速度也是一幅“实时”图片的所需要考虑的一个重要因素,因此通常像素的色彩都通过对该像素内的某一点进行采样得到的颜色所决定的(即我们所谓的点采样Point Sampling)。不幸的是,为了提高速度而采取的这种做法可能使得所采样的单个点的色彩不能体现出整个像素所覆盖区域的色彩状况。当这种情况出现在物体的边缘的时候就非常明显了。

666

    有一些像素“跨”在物体的边缘,该像素内部的色彩是有一定比例的,而且在外部的显示我们也希望体现出这一比例。物体的边缘两边却会呈现出不同的颜色。点采样技术将会使得整个像素呈现出边缘两边的某一种颜色。而这样对物体边缘的着色无论是着上前景色或是背景色中的哪一种色,由于像素间色彩的突然跳变,都自然而然的会呈现出锯齿状。

    这种情况就是我们所说的锯齿(Aliasing)了。这是由于这一个像素的面积正好覆盖在了边缘上,两边都有它的存在。一个更好的办法就是将前景色和背景色进行混合从而造出第三种颜色来填充色一像素。这种方法能有效的改进图像边缘的表现效果,换一种说法就是实现了“抗”锯齿的作用。

666

    抗锯齿(Anti-aliasing):标准翻译为“抗图像折叠失真”。由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。

星际争霸2抗锯齿性能测试

    如今最新的全屏抗锯齿(FullSceneAnti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行采样,以达到不同级别的抗锯齿效果。简单的说也就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。

技术普及 七大主流抗锯齿浅析


● 超级采样抗锯齿(SSAA)

  超级采样抗锯齿(Super-Sampling Anti-aliasing,简称SSAA)此是早期抗锯齿方法,比较消耗资源,但简单直接,先把图像映射到缓存并把它放大,再用超级采样把放大后的图像像素进行采样,一般选取2个或4个邻近像素,把这些采样混合起来后,生成的最终像素,令每个像素拥有邻近像素的特征,像素与像素之间的过渡色彩,就变得近似,令图形的边缘色彩过渡趋于平滑。再把最终像素还原回原来大小的图像,并保存到帧缓存也就是显存中,替代原图像存储起来,最后输出到显示器,显示出一帧画面。

666

    这样就等于把一幅模糊的大图,通过细腻化后再缩小成清晰的小图。如果每帧都进行抗锯齿处理,游戏或视频中的所有画面都带有抗锯齿效果。而将图像映射到缓存并把它放大时,放大的倍数被用于分别抗锯齿的效果。

    超级采样抗锯齿中使用的采样法一般有两种:顺序栅格超级采样(Ordered Grid Super-Sampling,简称OGSS),采样时选取2个邻近像素。旋转栅格超级采样(Rotated Grid Super-Sampling,简称RGSS),采样时选取4个邻近像素。

● 多重采样抗锯齿(MSAA)

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

666

● 自适应抗锯齿(AAA)

    MSAA虽然得到了大量使用,但有一个重要缺陷就是不能处理Alpha材质,因此在一些栅栏、树叶、铁丝网等细长的物体上就不能起作用了。为了解决这种问题,ATI在X1000系列加入了自适应(Adaptive)抗锯齿,通过额外的多重采样甚至是超级采样来强制提升画质。自适应抗锯齿可以专门针对Alpha材质选择性的进行多级或是超级采样,这样就比完全采用SSAA拥有更低的性能损失,画面质量依旧完美!

666

● 覆盖采样抗锯齿(CSAA)

  覆盖采样抗锯齿(CoverageSampling Anti-Aliasing,简称CSAA)是NVIDIA G80系列出现时一并出现的抗锯齿技术。它的原理是将边缘多边形里需要采样的子像素坐标覆盖掉,抒原像素坐标强制安置在硬件和驱动程序预告算好的坐标中。这就好比采样标准统一的MSAA,能够最高效率地运行边缘采样,交通提升非常明显,同时资源占用也比较低。

● 可编程过滤抗锯齿(CFAA)

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

● 形态抗锯齿(MLAA)

    从G80发布至今,NVIDIA的CSAA技术得到了越来越多游戏开发商的认可,相信很多玩家都注意到了,现在不少游戏都直接在菜单中提供了CSAA选项,N卡用户不用进入驱动控制面板就能非常方便的调用。而AMD的CFAA虽然从HD2000时代已经沿用到了HD5000时代,但几乎无人问津。

666

    终于到了HD6000时代,AMD抛弃了实用价值并不高的CFAA,开发了一种新的抗锯齿方案——Morphological AA,直译为形态抗锯齿。这种抗锯齿采用了DirectCompute计算技术来进行高效率的后处理器过滤,新的抗锯齿模式适用范围比传统的MSAA更广,而且精度最高可达24x,效率方面比SSAA(超级采样抗锯齿)快很多,与最高精度的CFAA差不多,但画质要更好。

● 快速近似抗锯齿(FXAA)

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

快速近似抗锯齿FXAA全面详解


    目前可以对FXAA画质测试的软件,只有一款NVIDIA推出的SDK演示程序,该程序可以在不同分辨率下测试MSAA和FXAA的画质表现,其中MSAA可最高设定为4AA,而FXAA则采用了分级调节最高为5级,并且MSAA和FXAA可同时开启,以便进一步消除锯齿,但性能会下降许多。

666

 快速近似抗锯齿(FXAA)画质表现

666

    上面是NVIDIA提供的官方Demo中所测试出的画质差异,左边为未开启任何AA的状态,可以看到在栏杆周围的相当明显。中间和右边为分别开启4xMSAA和第3级FXAA的状态可以看到栅栏边缘明显变得平滑许多,并且两者之间的画质差距并不明显。

 快速近似抗锯齿(FXAA)的算法过程

666

    1. FXAA将其视作为输入的非线性RGB彩色数据,针对着色器逻辑单元而将这些数据内部转化成为了标量的亮度估计值。

    2. 检查局部对比度,以避免处理到非边缘部分。检测到的边缘处于红色,夹杂的偏黄色部分代表检测到的子像素锯齿有多少。

    3. 通过局部对比度测试的像素于是被归类为水平 (以金色表示) 或垂直(以蓝色表示) 。

    4. 假定选择了边缘的朝向以及与边缘呈90度角且对比度最高的像素对,以蓝色/绿色表示。

    5. 该算法沿着边缘的方向搜索正负 (红色/蓝色) 边缘端,沿着边缘检查高对比度像素对的平均亮度有无重大变化。

    6. 假定边缘的端、边缘上的像素位置已转化成为与边缘呈90度垂直的子像素位移以减少锯齿,红色/蓝色表示-/+水平位移,而金色/天蓝色表示-/+垂直位移。

    7. 考虑到这种子像素偏移,输入的纹理被重新采样。

    8. 最后,根据检测到的子像素锯齿有多少,低通滤波器被合成进来。

详细步骤 两种方法开启FXAA


    目前游戏原生支持FXAA的游戏较为稀少,在小编之前的评测中只有一款《永远的毁灭公爵》可以在游戏设置中开启,那么要如何在其他游戏中开启FXAA呢?通过小编的探索目前开启FXAA的方法有两个:安装破解补丁和修改系统注册表。

● 方法一:安装破解补丁

    一位名叫Gast的玩家在德国的3DCenter论坛发布了大小仅为57KB的补丁(点击下载),补丁里面包含两个文件夹D3D9和D3D10,顾名思义就是分别对应DX9和DX10游戏,而部分DX11游戏也可以使用这个补丁,这个方法在一些游戏论坛中已经得到了证实。

666

666

    补丁在使用时能简单,将相应文件夹下的文件复制一份到游戏exe程序所在目录即可,如果能成功开启后自动生成一个名为“log.log”的文件,通过Pause Break快捷键可以在游戏中可以实时开启或关闭。

    优点:AMD与NVIDIA全兼容,可以实时开启或关闭
    缺点:游戏兼容性不佳

 方法二:修改系统注册表

    在windows7的“运行”中输入regedit.exe,打开注册表。打开HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\NVTweak选项,新建一个名为“EnableSRS1442”的项目,数值类型为DWORD,设置数值为1。

666

666

666

    打开NVIDIA的驱动程序界面,点击“管理3D设置”选项,就可以看到多了一个“Antialiasing-FXAA”的选项,在其后的下拉菜单选择“开”即可打开FXAA特效。

    优点:游戏兼容性好
    缺点:只支持NVIDIA显卡,不可以实时开启或关闭

尘埃2 FXAA多重优势完全释放


    《科林麦克雷》系列游戏是为纪念去世的英国拉力赛车手科林·麦克雷(Colin McRae)而制作的,因此在游戏过程中不难见到许多麦克雷过往的身影。与一年一款的极品系列赛车游戏不同,DiRT2距离前作已经两年之久,目前《科林麦克雷:尘埃2》主机版早已上市,几乎登陆所有的主机和掌机平台、好评如潮,而PC版由于支持DX11的缘故,所以被延期数月。

● 对比场景

666

● 画质对比

666

● 性能测试

666

    从对比截图中可以看到当全部关闭AA时,画面极其粗糙严重影响游戏体验。当逐渐开启高倍MSAA时,画质得到显著改善,但性能下降比较明显。当开启FXAA时,画质提升相比MSAA更加明显,单开启FXAA时就已经接近于4xMSAA的水平,4xMSAA+FXAA甚至还要好于8xMSAA。此外在相同画质下,FXAA的性能损失也明显好于MSAA。

鹰击长空 AA对画质影响不高


    《鹰击长空》由Ubisoft旗下的Bucharest Studio工作室所研发制作而成,以汤姆克兰西最擅长的近现代国际冲突为背景,加上现代化的军事武器,和五角大厦不愿证实的开发中的先进武器,交织出最激烈的高科技攻防战。而《鹰击长空》也脱离前面几项作品的框架,将战争从地面拉拔到空中,享受广大无界限的战斗空间。

● 对比场景

666

● 画质对比

666

● 性能测试

666

    作为一款空战类游戏,玩家在游戏中能够看清细节的物体似乎也只有自己的战机。在这款游戏中抗锯齿对于画质的影响并不是很高,而性能却出现急速下滑,似乎有些得不偿失。

孤岛惊魂 FXAA效率低于4AA


    自《孤岛惊魂》系列的版权被UBI购买之后,该公司蒙特利尔分部就已经开始着手开发新作,本作不但开发工作从Crytek转交给UBI,而且游戏的故事背景也与前作毫无关系,游戏的图形和物理引擎由UBI方面完全重新制作。

● 对比场景

666

● 画质对比

666

● 性能测试

666

    和《尘埃2》的情况相似,关闭抗锯齿时物体边缘的“毛边”相当明显。而开启FXAA之后,画质瞬间达到4xMSAA的水平,不过此时帧数却稍稍低于4xMSAA。

冲突世界 4AA+FXAA无压力


    《冲突世界》将带领玩家返回著名的冷战时期,玩家每一个决定均影响游戏中人物和情节。可于游戏中感受不一样的团队精神,与队友于阴森恐怖的战场上一同作战。《苏联进攻》是其最新的资料片,收录全新角色、扮演苏联军队、10套新影片和全新多人联机地图等等。

● 对比场景

666

● 画质对比

666

● 性能测试

666

    即时战略类游戏历来都会对GPU和CPU提出双重要求,在测试中显卡已经不是游戏的瓶颈,在开启高倍MSAA和FXAA时性能下滑并不明显。而在画质方面只有当4xMSAA和FXAA同时开启时,地上的阴影才会呈现出“直线”的效果。

极品飞车15 最高AA也有毛边


    EA全新推出的经典竞速游戏续作《极品飞车15:变速2》成为游戏市场最火爆的游戏之一。此前,该系列以每年一部新作的速度发售,每一代新作的推出,玩家们都会对游戏的画质表现、操控体验等方便展开激烈的争论。也正是有了这么多忠实的玩家,才使得这款竞速游戏长盛不衰。

● 对比场景

666

● 画质对比

666

● 性能测试

666

    一直以来《极品飞车》系列游戏的画面锯齿均比较明显,即使在画质选项中将MSAA调至最高,仍然能够明显的看到锯齿,不过好在FXAA可以进一步提升画面质量。

地铁2033 令顶级显卡也汗颜


    DX11大作《地铁2033》就使用了DX11级别的景深效果,清晰和虚化合理分配、主次分明,再搭配Tessellation技术的辅助,几乎接近与电影的拍摄效果,看起来有种赏心悦目的感觉。但该游戏由于使用了太多尖端图形技术,所以要求非常苛刻。

● 对比场景

666

● 画质对比

666

● 性能测试

666

    《地铁2033》是少数几个加入AAA自适应抗锯齿的游戏之一,通过截图可以看到要同时开启4xMSAA和FXAA才能令物体边缘呈现出完美的“斜线”,而此时GTX580已经无法流畅运行游戏。

毁灭公爵 选项中原生支持FXAA


    从1997到2011,14年的等待,14年的期盼,14年时光荏苒,有人等到了,也有很多人没能等到。这14年对人生来说已经十分漫长,那是一代人人生中最绚烂的日子,但对于一款游戏来说,让玩家等待14年足以令人感到匪夷所思,不过《永远的毁灭公爵》做到了,至少在这点上,它已经堪称神作!

● 对比场景

666

● 画质对比

666

● 性能测试

666

    前面已经讲过《永远的毁灭公爵》是小编测过的第一个在画质选项中加入FXAA的游戏,不过这款游戏对于其他AA的支持并不丰富,只有三个选项可供选择(NO AA、FSAA、FXAA)。

虚幻3引擎游戏 也能开启FXAA


    作为“登上封面次数最多的游戏”的后续版本,《刺客信条:兄弟会》在保障严谨故事性的单人任务基础上,首次引入前所未有的多人模式,游戏提供多位不同类型角色,同时还提供了大量全新的武器,在游戏性上将比前作有较大提升。

● 对比场景

666

● 画质对比

666

● 性能测试

666

    和大多数“虚幻3”引擎游戏一样,《刺客信条:兄弟会》无法在游戏中正常开启MSAA,这肯定会令大多数玩家极为不爽。好在FXAA可以在这款游戏中正常开启,并且画质提升也较为明显。

革命尚未成功 FXAA仍须努力


    相信细心的网友已经看到在此次测试中,参测的游戏绝大多数都是DX9、DX10游戏,最新DX11游戏却少之又少。实际上这并不是小编在测试中偷懒,而是因为经过小编的仔细测试发现,FXAA并不是在全部游戏中都生效,尤其在大部分DX11游戏中还会出现某些异常情况发生,由此说明现阶段FXAA的兼容性仍然有待提升。

DX10终极杀人武器!Crysis全方位测试

    尽管如此通过我们的测试仍然能够看到FXAA的不少闪光点,首先FXAA对于画质的改善相当明显,单独开启FXAA就能得到2xMSAA以上接近于4xMSAA的画质;其次对于显卡性能的消耗较低,接近于2xMSAA的水平,使玩家可以在较少性能损失的情况下,换来更佳的体验;此外FXAA还可以和其他AA技术叠加使用,使画质提升至更高的层次。

    在文章的最后,希望NVIDIA/AMD能够联合众多游戏厂商将FXAA这一技术大力推广开来,最终使用户可以根据自己的需求在驱动控制面板和游戏设置中任意开启FXAA,以便在游戏中得到最为真实的游戏体验。