新浪科技

DX11好在哪? 分析游戏画质看DX11优势

中关村在线

关注

作者:中关村在线 濮元恺


第1页:DX11核心元素与精品游戏解析

   ● DX11核心元素与精品游戏解析

   长期以来我们已经习惯了PC游戏的不断升级换代,但是当我们关注这背后的推动力时,不难发现微软的DirectX API才是最为关键也是最为致命的一点。Direct Graphics API的不断进步让游戏引擎发展速度超乎想象,游戏的层出不穷也就有了不断更新的技术作为支撑。Direct Graphics的优秀表现和微软的影响力,令无数硬件厂商生畏并不断遵循其变化来开发新的图形处理器架构。

   不过对于广大游戏爱好者来说,当时购买或者下载到一款全新游戏时,是否能明白这款游戏在图形技术方面的独到之处?是否能够通过自己的眼睛辨别出这款游戏是否具备当今最先进的真正的DirectX技术?如果做到了这些,相信这部分玩家已经到了看GPU架构图和游戏细节截图,就能知道自己购买的显卡能否与游戏匹配。


   对于笔者来说,长期用各种PC游戏对显卡做评测,已经成为一种思维定势,但是偶尔跳出来这个圈子想想,文章提纲与测试标准制定都公平合理吗?特别是在DirectX 11成为全行业关注的热点时,我们所选用的游戏能否带给玩家最中立和准确的结果。

   现在问题就回到了游戏的选择方面,笔者心中最为合理的DirectX 11游戏有以下几个重要特点:

   1、彻底抛弃家用机平台,即便为家用机平台开发对应版本也要使用不同引擎;
   2、使用完全重写的原生的而不是在原有旧引擎基础上扩展DirectX 11特效的图形引擎;
   3、让Computer Shader技术充分介入图形过程去实现特效;
   4、充分利用并行kernel提升执行效率;
   5、不过量但绝对不会畏首畏尾的Tessellation技术。

   之前中关村在线显卡频道已经通过多篇文章分析讲解了微软在2009年推出的浅析DirectX 11技术带给图形业界的重要改变,同时运用14款显卡对不同方面的DirectX 11技术特性做了较为全面的分析,今天的文章我们将继续深入分析这些话题,将不同游戏对于DirectX 11的支持细节呈现给各位用户。


第2页:DirectX 11关键技术回顾(一)

       ● DirectX 11关键技术回顾(一)

   ● Tessellation技术简析

   Tessellation又可译作拆嵌式细分曲面技术。Tessellation主要是靠GPU内部的一个模块Programmable Tessellator(可编程拆嵌器)来实现的。能够根据3D模型中已经有的顶点,根据不同的需求,按照不同的规则,进行插值,将一个多边形拆分成为多个多边形。

   而这个过程都是可以由编程来控制的,这样就很好的解决了效率和效果的矛盾。 Tessellation能自动创造出数百倍与原始模型的顶点,这些不是虚拟的顶点,而是实实在在的顶点,效果是等同于建模的时候直接设计出来的。



两种全新着色器来全力配合Tessellator的工作

   Tessellation技术最初主要被用以“细分曲面”,随着该技术被纳入DX11范畴,得到大范围推广之后,插值顶点的算法也越来越多,因此用途也越来越广,产生了很多非常有创意的应用。Tessellation技术还经常与Displacement Maps(贴图置换)技术搭配使用,从而将平面纹理贴图改造成为具有立体感的几何图形,大大增强3D模型或场景的真实性。

   除了大幅提升模型细节和画质外,Tessellation最吸引程序员的地方就是:他们无需手动设计上百万个三角形的复杂模型,只需简单勾绘一个轮廓,剩下的就可以交给Tessellation技术自动镶嵌,大大提高开发效率;而且简单的模型在GPU处理时也能大幅节约显存开销,同时大幅提升渲染速度。

   ● Compute Shader助力图形渲染

   微软在DirectX 11引入了DirectX Compute概念,实际上这个概念在以前就存在不少应用。DirectX Compute在通用计算领域的增强,进一步提升了GPU通用计算的动能。OpenCL是GPU通用计算的API标准,它提供了并行计算API和一个扩展的编程语言,DirectX Compute增强了GPU通用性能,但由于重点不同,它与OpenCL完全不是竞争关系,反而进一步增强了OpenCL的实用性——DirectX 11提升GPU通用性能,基于OpenCL的通用计算程序将更富效率。


