回击MLAA:NVIDIA FXAA抗锯齿性能实測、画质对照
PC游戏玩家肯定会对各式各样的AA抗锯齿技术很熟悉,而今天本文的主角就是NVIDIA今年才推出的新型抗锯齿技术“FXAA”。
FXAA在某种程度上有些类似于AMD之前宣传的MLAA(形态抗锯齿)。但远比后者低调。所以非常多玩家可能还从来没听说过。可是假设你玩过《永远的毁灭公爵》或者《F.3.A.R》。应该会有所耳闻。
今天我们就来实际測測多款显卡上的FXAA性能和画质表现。并将其与MLAA进行简单对照。
什么是FXAA?
FXAA全称为“Fast Approximate Anti-Aliasing”。翻译成中文就是“高速近似抗锯齿”。它是传统MSAA(多重採样抗锯齿)效果的一种高性能近似值。
它是一种单程像素着色器,和MLAA一样执行于目标游戏渲染管线的后期处理阶段,但不像后者那样使用DirectCompute,而仅仅是单纯的后期处理着色器,不依赖于不论什么GPU计算API。正由于如此,FXAA技术对显卡没有特殊要求,全然兼容NVIDIA、AMD的不同显卡(MLAA仅支持A卡)和DX9、DX10、DX11。
相比于MSAA,FXAA的目标是速度更快、显存占用更低,还有着不会造成镜面模糊和亚像素模糊(表面渲染不足一个像素时的闪烁现象)的优势。而代价就是精度和质量上的损失。
依照FXAA技术开发人员Timothy Lottes的说法,GeForce GTX 480利用FXAA Preset 2(另外一种预设)处理一帧1920×1200分辨率画面时所需时间不到1毫秒。
FXAA如今有三种版本号:“FXAA 1”是最早最基础的版本号。也是在PC游戏中使用最广泛的。已用于《F.3.A.R》、《永远的毁灭公爵》、《柯南时代》、《Crysis 2》、《无主之地》等等;“FXAA 2”是针对Xbox 360游戏机专门设计的;“FXAA 3”又有两种算法,Quality质量版本号面向PC,Console主机版本号则面向Xbox 360、PS3。
FXAA 3相比于FXAA 1有非常明显的性能优势,GeForce GTX 480 DX11默认设置下使用FXAA 3 Quality处理典型的720p分辨率画面仅仅须要大约0.21毫秒。
另外DX9、DX11模式下性能差异会非常大,当中DX11更快一些。
FXAA官方技术白皮书:
http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf

从左到右:无AA、4xMSAA、FXAA

FXAA算法过程

FXAA演示
本次測试的平台配置例如以下:
处理器:Core i7-920 OC 3.6GHz
主板:华硕P6T6 WS Revolution
内存:海盗船DDR3-1600 6GB
硬盘:西部数据500GB SATA
电源:酷冷至尊Real Power Pro 1250W
显示器:戴尔3007WFP (DVI)
操作系统:Windows 7 Ultimate SP1 x64
显卡:
GeForce GTX 580 772/1544/4008MHz
GeForce GTX 570 732/1464/3800MHz
GeForce GTX 560 Ti 822/1645/4000MHz
Radeon HD 6970 880/5500MHz
Radeon HD 6950 800/5000MHz
Radeon HD 6870 900/4200MHz
驱动程序:
GeForce 275.50 Beta
Catalyst 11.6 WHQL
FXAA、MSAA性能对照
測试场景选择《F.3.A.R》(版本号16.0.20.1060)游戏中画质要求更高的Intervals 07。从開始录制帧率。直到Alma尖叫导致Armacham直升机坠毁为止。时长15-18分钟。为了便于保证測试过程的一致性,期间使用了上帝模式。开启DX11、16xAF,分辨率依照显卡不同有高中低三个档次。
经过衡量。平均帧率至少应该达到37FPS才干保证游戏的全然流畅。

GeForce GTX 580开启FXAA之后相比于不开启不论什么AA性能平均损失11.7%。平均帧率依旧有56.7FPS。

GeForce GTX 580上开启2xAA速度降为43.1FPS,相比于FXAA慢了13.6%,进一步开启4xAA又比2xAA慢了38%(此时已经无法保证流畅),因此从FXAA到4xAA的降幅为52.8%。就看FXAA、2xAA、4xAA谁的画质效果好了。

