革命性DX11架构!GTX480470权威评测

2010-04-06 18:01  出处:PConline原创  作者:佚名   责任编辑:zhengwanglun 

  一次又一次的跳票,让整个业界对于NVIDIA的Fermi捏了一把冷汗;比对手晚整整半年,GF100吊足了玩家的胃口也在考验他们的耐心;历史上因难产而失利的NV30和R600依然历历在目,NVIDIA遭受了前所未有的压力。

  与自身架构存在问题的NV30和R600不同,GF100难产的主要原因是台积电40nm工艺不够纯熟,当然这也与NVIDIA采用大核心策略有关系,30亿晶体管可不是个小数目,整整比对手多出了50%,设计和制造难度之大可想而知。

  与简单扩充规模加入DX11支持的RV870不同,GF100采用了全新的图形架构,是近五年来GPU架构改进最大的一次,NVIDIA针对客户和用户的需求,大幅加强了对GPU并行计算和DX11图形计算的优化支持,用NVIDIA的话说这是迄今为止最完美的GPU。

革命性DX11架构!GTX480/470权威评测

  那么GF100核心到底有何革命性的改进?首款高端显卡GTX480/470的具体表现如何?能否击败对手的HD5870/5850甚至5970?发烧玩家们苦苦等待半年之久是否值得?一切的一切都将在本文中揭晓!

第一章 让游戏运行效率更高!DirectX 11全面解析

  图形API每逢世代交替都是有人欢喜有人忧:DX9让9700成为经典,让5800跌入低谷;DX9C让6800风光无限,让X800暗淡无光;DX10成就了8800的霸主地位,让HD2900一败涂地;DX11则让HD5800抢得先机。

  正因为如此,AMD-ATI在经历了R600的惨败之后,开始信奉“先入为主”的理念(AMD的口号是“先行者胜”),对于微软新的图形API十分热衷,不但第一时间对过渡性的DX10.1提供支持,而且以迅雷不及掩耳之势发布了全线DX11显卡。

  但ATI只是在上代产品基础上加入了新的ShaderModel指令集而已,对于GPU图形架构的改进十分有限甚至原封未动。NVIDIA并不认同这种做法,他们认为在革命性的图形API到来之际,必须对GPU架构做相应的调整,以适应未来新技术与新指令的需要,提高GPU渲染效率。

  那么我们首先必须了解,DirectX 11 API究竟带来了什么,对GPU提出了什么新的要求?

第一章/第一节 革命性的DirectX 10回顾

    在过去的十几年时间里,DirectX已经稳步成为微软Windows平台上进行游戏开发首选API。每一代DirectX都带来对新的图形硬件特性的支持,每次版本变更都能帮助游戏开发者们迈出惊人的一步。就拿近几年来说,DX9、DX9C、DX10及相关显卡的发布都带来了令人惊讶的游戏画面,给与玩家无与伦比的游戏体验。

  尤其是DX10发布后,以Crysis为代表的FPS游戏画面达到了巅峰,显卡实时渲染出来的人物及风景效果足以媲美照片、CG动画甚至是电影,让人叹为观止!

决不忽悠!DX10游戏性能免费提升2.5倍   决不忽悠!DX10游戏性能免费提升2.5倍
首款DX10游戏《失落星球》DX9对比DX10,牺牲一半速度,画面改进有限

  但DX10也不是完美无暇的,其缺陷也很明显,那就是运行效率比较低。当游戏开启DX10模式后,性能下降幅度非常夸张,以至于第一代DX10显卡GeForce 8800和Radeon HD2900都无法在特效全开的情况下流畅运行当时的任何一款DX10游戏!

  以三年前发布的DX10代表作Crysis来说,其画面堪称完美,但时至今日依然没有任何一款单核心显卡能在VeryHigh模式下流畅它!即便是顶级的双核心显卡运行起来也很吃力,是因为GPU的发展速度太慢吗?不是的,两年时间显卡的性能已经提高了3-4倍,GPU的发展脚步并没有放缓,问题归根到底还是DX10运行效率较差所致。

  下面就先来回顾一下DX10的主要特性:

  统一渲染架构让GPU运算单元的利用率更高,但新加入的几何着色器却加重了流处理器的负担,超级复杂的画面场景也给流处理器造成了更大的压力。因此在这几年内,纵使GPU的流处理器数量大增2-3倍、频率也稳步提升,但依然不够用。

