当前位置:首页 > 装机升级 > 显卡 > 技巧
“微观”世界里的评测——NVIDIA FCAT帧率测试方案解析
  • 2013-12-10 15:06:42
  • 类型:原创
  • 来源:电脑报
  • 报纸编辑:陈扬轶
  • 作者:
【电脑报在线】在前几期报纸上,我们曾详细研究过“帧时间”(或者说帧延迟)对游戏是否流畅造成的影响。基本上整个硬件以及游戏业界还是很认同每帧生成时间的确和游戏的流畅度有关,游戏游戏每帧的延迟起伏较大,延迟时间较高,即使帧速表现优异,依然会让玩家在游戏中感到卡顿。通常很多媒体和测试是用FRAPS来测试游戏一段时间内的帧延迟,不过Fraps的测试机制使得它的帧延迟测试不那么科学,而NVIDIA则自行开发了一套名为FCAT的测试工具来测试游戏的帧延迟。


  在前几期报纸上,我们曾详细研究过“帧时间”(或者说帧延迟)对游戏是否流畅造成的影响。基本上整个硬件以及游戏业界还是很认同每帧生成时间的确和游戏的流畅度有关,游戏游戏每帧的延迟起伏较大,延迟时间较高,即使帧速表现优异,依然会让玩家在游戏中感到卡顿。通常很多媒体和测试是用FRAPS来测试游戏一段时间内的帧延迟,不过Fraps的测试机制使得它的帧延迟测试不那么科学,而NVIDIA则自行开发了一套名为FCAT的测试工具来测试游戏的帧延迟,而近日我们已经从NVIDIA那里获得整套FCAT工具,下面就让我们一起来了解FCAT的具体测试方式。



FRAPS为啥不可靠?
  如果按照目前最常规的手段而言,测试帧时间的简单的办法就是使用Fraps,不过不管是AMD还是NVIDIA都认为Fraps用于测试帧速没有问题,但是用于测试帧时间就不可靠了。AMD认为Fraps过早地介入了3D渲染过程,Fraps可以告诉你进入渲染过程之前发生了什么,但是它无法告诉你渲染完成之后发生了什么,而真正决定游戏卡顿与否的关键就在后一个阶段,即画面输出阶段上。而NVIDIA也认为基于软件的帧时间测量方式确实是有缺陷的,因为显卡渲染画面是不存在刷新率问题的,而显示器是有刷新率的,Fraps显然没有考虑到这个问题,所以它的数据也是不准确的。
  
  Fraps可以选择帧延迟的测试,但并不准确
  之前我们曾经说过,Fraps测试的只是帧从游戏引擎到微软DX渲染进程的时间段,比显卡发送命令和数据让GPU开始渲染的时间要早,所以Fraps真正看到的只是显示器正在发生的,而真正的帧缓冲器内发生了什么是它看不到的,这是它的先天缺陷。此外,在GPU渲染过程中经常还有丢帧(drop frame)和不完全帧(runt frame)等现象存在,这种现象也会直接体现在画面上(肉眼可能无法察觉,)而Fraps也无法检测这种现象。所以如果从每帧的微观角度去看待显卡之间的差异,那么Fraps至少不是那么令人信服。


基于硬件捕捉的FCAT
  在今年3月,NVIDIA提出了一种全新的侦测帧延迟以及其他相关每帧画面输出参数的测试方案——FCAT(Frame Capture Analysis Tool,帧采集分析工具)。它的原理就是执行一个Overlay(覆盖层)挂件,在每帧输出的画面左面部分加上一种颜色,这个颜色就类似于一种时间节点,然后NVIDIA再使用高清视频采集卡将游戏渲染输出的信号录制成视频文件,通过分析这个视频文件每帧的色带变化来获得游戏帧数相关的信息,并将最终获得的帧时间转换成可见的成绩表格。由此,FCAT除了能测试到游戏的具体帧速,同时也能测试到具体的每帧延迟、丢帧以及微帧等现象。
  
  NVIDIA假设内核驱动和 GPU 最多只能扔掉16帧连续画面,因此一共有16种不同的色彩序列。由于每一帧的颜色都不一样,这样采集出来的画面就非常便于进行帧率分析了,因为只要分析画面中不同颜色的垂直距离(显卡的输出垂直刷新率是固定的,把颜色区域的垂直距离除以屏幕高度再乘以垂直刷新时间即可计算出帧时间)和对应的色彩序号即可判断出对应的帧时间和各帧之间是否存在丢帧。


