Vista和DirectX 10(转载)

根据微软的声明,DirectX 10只会集成在Vista系统当中,初期不会发布类似于DirectX 9.0c这样的单独安装版本,也不会支持Windows XP,显然,微软想依靠DirectX 10 API/硬件/游戏来诱惑更多的用户更快地升级到Windows Vista。

  这就意味着DirectX 10很可能将于2007年初伴随Vista发布,届时您想要体验DirectX 10游戏的话必须升级到Vista系统,当然一款DirectX 10规格的显卡也是必不可少的!

Windows Vista桌面基于DirectX 9

  Windows Vista系统并不是因为集成了DirectX 10 API而备受关注,实际上大多数用户都是被其漂亮的3D桌面所吸引。许多用户感到奇怪的是,Windows Vista的3D桌面仅需要DirectX 9规格的显卡就能很好的支持,而不是微软大肆宣扬的DirectX 10,甚至连DirectX 9C也不是必须,为什么呢?

  这是因为Windows Vista的3D桌面设计与DirectX 10开发是同步进行的,换句话说就是在DirectX 10开发的同时Vista的3D桌面已经完成。另一方面基于DirectX 9的桌面已经对显卡提出了较高要求,使得IGP厂商对微软极为不满,如果使用DirectX 10 API的话显卡的支持将会跟不上,用户升级系统也会比较困难!

  实际上微软对现有的DirectX 9进行了不少优化,以便让3D桌面运行得更好。不过微软打算在Vista发布之后再提供一些桌面的插件或者补丁,将3D桌面完全植入DirectX 10中去,这样新显卡用户将会更好的领略到DirectX 10的新特性! 

DirectX 10显卡 vs 游戏机

  提起PC游戏以及显卡很多人更愿意拿它与游戏机相比,就拿现在来说微软自家Xbox360所使用的图形核心Xenos应该算是最接近DirectX 10规格的GPU了。而Sony PS3所用的图形核心规格也不低,如果拿游戏机硬件和电脑显卡相比的话,DirectX 10能否完全超越游戏机?

  DirectX 10和Xbox360都是微软自家的孩子,微软决不会厚此薄彼或者顾此失彼!据微软表示,DirectX 10的另一大优势就是与Xbox360共享开发平台,这就意味着游戏开发商能够节约大量的时间和资源同时开发Vista和360游戏!让游戏跨平台运行,PC和游戏机互补不足,创造更大的市场,成就微软游戏霸业!

  微软有多大野心暂且不论,这种统一开发平台无疑备受游戏厂商欢迎,当然对于游戏玩家来说也是大有裨益。DirectX 10之中除了Direct3D之外,还有DirectPlay、Direct Input及DirectMusic,XACT (跨平台音效制作工具)处理动态音效及XInput跨平台游戏控制器。它能够在不同级数的音源输出硬件上保持平衡,也能够随信所欲的在Vista和360上使用喜欢的游戏手柄,在接口方面对于游戏开发者和玩家而言都是统一的标准!

  不过无论Xbox360还是PS3的图形核心,都是ATI/NVIDIA DirectX 9C时代的芯片,所以DirectX 10显卡在硬件层面还是图形技术上将会有更广阔的发挥空间:

  DirectX 10 GPU拥有更多的渲染流水线,能够处理更多的纹理数据而且在API的支配下效率会很高;DirectX 10还拥有游戏机所不具备的整数指令,开发者可以把整数指令作为浮点运算,但更为复杂;DirectX 10有一个真正的整数指令集,可以尽可能完成更多的寻址计算,更多的数据打包和解包;当然这些功能并不会显示出一些新的图形特效,但它允许开发人员在GPU中高效的完成更为智能、复杂的渲染工作!

 