第一章/第二节 过渡性的DirectX 10.1回顾

  DX10带来了众多绚丽无比的新特效,“滥用”各种特效导致GPU不堪重负。而GPU自身的发展受到诸多因素的制约,如果制造工艺跟不上的话运算能力很难取得突破。因此,必须通过不断改进架构运算效率来进一步提升3D图形性能。在DX10之后,微软也开始将重心集中在如何提升算法和效率上面,而不是一味的加入新特效或提高模型复杂度。

  此后微软发布了DX10.1 API,对DX10进行了小修小补,DX10.1主要更新内容有:

  DX10.1的更新内容虽然不少,但相比DX10没有什么革命性的改进,大部分内容都是提高GPU的资源利用率、将一些可选标准列为必须,其实不少项目DX10显卡通过修改驱动就能实现。因此DX10.1没能得到游戏开发商足够多的重视,并没有像当年的DX9C那样迅速成为主流。

  ATI从HD3000系列开始,也就是第二代DX10显卡中,就全面提供了对DX10.1 API的支持。而NVIDIA则认为DX10.1没有带来任何新的特效,DX10显卡也可以用不同的渲染模式达到相同的效果,因此迟迟没有加入支持。

  直到以《潜行者:晴空》和《鹰击长空》为代表的几款游戏大作支持DX10.1,并且使用新的指令集大幅提升游戏运行效率之后(主要是改进了“透明抗锯齿”和“屏幕空间环境光遮蔽”的性能),NVIDIA意识到了DX10.1的重要性,在去年下半年发布的GT240/220/210等低端显卡中加入了DX10.1的支持。

  DX10.1虽然画面方面改进有限,但运行速度确实加快了

  实际上,DX10.1只不过是微软的一个试水石,其目的非常明确,那就是尽可能的提高DX10的渲染效能,达到节约GPU资源的目的,而DX11正是基于这种设计理念而来的。

第一章/第三节 全新的DirectX 11诞生,为高效率游戏而生

  从游戏画面逼真度来看,短期内恐怕没有哪款游戏能够达到Crysis的高度,但是这款依靠暴力模型、着色技术和诸多特效堆积而成的游戏,对显卡的要求之高令人叹为观止,至今都没有哪颗GPU敢打包票说能在最高特效下面流畅运行。也就是说CryEngine 3是丝毫没有考虑现有GPU的性能而开发的一款超级引擎。

  以高效率著称的虚幻引擎缔造者Tim Sweeney称,想要把现有游戏模型复杂度提高数十倍是很容易的事情(比如CG模型和影视渲染),但同样的你也需要数十倍与现有主机机能的显卡才能流畅运行,比如三路甚至四路顶级系统,而这种系统的市场占有率连1%都不到,独孤求败的Crysis还卖不过快餐式的使命召唤系列、Cryengine至今无法染指游戏机领域就是这个道理。

  所以,架空硬件的引擎是不可取的,唯有充分利用有限的GPU资源,通过各种辅助技术最大化画面表现力,才是图形技术公司和游戏开发商首当其冲要解决的内容。

  因此,在DX10发布四年、成为主流之后,业界将期望都寄托在了DX11身上,虽然DX11并没有带来全新的特效,但却通过各种手段提升了GPU的渲染效率,当GPU有了富裕的运算资源之后,游戏开发商就可以大胆的去使用更多的特效和技术,如此一来DX11游戏很容易就能从画面到速度全面超越DX10游戏!

    DX11最关键的特性有以下五点:

1. Tessellation:镶嵌式细分曲面技术(第二章做专门解析)
2. Multi-Threading:多线程处理
3. DirectCompute 11:计算着色器(第三章做专门解析)
4. ShaderModel 5.0:着色器模型5.0版
5. Texture Compression:纹理压缩

  DX11的五大关键特性也有主次之分,其中Tessellation和DirectCompute 11堪称革命性的技术,前者可以大幅提升游戏画质、后者可以大大提高游戏效率,因此笔者将其单列一章专门做详细介绍。那么首先我们来看看另外的三大关键特性。

第一章/第四节 Shader Model 5.0

  Shader(译为渲染或着色)是一段能够针对3D对象进行操作、并被GPU所执行的程序,ShaderModel的含义就是“优化渲染引擎模式”,我们可以把它理解成是GPU的渲染指令集。历代DirectX每逢重大版本升级时最主要的更新内容就包括在了ShaderModel之中:

  ShaderModel 1.0 → DirectX 8.0
  ShaderModel 2.0 → DirectX 9.0b
  ShaderModel 3.0 → DirectX 9.0c
  ShaderModel 4.0 → DirectX 10
  ShaderModel 5.0 → DirectX 11

  高版本的ShaderModel是一个包括了所有低版本特性的超集,对一些指令集加以扩充改进的同时,还加入了一些新的技术,现在我们就来看看DX11 SM5.0都有哪些新特性:

  由于统一渲染架构的特性,Shader Moder 5.0是完全针对流处理器而设定的,所有类型的着色器,如:像素、顶点、几何、计算、Hull和Domain(位于Tessellator前后)都将从新指令集中获益。

  其中,覆盖采样及Gather4纹理拾取两项指令是从在DX10.1基础上发展而来的,SM5.0要比SM4.1更加智能和灵活,它可以针对特定颜色分别采样、还能自动识别可做阴影映射的值,精度和效率都进一步提高。

  由于DX10.1与DX10在指令方面的相似性,现有的DX10.1游戏可以很容易的通过更新程序代码升级支持DX11,从而获得更好的运行效率,比如《BattleForge》和《STALKER》这两款DX10.1游戏率先对DX11提供了支持。