Radeon HD 6970开启FXAA后平均速度为55.6FPS,比不开启AA损失了14.7%,稍微输于GeForce GTX 580。

Radeon HD 6970开启2xAA、4xAA分别比FXAA慢了17.4%、50.9%。

GeForce GTX 570 FXAA分别比2xAA、4xAA快了24.8%、35%。只是由于分辨率减少,4xAA下平均帧率依旧接近40FPS。

Radeon HD 6950相同条件下的差距是16.1%、30.9%,最慢也有44FPS。

GeForce GTX 560 Ti上2xAA、4xAA分别慢了23.1%、50%。

Radeon HD 6870上则是15.8%、37.8%。
FXAA、MSAA画质对照
下面截图的原始分辨率均为2560×1600。细节设为最高。




我们之前就说过,FXAA不管对N卡还是A卡都适用,并且没有区别对待。来自GeForce GTX 580、Radeon HD 6970的截图都显示了差点儿相同的效果。
FXAA的抗锯齿效果明显优于2xAA,甚至比4xAA也不弱。结合前边的性能測试能够看出。FXAA用比2xAA快非常多的速度。取得了4xAA级别甚至更好的效果。
这几张GeForce GTX 580上的截图显示了FXAA对透明Alpha纹理的影响。
不开启AA的话。纹理外側的硬边缘被平滑。可是树叶和树枝上还有大量颗粒,2xAA、4xAA下甚至更糟,仅仅有FXAA才消除了树叶上的颗粒。

这几张Radeon HD 6970的截图也非常easy看出不同效果。关闭AA的时候边缘锯齿非常明显,2xAA略有改善,4xAA又稍好一些。但显然都不如FXAA来得平滑。

这张截图来自NVIDIA。所用游戏不明。最左側是关闭FXAA。中间是开启FXAA 3.9但没有亚像素对照度减少,右側就是同一时候开启FXAA 3.9和亚像素对照度减少了,即使不到一个像素的树叶也都被平滑了。
FXAA、MLAA性能对照

Radeon HD 6970上,FXAA开启后平均速度56FPS,MLAA则会减少至32.6FPS,慢了42%之多,仅仅是后者的帧率更加稳定一些。

Radeon HD 6950上FXAA也取得了60%的优势。

Radeon HD 6870上FXAA再次获胜。率先幅度47.5%。
FXAA、MLAA画质对照

湿润的底面上,FXAA、MLAA的效果差点儿相同。肉眼基本看不出差别。

较真的话能够说MLAA的色彩过渡更平滑一些,但总体基本同样。

放大区域的对照度略有不同,FXAA更强一些。