连续16帧画面上都有不同的色彩区域
  按照NVIDIA FCAT的定义,FCAT一共有以下16种颜色:白色、亮绿色、蓝色、红色、青色、海军蓝、绿色、浅绿色、栗色、银色、紫色、橄榄绿、灰色、紫红色、黄色及橙色。在垂直同步状态下,每种颜色的长度实际上和每帧画面分辨率的高度是等同的。而在非垂直同步状态下,每帧画面中的颜色区域在大多数情况下都不再是单一的是,一帧画面经常出现两种颜色,而一种颜色也经常横跨两帧扫描输出的画面。如果渲染速度高于垂直同步的话,你会看到同一个扫描输出画面中,会有多个颜色区域的存在。

   
  简单而言,在FCAT系统中,如果一个画面连续16帧中的颜色缺失某一种颜色,那么就代表着丢帧,如果某一颜色区域的长度短于画面分辨率的高度,那么则说明有渲染不完全帧出现。从微观角度而言,丢帧和不完全帧现象理论上都是出自显卡的问题,这种现象越少越好,而我们也正可以通过这种丢帧、不完全帧以及帧延迟这几种现象的表现来具体对比不同显卡之间的差异。

  当然靠人工去识别每帧的差异太不现实,好在NVIDIA的FCAT系统中就已经自带了相关的软件,包括提取视频颜色区域并生成图表的工具,这样我们就可以是最直观看到一个游戏在一个时间段里的帧延迟参数以及不完全帧和丢帧的现象了。


价格超高的FCAT测试硬件
  我们一直认为FCAT不适合普通玩家,主要是测试所需要的硬件实在太过昂贵。NVIDIA虽然提出FCAT这个测试方案,但NVIDIA提供的只是软件,这是免费的,我们之后再谈,而FCAT所需要的硬件成本则很难让普通用户接受。
  
  首先就是采集卡,尽管支持HDMI的采集卡从网络渠道而言并不贵,但是一般来说采集的画面也都是1080P@30fps的,那种用来观看还行,要采集数据用于分析显然不够,要知道目前主流游戏都是1080P@60fps以上的环境,很多玩家的显示器甚至是1440P,所以FCAT所要使用的采集卡都是要很高端的。

  
  价格超过13000元的VisionDVI-DL采集卡
  NVIDIA给我们提供的采集卡是英国Datapath的VisionDVI-DL,这片视频采集卡可以说是旗舰级产品,拥有PCIE×4总线界面,采集界面为DVI-DL/DVI-SL,60Hz垂直刷新率下的最高采集分辨率为2560×1440,同时可以在30Hz刷新率下实现4K×4K分辨率的采集,当然4K分辨率的采集对目前的游戏而言意义不是很大。该采集卡目前在英国售价达到1400英镑,折合人民币13000元左右,这显然不是普通用户可以接受的。NVIDIA的FCAT方案并没有限制采集卡的品牌,如果采用其他性能类似的采集卡也可以使用FCAT方案,当然这些采集卡的价格无一例外都是天价!
  
  很多采集卡都是和主机一同工作,但是NVIDIA考虑到FCAT实际的操作性和对硬件的要求,使用的是分屏工作的模式。即一个主机运行测试或者游戏画面,另一个主机负责采集视频并分析数据,此时就需要视频分流器,NVIDIA为我们提供了一个1进2出的DVI分流器,显卡通过DVI线将画面输入到分流器中,然后分流器两个输出口分别将画面输出到两个电脑的显示器上,这样就可以达到一个显示实际运算画面,一个进行画面采集的工作。当然,FCAT对分流器也没品牌要求,如果只采集1080P的画面,甚至HDMI分流器都足够了,网上一抓一大把,价格也不算太贵。


1进2出的DVI分流器

  值得一提的是,除了FCAT系统本身所需要的采集卡和分流器外,测试者还必须拥有配置较为强悍的电脑,采集高分辨率视频一方面对处理器和内存系统有要求,另一方面还对存储系统有很高的要求。以1080P游戏画面为例,要采集这样的数据,就需要每秒写入1920×1080×60×3byte的数据,也就是350MiB/s,如果要采集1440P的游戏画面,那则需要拥有630MiB/s的写入速度,即使VisionDVI-DL采集卡通过色彩编码方式将3byte改为2byte,那么采集卡主机的硬盘至少也需要420MiB/s的写入速度,这对传统硬盘而言无疑是很难达到的,所以NVIDIA在FCAT方案中推荐用户使用SSD阵列的方式,当然如果采集的是1080P的游戏画面,那么一块高速写入的SSD硬盘也应该可以胜任。


  
  NVIDIA官方的FCAT系统运行图
  总而言之,FCAT整个方案对系统硬件的要求是非常高的,这直接体现在价格上,而且FCAT不谈软件,就只看硬件安装的方式也相对目前的常见的评测方案而言更为麻烦。如果是采集1440P的画面,那么就需要两个高分辨率显示器以及两套性能不错的主机,加上其他硬件的成本,FCAT方案至少要花费数万元!

 