第一章/第五节 Multi-threading多线程处理

  如果一个软件能够对多核心多线程处理器进行优化的话,那么在使用双核或四核处理器时,其运行效率将会提升2-4倍,遗憾的是如今的游戏都无法支持多核处理。

  通过大量的游戏性能测试来看,GPU占绝对主导,而CPU只是考验单核效能,通过对CPU极限超频可以让游戏性能提高不少,但使用四核或者带HT技术的“八核”处理器几乎不会有任何性能提升。在多核成为大势所趋的情况下大量CPU资源被白白浪费,瓶颈可能依然卡在CPU上面。

  DX11当中新增的多线程处理技术,则是专门针对多核应用而生的,它通过引入“延迟执行”的指令将一个渲染进程拆分为多个线程,并根据处理器核心/线程数设定延迟执行内容的数目。多线程的涵义是非常广的,每一帧画面可以被分为几个图层,每个图层又可以分为N个区块,所有的这些都可以被并行调度到延迟执行的线程之中。

    这是一项很聪明的技术,标记为“立即执行”的线程与传统的渲染没有区别,而标记为“延迟执行”的线程则可以在后台将图形生成所必须的资源做预先的存取,比如纹理拾取、像素生成、常数缓冲等操作都可以多线程并行处理,通过多核CPU富裕的资源来减少程序等待时间,从而使得渲染不再受到CPU的瓶颈制约。

  多线程技术是非常灵活的,它既可以在游戏中通过程序代码来控制,也可以通过DirectX自动分配,还能够通过驱动程序进行优化。即便是驱动没有针对多核进行优化,DX11运行库也会通过模拟的方式提供新的功能,也就是说所有DX11游戏都将或多或少的从多核多线程CPU中获益。

  多线程技术的引入对于双卡甚至多卡互联系统更为重要,以往多颗GPU在DirectX中只能模拟成一个虚拟GPU,所有的GPU必须共享指令缓冲区并接受CPU调度,渲染线程的拆分与合并指令延迟都很大,GPU越多则效率越低!而在DX11当中,如果用多核CPU搭配多路SLI系统的话,每颗CPU都可以单独控制一颗GPU的渲染线程,在均分CPU负担的同时,提高了GPU资源利用率,从而大幅提升游戏性能。

  NVIDIA称,GTX480 SLI在DX11游戏中的性能几乎达到了单卡的两倍,而不再是以往的1.8倍左右,这其中DX11多线程技术功不可没,当然也需要驱动程序的大力优化支持。

    其实多线程技术也能应用在DX9/DX10甚至是OpenGL上面,但由于API及函数指令的限制,开启多线程会产生很多重复的指令,导致性能提升有限甚至不升反降,因此微软并不建议在旧API模式开启多线程模式,除非程序员做过严格的测试与优化。
第一章/第六节 两种新的纹理压缩格式

  丰富的纹理细节对于最终图像的质量尤为重要,目前的游戏也都在朝着超大规模、超精细的纹理细节方向发展。但是,大规模的纹理非常占用显存以及带宽。而纹理压缩就是为了解决这个问题,将大规模的纹理以一种优化的算法进行压缩。试想,如果图象的纹理都不进行压缩的话,那么2GB的显存容量恐怕都不够用。

  但是,目前纹理压缩技术并不支持HDR(高动态范围)图像,这也是开启HDR很占用显存的一个很大的原因。为了解决这个问题,DirectX 11加入了两种新的压缩算法——BC6H和BC7。其中,BC6H是专门针对HDR图像设计的压缩算法,压缩比为6:1;而BC7是专门给高品质RGB[A]纹理设计的压缩算法,压缩比为3:1。

  上图展示的是图像通过BC6H压缩模式进行压缩的前后效果对比图。其中左边的图像为原始图像,中间的是在压缩过程中损失的一些细节,而右边的就是压缩后的图像。可以看出,从画质上来看几乎没有损失(肉眼看不出),但是却可以大幅度降低显存的占用。

  这幅图展示的是BC7针对LDR纹理的压缩与传统的BC3纹理压缩对比。可以看出传统的BC3纹理压缩损失了大量的纹理细节,压缩之后的效果也很不好。而采用BC7算法压缩后的纹理,丢失的细节很少,效果也非常好,这就是改进纹理压缩的魅力。

键盘也能翻页,试试“← →”键