第六代显卡杀手——3DMark06测试原理解析
技术空间
毫无疑问,在显卡性能测试工具中,使用最广泛、最权威的莫过于3DMark系列软件了,自1999年诞生以来它就成为人们衡量硬件3D性能高低的标尺。在饱受争议的3DMark05发布一年多之后的2006年1月19日,3DMark06如约而至。这次,FutureMark给我们带来的是惊喜还是失望?3DMark06能延续前辈们的辉煌吗?
3DMark06有哪些新变化
1.加入了SM3.0及HDR特效
大量SM3.0(即Shader Model 3.0)及HDR特效运用在真实游戏之中,让3DMark05只支持SM2.0的特性显得有些“落伍”,无法真实反映显卡在游戏中的性能。目前NVIDIA和ATI的主流产品都已支持SM3.0及HDR特效(如GeForce 6600和Radeon X1600),这也使得Futuremark在新作品中加入该测试项目显得水到渠成。
2.改变了CPU测试
在3DMark06中,CPU测试部分的改变称得上脱胎换骨:CPU测试得分不再是可有可无,而是强制运行并加入到综合得分中,这意味着即使在同一块显卡的情况下,使用不同的CPU得出的综合分数将可能有较大差异;CPU测试方面使用了AGEIA公司的PhysX物理引擎,加入了模拟物理计算和AI计算,这使测试更加贴近CPU在真实游戏中扮演的角色。可以看出,3DMark06更加侧重于衡量整机在真实游戏中的性能。
3.改变了得分计算方法
3DMark系列软件之所以成为深受大家青睐的显卡测试工具,和它简便易用的测试方法是分不开的。不过,3DMark06在成绩计算方法上有了不小的改变:CPU得分将计入综合得分中,而且SM2.0和SM3.0/HDR的测试分数将分别列出,并计入总分。这样一来,程序将更清楚地反映显卡在SM2.0和SM3.0模式下的性能。
注:3DMark06推荐系统配置
* 兼容DirectX 9的显卡,最低支持Pixel Shader 2.0,显存容量为256MB或更大。
* 主频为2.5GHz或以上的处理器
* 1GB内存
* 1.5GB硬盘空间
* Windows XP SP2操作系统(安装最新补丁)
* 安装DirectX 9.0c、Excel 2003和IE6
* 在运行HDR/SM3.0显卡测试时,显卡必须支持Pixel Shader3.0
3DMark06常规测试项目
3DMark06测试的最后分数由SM2.0、HDR/SM3.0和CPU的表现决定。其中SM2.0测试部分包括“Return to Proxycon”和“Firefly Forest”两个场景;而HDR/SM3.0测试则包括了“Canyou Flight”和“Deep Freeze”两个场景;CPU测试部分由“Red Valley”场景构成。
SM2.0和HDR/SM3.0的得分主要根据场景GT1和GT2来决定;CPU得分主要由CPU1 fps乘以CPU2 fps的值开平方以后再乘以2500得到;而3DMark06的最后分数公式中显卡和CPU得分是变量,其中显卡得分计算公式有两种,判断方法主要是根据显卡是否支持HDR/SM3.0——如果显卡不能完全支持HDR/SM3.0,此时它的得分会有一定的增加。这样一来,某些不完全支持HDR/SM3.0但性能又较强的显卡不至于得分较低。值得注意的是,随着CPU对3D性能影响的增大,3DMark06的常规测试中CPU测试将会被强制进行,同时CPU的测试成绩也将会影响最后的总分。
3DMark06得分计算公式:
SM2.0得分=120×0.5×(SM2 GT1 fps + SM2 GT2 fps)
HDR/SM3.0得分=100×0.5×(SM3 GT1 fps + SM3 GT2 fps)
CPU得分=2500×Sqrt(CPU1 fps×CPU2 fps)
总得分=2.5×1.0/[( 1.7/GS+0.3/CPU得分)/2]
对于只能进行SM2.0测试的显卡,GS得分=0.75×SM2.0得分
对于可完成所有测试的显卡,GS得分=0.5×(SM2.0得分+HDR/SM3.0得分)
1.Return to Proxycon测试(SM2.0)
用过3DMark05的朋友对Return to Proxycon场景一定不会陌生,但这里并不是旧瓶装新酒,它是在3DMark05的基础上对引擎进行了升级,包括艺术效果和阴影技术。该场景对硬件要求相对较低,只要显卡支持SM2.0就可以。SM2.0在动态阴影技术帮助之下带来了更精美的画面和更多的光影变幻。该场景场面十分庞大,是一项特别适合于多人联网射击游戏的测试项目。
为了使太空船内部的地表和物体更好地表现出金属感,这里使用了经典的Blinn-Phong(3D模型的着色方式)的光照模型(光照模型是图形渲染的基础,使用各种不同的光照模型可以表现各种不同物体表面属性。Blinn-Phong光照模型由著名的图形学家Blinn所提出,由于它使用了“双向反射率”和“微平面法线”,因此很接近现实中的塑料、金属等物体表面质感;而Phong则加入了高光系数可以渲染出高光的效果)。太空船中的天花板上有多个光源,但是其中大多数光源来自上方或者后部,另外还有一个方向性光源(Directional Lights)照射采用CSM(Cascaded Shadow Maps,层叠阴影映射)模式来生成被照射物体的阴影。
此外,该场景有很多点光源作为照明,其中大部分产生了阴影。走廊采用了点光源投射阴影(Point Light Throwing Shadow),采用1024×1024×6规格的立方硬件阴影贴图。整个场景一共使用了26个光源(3DMark05中只有8个)。
小知识:什么是GSM
CSM是一种对全屏范围内所有物体进行独立高质量渲染的技术,它把Z轴分为五个部分,每个部分都采用统一的2048×2048阴影贴图。如果硬件支持深度纹理,将使用D24X8或者DF24深度贴图;如果硬件不支持,那么将用R32F单结构浮点纹理来代替,此时将禁用硬件阴影贴图。如果需要高精度渲染而且硬件阴影贴图默认打开,那么单个缓冲将被使用五次。
2.Firefly Forest测试(SM2.0)
Firefly Forest测试场景也是由3DMark05改进而来。两者相比,3DMark06在以前的基础上增加了另外一只萤火虫。这个场景描述了森林被满月照射时,但光线仍然有些微暗,萤火虫会发出更为强烈的光线以照亮自己飞过区域的景象。
在这个场景中,周围环境为茂密的植物及部分岩石,能见度较低,场景中地面材质的处理方式与第一场景类似,采用了Blinn-Phong光照模型,与之不同的是增加了漫反射效果。该场景中岩石由金属材质光泽的贴图构成,场景采用了高细节的几何模型,以及大气散射和雾化效果。场景中月光同样为方向性光源(Directional Lights)并采用CSM模式来生成被照射物体的阴影,萤火虫则是点光源投射阴影。
3.Canyon Flight测试(SM3.0)
SM3.0的第一个测试场景虽然也来自于3DMark05,但它所采用的引擎已经有了翻天覆地的变化——不仅使用了SM3.0技术,而且HDR效果布满了整个屏幕,并使用了全新的阴影滤波技术。该场景描述的是一个飞艇经过被海洋怪物保护的峡谷,在用重炮攻击无效后,飞行员点燃后燃器逃离峡谷。
该场景采用了大量HDR渲染,并且有平滑的阴影处理和复合SM3.0处理。SM3.0与SM2.0相比,优势在以下几个方面:
(1)渲染程序指令限制 (Shader Length)的增加意味着Pixel Shader 3.0可以支持更复杂的绘图指令演算、容纳更多的光影及材质运算、让游戏开发者的限制进一步减小,从而使得游戏画面有着更多的表现;
(2)动态流程控制/动态分支选项(Dynamic Flow Control/Dynamic Branching),不仅可以直接省略许多非必要的程序运算段,也可以略过许多不需要用到的指令部分,从而减少运行指令集的长度,提高显示核心的运算效率;
(3)多重渲染目标(Multiple Render Targets, MRT)可以使显卡不用重复计算场景,并且,在场景中看不到的物体模型也会被略过不再计算,以提高显示芯片运行游戏的性能;
(4)顶点材质(Vertex Texture)在SM3.0中可以直接存取材质数据,为场景中的每个组件、表面及角色提供更高的层次感与逼真度。
4.Deep Freeze测试(SM3.0)
Deep Freeze是一项全新的测试场景,主要展示了一个南极探险基地情形。HDR(High Dynamic Range,高动态范围)技术是该场景最大的亮点。Deep Freeze是一项全新的测试场景,主要展示了一个南极探险基地情形。
地面的雪和金属箱子采用了不同的渲染方式,其中雪采用了Blinn-Phong处理,包括2个Normal Map和1个Color Map,通过粒子的重力和不同种类雾的使用,场景很好地营造了暴风雪的气氛。随着太阳落山周围环境发生了显著的变化,为了实现这一效果采用了两对立方体贴图混合处理,分别负责散射与反射,弯曲是按照实际物理现象渲染的。天空采用比较简单的大气光源散射效果,在日落的时候,两种立方贴图的混合达成,一种是散射而另外一种是镜面反射。场景中HDR的处理值动态范围在11.000左右,只有强劲的显卡才能运行自如。
5.Red Valley测试(CPU测试项目)
通过降低图形测试场景分辨率来获得CPU成绩的做法,在3DMark06身上并没有得到延续,Red Valley(红色峡谷)是为CPU量身定做的一个测试场景。
我们知道,游戏场景所产生的负载来自于游戏逻辑、物理处理和AI(人工智能)设计,其中AI设计对于游戏可玩度的提高非常重要,而物理处理正是作为3D辅助渲染而产生的。3DMark06的物理引擎采用了AGEIA公司(因PPU而闻名)的产品。在整个测试中,CPU被锁定在一个较低的帧速下,以保证图形性能不会影响到CPU的分数,基于同样的理由,测试场景也没有用动态阴影技术。CPU的测试包括两个不同的项目,它们分别在寻找路径的负责程度、AI高低、持续时间上有一定区别。
Return to Proxycon场景中采用了更精细的纹理和更复杂的阴影
相对于前作,Firefly Forest场景中的光源复杂程度明显提升
Canyon Flight场景中水面的反射和水怪的身体都采用了HDR
漫天风雪和场景中极高反差都是SM3+HDR的功劳
Red Valley为一个带有曲径的峡谷场景
3DMark06特性测试项目
尽管在3DMark06中通过Game Test和CPU Test就能获得一个3DMark得分,并以此衡量整套系统在未来3D应用中的表现。但是,对于高级用户来说,他们还需要进行更深入的特性测试以找出瓶颈所在。
1.填充率测试(Fill Rate Test)
自3DMark99开始填充率测试就成了3DMark系列软件必备的项目。填充率对于显卡来说是一个至关重要的性能指标,它的大小会直接影响显卡的纹理/像素吞吐量。如果没有极高的填充率作为支撑,显卡即使有再多的特性和功能也没用。
3DMark06的填充率测试被分成单纹理填充率测试和多重纹理填充率测试。单纹理填充率测试采用了2×2规格的纹理和64Quad的组合方式充满画面。多重纹理填充率测试则采用了2×2的纹理和8Quad的组合方式充满画面,此时每个Quad都将会被叠加8层纹理并且进行混合操作。通过这样的小尺寸纹理测试设计,3DMark06能够较好地避免显存带宽对显卡填充率的制约,所以3DMark06填充率测试的结果将会相当逼近显卡填充率的理论值。
2.顶点渲染测试(Vertex Shader)
作为3D图形处理的关键步骤,显卡的Vertex Shader(以下简称VS)处理单元的强弱,将会直接决定整个显卡的3D性能表现。
自3DMark03以来整个VS测试就被分成了简单VS测试和复杂VS测试两个部分。其中,简单VS测试中整个测试场景仅包含简单的顶点转换和单个顶点光源计算。测试场景中4个海怪,每个都由100万个顶点构成。在测试过程中海怪将会不断旋转,显卡就需要根据光照和海怪的位置不断进行顶点处理以保证渲染正确。此前的3DMark这样的场景是采用VS 1.0编写的,但是为了符合显卡发展趋势,3DMark06已经将VS重新用SM 2.0和SM3.0编写。
至于复杂VS测试,则是通过VS 2.0/3.0编写出一个随风而动的草地场景来进行测试。在这个场景中除了草地上的波纹是通过CPU计算之外,其他的诸如顶点转换和光照变化等都完全由GPU完成。这样的场景不仅会对GPU的顶点渲染单元造成极大的压力,GPU的纹理填充能力也将影响最终的测试结果。
3.像素渲染测试(Pixel Shader)
对于现在的显卡来说,可编程性已经是必备的功力。因此,显卡执行Pixel Shader(以下简称PS)和VS的能力也变得越来越重要,而各个显卡制造商也在想方设法提升产品的渲染执行能力。为了适应显卡的迅速发展,在3DMark06中PS部分测试有了极大的变化。
在3DMark06的PS测试中你所看到的粗糙岩石表面是采用Game Test中HDR/SM3.0测试的渲染程序生成。在测试过程中照射在岩石表面上的光源会不断变化,从而考验GPU的PS处理能力。在这个场景中3DMark06并没有采用任何的实时阴影和水面效果,光源变化产生的阴影完全由顶点光照生成。
通过这样的测试设定,3DMark06完全避免了动态阴影对测试结果的影响,因此PS测试能够很好地表现出GPU在执行复杂PS程序时的性能表现,同时显卡的显存控制器效率和显存带宽也将会直接影响这个测试项目的结果。
4.Shader粒子测试(SM3.0)
Shader粒子测试是3DMark06中新加入的测试项目。为什么要在特性测试中加入这样的项目?事实上粒子的计算在众多游戏中大量出现,譬如游戏中的爆炸火光、烟雾和汽车尾气等都需要通过粒子计算来实现。
但是在SM3.0出现以前,由于VS无法直接对纹理进行操作,使得所有的粒子计算都要交由CPU来完成。显然,面对并行性如此高的粒子计算,CPU变得非常低效。为了解决这个问题,微软在SM3.0中引入了VTF(Vertex Texture Fetch,顶点纹理拾取)功能。通过VTF,游戏开发者就能在VS中实现对纹理进行操作等指令,从而实现诸如硬件置换贴图和粒子计算等效果。
而在未来的游戏中将会更多地使用GPU来实现粒子计算以释放CPU资源去执行其他应用。必须指出的是,尽管ATI的Radeon X1000系列显卡支持SM3.0,但由于缺少关键的VTF支持,所以它们依然无法完成Shader粒子测试。
在Shader粒子测试中一共包含了409600个粒子,GPU需要对每个粒子进行欧拉综合轨迹计算和简单重力、空气阻力计算。与此同时,显卡还需要在垂直方向对所有粒子进行碰撞检测。
5.Perlin Noise测试(SM3.0)
对于游戏开发者来说,Perlin Noise是他们最为熟悉的噪声函数。通过Perlin Noise游戏开发者能轻易地制作出各种火焰、云彩、奇形怪状的岩石,以及树木和大理石表面等不规则3D对象。在SM3.0出现以前,几乎所有的Perlin Noise都依靠CPU计算完成。现在游戏开发者只需要通过DirectX 9 SDK中对应的Perlin Noise函数,就能编写出Perlin Noise Shader。
3DMark06中的Perlin Noise测试是由一组8个3D Perlin Noise计算构成。整个场景都采用PS 3.0标准编写,使用了48个纹理查找操作指令和447条运算指令。值得注意的是,SM3.0中PS最多只能包含512条指令,因此这个场景中的495条PS指令已经逼近了SM3.0的上限。
6.批量尺寸测试(Batch Size Test)
所有显卡制造商在他们的显卡优化指南中都不断强调希望游戏开发者尽量使用更大批量的三角形以显著提升效率(大批量相同三角形可以通过驱动简单优化而获得性能提升)。但在小批量三角形绘制中显卡制造商却因为种种原因并没有对它进行足够的优化,Batch Size Tests正是为了测试不同显卡制造商在批量三角形生成方面优化能力差异而设计。
整个测试循环进行六次,每次采用不同的批量的三角形绘制,分别是8个、32个、128个、512个、2048个和32768个。通过这个测试,我们能够确定显卡驱动对批量三角形的优化水平。
结语
3DMark06的发布对于现阶段的硬件来说,无疑又是一个梦魇。在3DMark06中,我们除了看到更加靓丽的画面外,还看到了现在高性能硬件在3DMark06中被“摧残的惨状”。作为FutureMark精心打造的3D测试大作,3DMark06凭借更精美的测试画面、更合理的测试方式和更高的硬件需求,势必掀起新一轮的硬件升级波。
简单Vertex Shader测试中不断旋转的海怪
通过一个随风而动的草地来测试顶点渲染
单纯采用渲染生成的岩石场景
测试中,3DMark06用128×128的矩阵绘制了一个128网格的图形
小资料:3DMark系列发展史
1999年,Voodoo、TNT显卡引领市场,而微软借助DirectX 6在3D API(应用程序接口)领域与OpenGL和Glide形成三足鼎立的局面。这时,一家名为“疯洋葱”(Madonion)的芬兰软件公司发布了首款基于DirectX 6的显卡测试软件——3DMark99 Max。该软件主要测试显卡的顶点转换、光照能力及多材质填充能力。但是3DMark99的影响力相当有限,因为当时的显卡对系统整体性能的影响不如现在大,而且当时3D Winbench和Quake系列测试软件正如日中天。