FCAT方案的软件工具
  既然是NVIDIA自己开发的FCAT方案,那么除去需要测试者自己购买的第三方硬件设备外,NVIDIA主导的自然就是软件方面的开发。抛开采集卡的驱动和具体所需要的软件不说,NVIDIA在FCAT里面准备了三种软件工具,分别是Overlay、Extreactor及Analysis。
  
  Overlay目录下有两个dll文件和一个可执行程序EnableOverlay.exe,这三个文件是需要放到运行游戏或者程序的电脑中,运行EnableOverlay.exe,就能将dll文件注入到测试用电脑的游戏或者程序里,这些dll文件会生成与游戏每帧画面相对应的16种颜色,而这些颜色将被Analysis脚本解析成具体帧率表现的图表。
  
  Extreactor及Analysis两个文件夹都需要放在采集卡所在的主机中,Extreactor是视频提取器,它可以将录制好的AVI文件转换成excel文件。而Analysis文件夹中则是各种脚本,生成数据前要先运行几个脚本,这样才能给从捕捉的视频画面中生成包括帧延迟的CSV文本文件,具体如果操作这里就不多谈了,毕竟没有多少个人用户能用到这个系统。
  
  将采集的视频输出为其他文件格式
  实际上,个人觉得这些软件设置还不麻烦,最麻烦的是采集卡驱动和软件的设置,步骤比较繁琐,特别是针对一些画质设定的,在加上后期采集后的数据处理以及一些驱动和软件的安装,说FCAT是目前史上最繁琐的显卡测试方案也不为过。


FCAT最终的数据输出
  FCAT可以输出帧率的多种信息,之前说过了包括实际帧率、帧延迟时间、丢帧数和不完全帧数,可以说是目前最为详细的显卡性能测试方案。本次我们着重对于FCAT的测试机制进行分析,并没有对A卡和N卡之间的每帧画面表现进行对比,下面我们可以通过一些最终FCAT生成的图表来说明FCAT的测试结果。
  
  帧延迟时间的测试可以说是FCAT最实际的功能,在帧延迟的图表中,我们可以看到两个不同的显卡系统,在《刺客信条3》中的帧延迟表现。其中图表左边纵向代表的每帧生成时间,图表下方横向代表的是游戏运行的时间,左上角有两种不同显卡的颜色表示和名称,这样不同显卡在游戏中的相同的每帧的延迟时间对比就一目了然了。从帧延迟的图表中我们可以看到,GeForce Titan的帧延迟时间要比GeForce Titan SLI高,当然在一些特别的帧上面,GeForce Titan SLI也会出现帧延迟高于GeForce Titan的情况。
  
  FCAT单独比较帧延迟的图表
  FCAT的测试图表最有意义的一点就是能够将一个显卡在游戏中一段时间的帧表现具体化的表现出来。FCAT能在一个图表中同时以不同颜色显示出FCAT的fps数值以及Fraps的fpas数值,同时还能够在图表中以不同颜色标示出具体丢帧和不完全帧的范围。一般来说,如果FCAT和Fraps测试的帧速测试出来相同,那说明没有丢帧和不完全帧现象,如果两者出现不同,那么肯定显卡在运行游戏的这段时间就会出现丢帧和不完全帧现象。
  
  FCAT能显示出显卡在运行时的丢帧以及不完全帧情况
  此外,如果测试者愿意的话,也可以单独或者合并列出不同显卡之间的帧时间表现、帧生成时间百分比曲线,这样即使不测试fps帧速,也能直接通过百分比曲线换算出来,非常科学!


编辑点评
足够精准,也足够繁琐

   电脑报阿卡酋长:你必须得承认,在PC游戏上,NVIDIA已经是做到了技术上的极致,不管是用于垂直同步的G-SNYC,还是用于测试的FCAT,它们都已经在各自的领域上达到了一个相当高的精度,甚至可以用吹毛求疵来形容也不为过。从技术角度上而言,越高的精度代表着更准确的数据以及理论上更好的游戏体验,但是从宏观游戏感官而言,对于玩家的意义则不是那么明显,这些技术和方案注定能引起人们的话题,但是要对普通用户造成革命性的影响则很难。
  
  实际上对于FCAT而言,我们可以从这个方案中获得更多显卡在运行游戏时的细微表现,比如丢帧和不完全帧等现象,但对大多说普通玩家而言,不完全帧肉眼基本无法识别,即使是偶尔丢帧也很难影响到游戏的体验。而且在做到极为精确的同时,整个测试过程也显得比较繁琐,加上高昂的成本,这显然不是为玩家准备的。当然,个人觉得这个方案对于游戏开放商以及显卡公司可能更有意义,他们可以通过显卡到具体游戏的细微表现,在显卡性能之外从驱动和补丁方面解决这些问题。而普通玩家可能就采用Fraps就能比较直观地看到一个显卡在游戏中的表现了。
  
  当然,我们赞赏NVIDIA在技术端做出的努力,也期待NVIDIA在未来有更多在游戏体验方面的突破,毕竟有喜欢较真,喜欢在细微方面做出提升的公司,这个世界怎么也会变得更美好一些,不是么? 
本文出自2013-12-09出版的《电脑报》2013年第48期 E.硬件DIY
(网站编辑:pcw2013)


我来说两句(0人参与讨论)
发表给力评论!看新闻,说两句。
匿名 ctrl+enter快捷提交