DirectX 10特性解析

  简单地说来,DirectX 10在图形技术方面的特色在于Shader Model 4.0以及统一渲染架构。

  Shader Model 4.0

  现在大家在选购显卡时都会关注GPU是否支持SM3.0——DirectX 9C所必须的规格,而SM4.0就是一款DirectX 10 GPU必须具备的特性。我们都知道SM3.0相比更早的SM2.0最明显的变化就是支持FP16 HDR技术(实际上SM3.0更多的指令让GPU运行效率也大为改进),带来更绚丽的光影效果,那么SM4.0比SM3.0优势在哪呢?

  首先SM4.0规格令游戏程序开发员有更大的空间,例如SM4.0将不再拥有指令数值的上限,而SM3.0指令数不能超过32768条,SM2.0只有96条;色彩深度精确到32Bit;另外Texture由SM3.0的16个提升至128个,并硬件支持RGBE,令HDR不再需要特别的Decoding处理也能实现,HDR+AA将不再有这么多的麻烦。而且DirectX 10将首度实现RayTracing光线追踪,并且将位移贴图Displacement作为标准之一。

  对比上代DirectX 9的渲染流程,新一代DirectX 10做了非常大的改动,Pipeline架构完全Shader化,淡化了渲染的慨念,新增了Geometry Shader Stage,它可以为每个顶点的边缘进行几何量Shader运算,在完成Vetex Shader及Geometry Shader Stage后,D3D10可以Stream Output,让结果直接返回流水线作业之初再进行处理,而不再需要先运行Pixel Shader Stage简化的部分程序。以往D3D拥有部分固定的机能,如Fog、Point Sprites、Clip Planes及Alphatest等特定指令,但D3D10将需要程序开发者自行用Pixel Shader语言来实现。

  Unified Shader(统一渲染)

  SM4.0是DirectX 10最重要的图形技术,不过最受大家关注的技术可能就是Unified Shader(统一渲染)。

  DirectX 8以来GPU硬件就被分为顶点着色和像素渲染两大部分,分别处理3D建模和表面渲染,由于3D图形渲染的过程就是先建模后渲染,所以这种架构可以说是天经地义。而在DirectX 10中,将不再有像素和顶点之分。DirectX 10最显著的变化就是完全放弃GPU当中的固定渲染模式,并且支持GPU行为的完全自由化,即GPU不在明确划分像素着色和顶点着色单元,并且支持多种任务,如2D/3D/视频加速等等任务的自由分配。

  这里需要注意的是,统一渲染架构是将顶点渲染和像素渲染的硬件处理单元统一起来,并不是没有顶点和像素渲染操作。实际上3D图形的渲染过程依然是先顶点再进行表面渲染处理,只不过顶点和像素都会调用统一的Shader单元,而不是原来的顶点单元/像素管线!

  游戏性能的提升

    微软声称DirectX 10可以将游戏性能最大提高到6-8倍,这个数值看似比较夸张,不过,在架构和渲染等多方面的优化条件下,充分发挥GPU的资源是完全有可能的:

  为了优化操作系统对游戏的支持能力,Vista加入全新的IHV控制内核及用户模式驱动程式,操作系统提升虚拟化的资料给图形程序及GPU,以加快执行效率及稳定性,配合全新D3D10的程序语言,给程序员更大的设计弹性,更能发挥硬件的应有效能。

DirectX 10的游戏特性

  DirectX 10不仅仅是微软的一款图形API,广义上来说它包括三个部分:平台(Windows Vista以及DirectX 10 API)、硬件(GPU及显卡)和软件(DirectX 10游戏),三者缺一不可。DirectX 10再怎么先进,最终都要落实在实际游戏上面,那么DirectX 10将会在游戏方面带来什么新特性呢?

  More Objects(更多物体)

  以往的游戏受限于GPU处理能力,在屏幕内往往只注重于渲染一个或者几个游戏主角,在将主人公活灵活现刻画出来的同时,游戏背景的画面却非常糙,很多游戏背景往往只是一张纸(简单的贴图),这无疑让游戏的效果大打折扣。

  而新一代DirectX 10游戏能够最大限度的调用GPU的所有资源,加上GPU本身拥有更多的渲染管线,因此游戏开发者得以在同一个屏幕内植入更多的物体,确保游戏主角和辅助元素都享受同等待遇,让画面表现力无可挑剔!

  Vegetation/Foliage(植被/树叶)特效

  玩过《上古卷轴4:埋没》游戏的玩家应该有亲身体会,当您走入草木茂盛的地区时,游戏FPS急剧下降,即便是7900GTX和X1900XTX这种顶级显卡,FPS往往降到20帧以下无法流畅玩游戏!

  经过实际测试,在游戏其他场景(不进入草丛)FPS能够保持在50帧左右的流畅数值,一旦进入草丛画面卡的不行!这是因为独立渲染的草丛或者树叶是由庞大数量的多边形构成,对GPU的顶点渲染提出了严酷的要求,相对来说并不需要太多像素操作,如此一来大规模的像素渲染被闲置而顶点模块处于不堪重负状态——此刻正是统一渲染架构大显神威之时,如果能够将闲置的像素单元用来处理顶点,那么游戏速度就不会如此可怜了!

  不同游戏对像素、顶点、纹理等操作的需求不尽相同,即便是同一款游戏,在不同的场景所需要的渲染负载也不同。正是因为这些特殊要求,早在DX8时代,很多图形开发商就提出了统一渲染架构的设想,现在这种架构即将在DirectX 10 GPU中实现,统一渲染在处理这种草丛或者波浪时将会有显著的效果,游戏开发者也可以大胆的在游戏中添置更多的复杂小物体!

  Shadows(阴影)

  不论哪个版本的DirectX,不管是哪一代显卡,光与影都是永恒的主题,因为光影最能够对人眼造成刺激,因此也最受关注。

  在我们生活的周围环境有多少光源?谁也数不清楚,因为所有物体都是光源,在所有物体的共同作用下,所有的阴影互相作用,真实地展现在大家面前。然而3D游戏的光源数量大都是固定的,从3DMark05到3DMark06(场景一,都是SM2.0技术),FutureMark将光源数量由8个增加至26个,单纯的增加光源就能够让画面细节表现获得大幅提升,由此可见光与影的重要性!

  为了让游戏画面更加真实,就不得不使用更多的光源,交相辉映的阴影营造出来环境就不会显得那么做作,或许未来的DirectX 10游戏您不会特别在意光源与阴影,因为它的真实程度可能已经欺骗了你的眼睛!

  Materials(纹理材质)

  3D渲染出来的单个物体是否真实,几乎完全取决于纹理材质,只要建模多边形数足够多、贴图足够精细,3D实时渲染要达到真实物体的水准没有多少难度。事实上电影CG特效处理都是通过这种方式渲染而来,然后再加上高倍(64x甚至更高)抗锯齿,这样的3D渲染绝对能够骗过任何人的眼睛!

  为什么3D游戏不采用这种方式制作更加“真实”的游戏呢?原因很简单,如果做出来一款“完美”的游戏没有任硬件能够跑得动的话,那么它的画面再完美也是一款失败的作品!这是最主要的原因,另一个原因就是如果建模和纹理贴图太过复杂的话,游戏开发进度将会十分缓慢!

  Physics(物理加速)

  物理加速的概念很早之前就已经提出,然而时至今日依然处于概念性阶段——AGEIA的物理加速卡仅有几款游戏能够支持,而ATI的GPU物理加速才刚刚进行完Demo演示,NVIDIA的SLI物理加速也要等待游戏厂商采用Havok FX引擎才能够出台!

  物理加速得到了几乎所有游戏开发商和芯片厂商的支持,为何推广起来如此困难?这就是因为标准的不统一,由于AGEIA和Havok的物理引擎影响力有限,很多厂商都在观望。这一现状有望在DirectX 10推出之后得到改善,有了微软API的支持,无论哪种物理引擎都拥有发挥的空间,相信将会有更多的游戏加入更多的物理运算——届时您可以选择让当前显卡同时处理3D渲染和物理加速、或者让第二块、第三块显卡甚至购买物理加速卡专门进行物理加速!

  DirectX 10 GPU将是更为通用化的处理器,也就是说,原本许多交由CPU进行的3D处理会被转移到GPU上面来,因为强大的GPU比CPU更适合做这些工作,由此游戏性能会大幅提高。

  物理计算是下一代游戏体验当中的关键部分,它将增加游戏的真实感、沉浸感和带来更加有趣的体验。微软同样对物理加速非常感兴趣,在未来的DirectX 10版本中会加入物理加速的支持,而以Direct Physics统一物理标准对整个产业界都是非常有利的,微软的介入将使得物理加速更容易得到推广和普及,应用性也变得更加方便,同时DirectX 10 GPU的架构也能够让GPU更较有效的进行物理加速!