随着Voodoo的没落和TNT显卡的迅速崛起,微软发布了新一代的DirectX 7规范,并一举占领了3D API王国的宝座。为此,Madonion在2000年适时地推出了3DMark2000。与前作相比,3DMark2000测试场景的复杂性有了大幅提高,它给显卡评测带来了前所未有的视觉冲击和便利。不过,3DMark2000对CPU的依赖性还是比较大。

紧随着DirectX 8的问世,Madonion于2001年3月14日推出了与之对应的3DMark2001。该版本在光照效果的处理方面非常突出,并能完善测试微软首次在DirectX 8中引入的Pixel Shader(像素着色)和Vertex Shader(顶点着色)技术。3DMark2001的推出,正式确立了Madonion在D3D测试领域的霸主地位。由于微软在发布DirectX 9之前推出了DirectX 8.1,因此Madonion也相应地对3DMark2001进行了升级,它便是至今仍被广泛采用的3DMark2001 SE。

2002年12月11日,Madonion宣布将名称改回FutuerMark。2003年2月12日,3DMark03在万众期待中款款而来。而在此前不久,微软也刚刚推出DirectX 9。3DMark03的问世,让NVIDIA当时的GeForce 4 Ti4200、Ti4600等DirectX 8显卡黯然失色,而ATI主推的Radeon9700、9500等产品借助优良的架构和对DirectX 9的完整支持,取得了不俗的测试成绩。不过,在经历了2003年下半年的“驱动优化”事件后,3DMark系列的权威性受到了严重的打击,而AquaMark 3的异军突起更是雪上加霜。

