Maxwell旗舰降临 GTX980/970首发评测
除了硬件架构的革新,此次NVIDIA还宣布了不少最新的软件技术,很多业内人士喜欢称之为NV的黑科技!
速度与画质一直都是3D游戏追求的两大终极目标,但很多时候,速度与画质总是鱼和熊掌不可兼得,想要开启高级特效必然会损失帧数导致流畅度下降,因此就需要硬件厂商不断的研发出性能更强的GPU,也需要软件厂商研发出更高效率的图形技术。
抗锯齿(Anti-Aliasing,简写为AA)就是这样一项很特别的图形技术,它能够明显的改善游戏画面表现力,同时也会让游戏帧数大幅下降。所以多年以来,不论是显卡厂商还是游戏开发商,都在努力的改进抗锯齿效率,开发出新的抗锯齿模式,让游戏画质变得更好,同时也不至于让性能损失太多。
所以,大家一定听过或者见过以下这些抗锯齿中的一种甚至多种,如:MSAA、CSAA、CFAA、FXAA、TSAA……今天笔者就为大家详细解读3D游戏中的锯齿是如何产生的,回顾最常见的MSAA技术的原理和优缺点,最后介绍NVIDIA新开发的一种效率极高的抗锯齿技术——MFAA。
● 为什么会产生锯齿?
我们知道,显示屏是由一个个方块像素点组成的,这些方块像素点在显示斜向或圆形物体时,会不可避免的在边缘产生锯齿状的线条。就像马赛克一样,只不过是薄码而已……
● 高分屏能否自动消除锯齿?
当显示器的分辨率或显示屏的PPI(每英寸的像素数)足够大时,人眼将无法看清具体的像素点,但相邻像素之间的色彩差异也会产生明显的错落感,高分辨率/PPI由于像素变得非常细腻,可以同比缩小锯齿,但仍不能完全消除锯齿。
● 抗锯齿技术是如何抵抗锯齿的?
前面说过,方块像素显示斜向或圆形物体时,锯齿是无可避免的,抗锯齿也无法消除锯齿,但它能通过欺骗人眼的方法,让锯齿的棱角显得不那么明显:
如上图所示,方法就是对锯齿所在位置的像素及相邻像素进行比对采样处理,计算出该像素应该显示多少比例的灰阶值,而不是“非黑即白”的显示模式。比如4xAA就是对每个像素采样4次,原本该像素只有0、1两种显示模式,开启4xAA后就能显示0、1/4、1/2、3/4、1五种模式。
如此一来,棱角分明的锯齿边缘,就会显得比较模糊,色彩过渡比较自然,就不会那么刺眼了,锯齿一定程度上被消除了。
● MSAA占据主导位置,4xMSAA使用最广泛
MSAA的全称是Multi Sampling Anti-Aliasing,多重采样抗锯齿。MSAA只对Z缓存和模板缓存中的数据进行采样处理,可以简单理解为只对多边形的边缘进行抗锯齿处理,而忽略非边缘像素(因此可能会在一些特殊位置残留一些锯齿)。这样的话,相比SSAA对画面中所有数据进行处理,MSAA对资源的消耗需求大大减弱,因此MSAA在游戏中使用最广泛,多年来一直占据主导位置。
通常在游戏中会提供2x、4x、8x三种抗锯齿级别,一般最常用的就是4x这种模式,因为4x和8x的画质差别已经很小了。
● 开启抗锯齿性能损失有多大?
可以看出,4x抗锯齿虽然效果优秀,但性能损失比较大,而2x性能损失最小,可以说效率最高。
● NVIDIA的黑科技:超高效能的MFAA
鉴于高倍MSAA性能损失较大的问题,NVIDIA在MSAA的基础上开发出了一种“投机取巧”的技术:Multi-Frame Sampled Anti-Aliasing(MFAA),从字面上来看它是MSAA的一个变种,可以翻译为“”。
上图为MFAA的工作原理,奇数帧在水平方向进行一次2xMSAA采样,偶数帧在垂直方向进行另外一次2xMSAA采样,然后通过软件算法将其合成,最终的采样结果与直接进行4xMSAA没有区别。
可能会有人担心,对相邻的两帧进行两次2xMSAA采样合成会不会造成画质损失,尤其是当画面运动幅度较大时?其实MFAA都是对物体边缘进行采样,无论运动幅度多大都有固定的几何轨迹,因此两帧始终会在固定的像素点进行合成,不会产生错乱,合成之后的采样效果自然也不会与MSAA有啥区别。
● 4xMSAA的画质与4xMFAA完全相同,4xMSAA的性能接近与2xMSAA
4xMFAA的画质与4xMSAA没有区别
当然,通过算法将两次2xMSAA合成为4xMFAA,性能肯定会有损失的,NVIDIA官方称性能损失会在5%以内,这样4xMFAA的性能自然会远超4xMSAA,只是略低于2xMSAA。同理可以实现8xMFAA的性能远超8xMSAA,略低于4xMSAA。
4xMFAA的帧数比4xMSAA高30%
通过这样一个简单而有创意的技术,可以免费让NVIDIA显卡的抗锯齿性能提高30%,简直逆天了!