DirectX 10时代: GPU vs CPU

  为什么GeForce 256被称为第一款GPU?因为它所具备的硬件T&L功能将原本CPU负责处理的光影转换交给了显示芯片,而光影特效处理要占据3D场景的很大比例,这种技术的实现让系统3D性能得到了大幅提高。因此显示芯片也有拥有了同CPU平起平坐的称谓——GPU!

  自从GeForce 256开始,GPU就逐步替代CPU进行各种各样的运算,从可编程GPU到通用型GPU,GPU将更多图形相关处理纳入自己旗下。最近一段时间热门的技术就是HDTV视频加速和物理加速。DirectX 10拥有全新的DLL数据库,运行效率大幅提高;另外API将更多的将工作从CPU移交到了GPU身上。微软表示:整个API和流水线都将重新设计,CPU运行程序时间最小化,性能最大化DirectX 10的思路是在不需要CPU参与下,最大程度发挥GPU性能,如果需要CPU也参与工作的话,那么就是一个快速的,流线型的流水操作。DirectX 10赋予了GPU更有效的数据读写方式,从而使CPU将更多工作移交给显卡并进而减少程序运行时间。

  由此可见,DirectX 10的出现进一步强化了GPU的功能和性能,使得游戏开发者可以将更多的运算交给GPU处理——这样做并不会给GPU带来多少负担,而给CPU减负可以进一步的消除游戏系统的瓶颈,使得游戏场景可以变得更加复杂,协调GPU和CPU在游戏中的负担,最大话电脑硬件的3D图形性能!

  事实上同时代游戏机的性能强于PC的主要原因,就是游戏机的硬件配置更加合理,开发商更清楚如何调用游戏机的硬件资源,而复杂的PC系统存在多处性能瓶颈,“机能”没有得到完全发挥,DirectX 10将从根本上扭转这一点。

DirectX 10 : 值得期待

  以上所介绍的DirectX 10图形技术仅仅是对于我们用户而言最主要的特性,其实DirectX 10的体系结构、编程语言的简化和更加灵活的调用仅针对游戏开发者、而且也只有他们才能看得懂!简言之,DirectX 10能够大幅简化程序员的工作,以尽可能简练的语言开发出尽可能复杂、真实的游戏画面!

  DirectX 10游戏到底能给我们带来什么,或许今后当您玩到DirectX 10游戏时我们通常所说的HDR光照、动态模糊、软边阴影和物理加速等等图形技术已经难以分辨或者说是不复存在,因为展现在我们面前的图形画面将会变得非常接近现实,一切都是那么自然和谐!

你可能感兴趣的:(游戏,windows,api,微软,图形,shader)