以树叶为代表的透明纹理上,FXAA的颗粒明显比MLAA少得多。MLAA也取得了一定的效果,可是FXAA更好一些。
小结:
FXAA是NVIDIA针对AMD MLAA提出的技术回应,在基本差点儿相同的画质水平上取得了更快的速度,并且对透明树叶纹理的处理更平滑。在同等画质下。MLAA要比FXAA平均慢37.1%之多。
NVIDIA FXAA长处:
- 兼容NVIDIA、AMD显卡
- 性能影响更小(相比于MSAA、MLAA)
- 画质与4xMSAA、MLAA基本相当
- 定制度高,可在性能和画质之间取得平衡
- 可以降低边缘、纹理和Shader上的锯齿
缺点:
- 须要游戏开发者提供支持
AMD MLAA长处:
- 无需游戏特别支持,可通过驱动用于不论什么游戏
- 兼容全部游戏和引擎,无论是DirectX还是OpenGL
- 可以降低边缘、纹理和Shader上的锯齿
缺点:
- 仅支持AMD显卡
- 性能影响比較大
- 对于单像素和亚像素物体效果一般
回击MLAA:NVIDIA FXAA抗锯齿性能实測、画质对照的更多相关文章
- DirectX11 With Windows SDK--40 抗锯齿:FXAA
前言 在默认的情况下渲染,会看到物体的边缘会有强烈的锯齿感,究其原因在于采样不足.但是,尝试提升采样的SSAA会增大渲染的负担:而硬件MSAA与延迟渲染又不能协同工作.为此我们可以考虑使用后处理的方式 ...
- SSE图像算法优化系列二十四: 基于形态学的图像后期抗锯齿算法--MLAA优化研究。
偶尔看到这样的一个算法,觉得还是蛮有意思的,花了将近10天多的时间研究了下相关代码. 以下为百度的结果:MLAA全称Morphological Antialiasing,意为形态抗锯齿是AMD推出的完 ...
- Unity3d 超级采样抗锯齿 Super Sampling Anti-Aliasing
Super Sampling Anti-AliasingSSAA算是在众多抗锯齿算法中比较昂贵的一种了,年代也比较久远,但是方法比较简单,主要概括为两步1. 查找边缘2. 模糊边缘这是一种 ...
- 【ShaderToy】基础篇之再谈抗锯齿(antialiasing,AA)
写在前面 在之前的基础篇中,我们讲到了在绘制点线时如何处理边缘的锯齿,也就是使用smoothstep函数.而模糊参数是一些定值,或者是跟屏幕分辨率相关的数值,例如分辨率宽度的5%等等.但这种方法其实是 ...
- 给Libgdx的ShapeRenderer开启抗锯齿
http://blog.rpsg-team.com/?p=134 ——————————————————————————————————————————————————————————————————— ...
- 处理 CALayer 变形后的抗锯齿问题
处理锯齿当然要用抗锯齿,iOS 可以通过修改 Plist 实现全局抗锯齿,但是这样容易出现性能问题. 所以就要使用对单个 Layer 开启抗锯齿的方法 layer.allowsEdgeAntialia ...
- UE4在PSVR中的抗锯齿和优化相关知识
UE4目前版本(4.15)在PS平台上并不支持MSAA,在未来的版本会加入.也就是说目前没有办法在PS平台上使用Forward Rendering + MSAA的组合 FXAA效率最高,但效果最差,只 ...
- Android 抗锯齿的两种方法
Android 抗锯齿的两种方法 (其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true)) 在Android中,目前,我知道有两种出现锯齿 ...
- Linux 下 netbeans 字体抗锯齿正解
转自:http://leenjewel.blog.163.com/blog/static/601937922010124444051/ 说来这个不难,主要是我看网上有的写的不是很明确,甚至有的写的根本 ...
随机推荐
- QML嵌入到QWidget中方法
简介 嵌入方法有两种一种是直接拖控件,另一种是cpp代码动态生成, 控件方式 动态代码生成 QQuickWidget *m_quickWidget=new QQuickWidget(); QUrl s ...
- 【大话QT之十】实现FTP断点续传(需要设置ftp服务器为“PASV”被动接收方式)
应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在客户端修改或新增加一个文件时,该文件要同步上传到服务器端对应的用户目录下,因此针对数据传输(即:上传.下载)这一块现在既定了三种传输方式,即: ...
- char 和 varchar
固定长度或可变长度的字符数据类型. char [ ( n ) ] 固定长度,非 Unicode 字符数据,长度为 n 个字节.n 的取值范围为 1 至 8,000,存储大小是 n 个字节.char 的 ...
- Spring AOP实现方式二【附源码】
自动代理模式[和我们说的方式一 配置 和 测试调用不一样哦~~~] 纯POJO切面 源码结构: 1.首先我们新建一个接口,love 谈恋爱接口. package com.spring.aop; /* ...
- 内核驱动中常见的miscdevice、platform_device、platform_driver
最近在看驱动模型,是越看越糊涂,以前接触比较多的都是一些字符驱动,对字符驱动的框架有一定的了解.后来因为想在驱动中实现设备文件的创建,又了解了一下,sysfs文件系统和udev设备文件系统(这两个是两 ...
- 【HDOJ】1018 Big Number
数学题,还是使用log避免大数,但是不要忘记需要+1,因为0也是1位,log(100)= 2,但却是3位. #include <stdio.h> #include <math.h&g ...
- tlplayer,wzplayer所有平台通用加密测试视频
此视频文件为通用版本,支持tlplayer,wzplayer,能在ios,android,windows,mac等平台上使用,发布此文件紧为方便用户测试. 下载地址:http://www.coolra ...
- IQ Test
IQ Test Description: Bob is preparing to pass IQ test. The most frequent task in this test is to fin ...
- Struts 2.3.1.1 命令执行漏洞
漏洞版本: Struts 2.3.1.1 漏洞描述: CVE ID:CVE-2011-3923 Struts2的核心使用的是WebWork框架,而WebWork通过XWork来处理用户的请求参数.Xw ...
- Android学习之路——简易版微信为例(一)
这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个 ...