Compute Shader技术最常见用于处理景深

   DirectX Compute概念包括了我们下面即将介绍的Compute Shader技术,实际上我们可以理解为它们是一种技术,两种称谓方式。所以下文我们直接称呼这种让GPU通用计算来辅助图形处理的技术为Compute Shader技术。

   GPU是图形处理器,以往的GPU通用计算需要程序员先将资料伪装成GPU可识别的图像,再将GPU输出的图像转换为想要的结果,而通过DX11中的Compute Shader通用计算,任意类型的数据(即使是非图形数据)都可以直接进行计算,而且不受图形渲染流程的束缚,可以随时写入写出,GPU通用计算的效能提高了很多。


第3页:DirectX 11关键技术回顾(二)

       ● DirectX 11关键技术回顾(二)

   并行Kernel处理是微软为DirectX 11增加的最重要的三大核心更新之一。其主要目的在于在Kernel的级别上实现并行化处理,让Kernel队列变得更加有效,同时将并行执行能力引入到执行单元级。传统环境中图形流水线上的Kernel处于串行状态,无论Kernel中包含的线程是多是少,优先级是否合理,流水线都将以实现决定好的顺序实行穿行吞吐。这导致了ALU团簇因为Kernel排列不当经常会出现负载不平衡以及不均匀的现象。相对于过去,DX11环境下的ALU团簇可以更加及时的获得线程块,进一步提高了ALU的运行效率。



并行执行内核让资源利用更充分,计算速度更快

   从Fermi开始支持kernel并发运行,同一应用程序的不同kernel可以同时运行在GPU上。Kernel并发机制可以让应用还曾向执行更多的kernel来发挥GPU的能力。例如,PhysX应用程序需要计算流体和固体,如果是串行执行,只能利用一半的线程处理器。

   Fermi的架构可以让同一个CUDA context的kernel都同时运行在同一个GPU上,这样可以更有效的利用GPU的资源。不同应用程序context的kernel函数也可以通过更快速的context切换,更快地运行在GPU上。

   ● 全新的多线程渲染技术

   虽然超线程概念已经在CPU领域发展了数十年,但大多数程序员还是直到近年来多核心CPU流行之后才开始关心程序的平行化,在此之前大部分通用代码都是简单的单线程,在这些代码里寻找并挖掘多线程化带来的性能提升是非常困难的。

   为了改变这一现状,DirectX 11特性还包括很重要一点:支持多线程(multi-threading)。没错,无论是DirectX 10还是DirectX 11,所有的色彩信息最终都将被光栅化并显示在电脑显示屏上(无论是通过线性的方式还是同步的),但是DirectX 11新增了对多线程技术的支持。



从DirectX 10到DirectX 11的多线程变化

   得益于此,应用程序可以同步创造有用资源或者管理状态,并从所有专用线程中发送提取命令,这样做无疑效率更高。DX11的这种多线程技术可能并不能加速绘图的子系统(特别是当我们的GPU资源受限时),但是这样却可以提升线程启动游戏的效率,并且可以利用台式CPU核心数量不断提高所带来的潜力。


第4页:魔兽大灾变全面实现并行kernel

   ● 魔兽大灾变全面实现并行kernel

   从2004年3月18日北美和韩国官方BETA测试正式开始,魔兽世界(World Of Warcraft)将注定成为风靡全球的3D网络游戏大作。“燃烧的远征”“巫妖王之怒”“浩劫与重生”三部资料片陆续开放也召唤玩家一次又一次吹响战斗的号角。魔兽世界为何让全球玩家如此疯狂,也许只有真正体验过的人才会知道。



魔兽世界(World Of Warcraft)《大灾变》

   魔兽世界(World Of Warcraft)《大灾变》作为全新的资料片,在API支持方面推开一切阻力选择了微软全新的DirectX 11,这一改进不但提升了画质和执行效率,也为游戏界同行树立了优秀的范本。特别是在执行效率方面的提升几乎全部依赖并行化kernel计算的帮助。

   并行kernel可以理解为线程级的Unified Shader(统一渲染着色器),微软在DirectX 10中通过Unified Shader解决了Shader负载不均衡的问题,现在他通过并行Kernel解决了ALU团簇负载不平衡的问题。