为了扭转3DMark03造成的不利局面,2004年9月29日,FutureMark推出了3DMark系列的第五代产品——3DMark05,它的诞生正式宣告显卡全面进入DirectX 9时代。
数字实验室工程师谈
3DMark06
3DMark06从测试场景来看似乎有“偷工减料”的嫌疑,除两个CPU测试场景外,其他的4个游戏测试场景有3个“改编”自3DMark05。3DMark06对测试平台的要求相当高,而且,还有一处很大的变化,就是默认的测试分辨率为1280×1024,这给测试成绩带来了更大的压力。依据我们的测试,同一块显卡,如果在3DMark05的默认分辨率1024×768下能跑5000分,那么在3DMark06的1024×768分辨率下得分基本会下降40%以上,如2700分。但在默认的1280×1024分辨率下,得分下降幅度往往会超过50%,如仅能达到2300分左右。可想而知,对于那些本身在3DMark05下得分就很低的显卡,3DMark06的成绩会“惨不忍睹”。
3DMark05的显卡性能得分和CPU关系不大,不同CPU下,同一显卡的得分差异相当小,这也是测试工程师非常喜欢3DMark05的一个重要原因。不过3DMark06完全改变了这一点,测试中强制引入了CPU运算测试,得分计算中CPU成绩也扮演着相当重要的角色。也就是说,同一块显卡,如果CPU不同,得分将有迥然差异。这一变化对测试环境提出了更高的要求:要想对不同的显卡在不同时期(因为发布的时间不一样)进行性能优劣对比测试(这也是各IT媒体评测单位的主要测试项目),必须用相同的测试平台(尤其是CPU)。而另一方面,由于CPU因素的引入,也使得测试得分对系统性能的体现更为直观。
这是非常有趣但又非常残酷的变化,甚至Intel和AMD两大处理器厂商也会为之动容——以前用同种内存、显卡搭建的平台来对比CPU性能时,只有PCMark等少量软件能给出系统综合得分,但在单纯的3D游戏性能方面,因为3DMark05对CPU的反映并不明显,所以还没有真正直观权威的成绩以体现差异(各种游戏帧数的差异往往是各有千秋,且缺乏真正具有权威性的游戏)。但作为业界标准之一的3DMark06引入了CPU因素后,同一显卡在不同CPU下的得分差异就极有可能被视为CPU在3D游戏性能上的直接差异,这一对比是赤裸裸的,也是非常残酷的。