DirectX 9(上图)与DirectX 11(下图)画质对比

   最近开始内部测试的第三部资料片《大灾变》(Cataclysm)突然向前跨出一大步,加入了对DirectX 11的试验性支持。开启DirectX 11渲染路径后,《大灾变》能看到非常明显的画质变化,特别是水面和岩浆的反射投影效果,人物角色和天空也都有了新的效果。

   我们的测试方式是建一个血精灵新账号,然后通过fraps录一个76秒的角色简介的飞行视频,这个的负载还不是很大,所以成绩领先不明显。

   但是通过图表可以看到,魔兽世界《大灾变》的DirectX 11模式是肯定比DirectX 9模式快很多,直接原因就是DirectX 11的并行kernel。其他显卡比如AMD方面的HD5770显卡在这个场景中,在DX9和DX11之间将近有100%的性能提升。


第5页:鹰击长空2加强曲面细分

   ● 鹰击长空2加强曲面细分

   《鹰击长空2》的系统需求并不高,至少在最高画面设定下,都可以获得近100fps的运行速度,即使将处理器更换为较慢型号,相信性能也足够可观。开启4×AA对于性能的影响在10%左右,影响不是很大,所以只要系统性能不是太低,建议玩家尽量开启抗锯齿以获得更平滑的画面效果。



鹰击长空2游戏测试

   而曲面细分的关闭与开启对于系统性能的影响就比较巨大了,帧速变化在40%以上,对于使用中低端DX11显卡的用户而言,如果画面流畅度不足,可以尝试关闭曲面细分效果。从另一个层面分析,如果是拥有强大曲面细分性能的NVIDIA GeForce400系列都会有如此大的性能变化,那曲面细分性能较弱的AMD显卡,则可能出现更明显的性能下滑,所以传闻中AMD要求媒体在测试HD6800系列产品是避免《鹰击长空2》的测试也许是真的。

   至于曲面细分在画面上所起到的作用,我们也进行了截图对比,大家可以对比一下。由于截图的时间点不是完全相同,所以角度上会有一定差异,但不影响差异的体现。我们主要对比了环境景物效果和飞机本身的效果差异。

 
曲面细分开启与关闭

   在环境景物方面,曲面细分的作用却是非常明显,通过两个场景100%大小的对比,大家可以明显的看到在开启细分曲面的情况下,山峦的细节丰富的多,更接近实际情况;而关闭细分曲面,则山峦又变回了直棱直角,要不是贴图修饰,就有点碍眼了。


游戏画面对比

   飞机自身的细节似乎没什么影响,无论是关闭还是开启曲面细分,飞机表面都没什么变化。可能育碧觉得玩家更多是从座舱视角去体验这款游戏,就忽略了这部分,也可以给显卡减负提高帧速。但如果在飞机细节上也使用一定程度的曲面细分技术,相信整个游戏的逼真度将会更高,可取更丰富。


第6页:地铁2033实现深度景深

   ● 地铁2033实现深度景深

   《地铁2033》改编自俄国作家DmitryGlukhovsky的畅销小说《Metro2033》,故事描述近未来爆发了核战,整个世界都笼罩在辐射之下,人类几乎死盡。仅存的人类躲藏在莫斯科的地铁站里,挣扎求生,布满辐射尘的地表已为各种变种生物所占据,地底的列车站台成了人们最后的聚集地。《地铁2033》最出色的地方在于利用了Compute Shader技术来处理景深,同时将Tessellation在整个游戏渲染中的重要性做了大幅度提升。



《地铁2033》游戏封面

   很多游戏开发者都对DX11新增的Compute Shader(通常简称为CS)特性啧啧称赞。CS的这一渲染管线能够进行更多的通用目的运算。我们既能在某种可以用来被执行数据的操作中看到这种特性,又能在某种可以用来操作的数据中看到这种特性。

   在DirectX11以及CS的帮助下,游戏开发者便可以使用更为复杂的数据结构,并在这些数据结构中运行更多的通用算法。与其他完整的可编程的DX10和DX11管线阶段一样,CS将会共享一套物质资源(也就是着色处理器)。

   相应的硬件需要在运行CS代码时更灵活些,这些CS代码必须支持随机读写、不规则列阵(而不是简单的流体或者固定大小的2D列阵)、多重输出、可根据程序员的需要直接调用个别或多线程的应用、32k大小的共享寄存空间和线程组管理系统、原子数据指令集、同步建构以及可执行无序IO运算的能力。


《地铁2033》DirectX 10与DirectX 11画质对比

   我们能够明显发现,《地铁2033》在DirectX 11下光线透明正常,射灯有真实的聚焦效果,受光照物体细节分明,层次感保持原状。新的DirectX 11环境提供了更加准确的光照效果,无论在光线混合还是阴影层次上都更加接近真实,并且在建模精度上也有大幅提高。对于追求画质感受的玩家来说,DX11绝对是不二之选。

   Compute Shader,也就是CS技术原则上可以处理一切效果。不过现在用得最多的,大体上是DOF(Depth of Field),也就是景深效果。HDR(High-Dynamic Range)高动态光照渲染目前已经不需要CS技术来实现,但是用CS技术来实现这些效果还是非常划算的。景深主要适合于第一人称视角游戏(First-person games)如使命召唤等游戏,景深效果可以让玩家沉浸在富于电影级别特效体验的游戏中,高效处理景深将成为实现真实游戏特效的重要环节。


第7页:《失落星球2》综合技术应用

   ● 《失落星球2》综合技术应用

   《失落星球2》的游戏舞台是前作故事发生后十几年之后经过温暖化改变的EDN-3rd,这里将新增丛林等新场景,主人公也并非前作那样为一人,而是以“雪贼”们不同的视点展开故事。与前作相同,《失落星球2》采用CAPCOM公司原创引擎MT Framework的最新版VER.2.0进行开发,游戏世界的表现将更加细致和美丽。



《失落星球2》Benchmark程序放出

   相对于前作针对DirectX 10开发的测试程序,本次放出的游戏Benchmark则完全支持DirectX 11,并提供了TypeA与TypeB两种测试模式,同时也对应DirectX 9,各种设置都可以在程序启动界面中进行选择。


DirectX 11模式截图


DirectX 9模式截图

   TypeA模式是假定玩家正常进行游戏时的情况来进行测试,场景复杂程度以及特效都为随机状态,虽然这种测试方式对硬件施加的压力远未达到峰值,但可以有效确认玩家的个人PC是否可以游玩这款游戏,而且TypeA还支持3D Vision和3D Vision Surround技术,可以显示立体影像。


DirectX 11模式截图


DirectX 9模式截图

   TypeB则是支持DirectX 11的高压测试模式,画面构成复杂,特效绚丽。在《失落的星球2》中所使用的DirectX 11特效主要体现在“水面巨大BOSS”和“雪贼人物描画”两个场景,玩家可以在该模式下看到BOSS皮肤的变化和水波的自然摇动,这都是通过DirectCompute技术用GPU演算出来的。

   编辑总结:

   今天我们通过4款经典游戏来向用户描述了微软全新图形API——DirectX 11的技术特性和它对我们的游戏产业发展和PC游戏体验带来的帮助。我们知道虽然目前大多数游戏没有摆脱PC家用机的束缚,大多数游戏还是以DirectX 9.0为蓝本编写的,只是通过内核外挂或者添加曲面细分等特性来标榜自己是DirectX 11游戏。但是随着时间推移,更多游戏将会对DirectX 11进行更加完整更加完善的支持,越来越多的游戏引擎正在加速开发。

   通过我们之前的更多分析大家可以了解到,提升画质是每一代图形API不变的追求,在此同时指出现有GPU架构的不足,提出更多渲染方式的提升执行效率,才是微软想通过API提升不断解决的核心问题。回到笔者一直坚持的观点,如果GPU为了渲染更逼真的图形而只是放大规模,这显然不是GPU发展的方向。

   在GPU可编程性不断加强的环境下,通过诸如Tessellation、Computer Shader、并行kernel等技术来提升执行效率,达到更为准确的场景还原才是DirectX 11游戏在改进用户体验方面的目标。

加载中...