适者生存!显卡 DirectX API 进化论
高效快捷的利用硬件实现才是更加现实的任务。在敏锐的感觉到这一点之后,微软将下一代DX API的核心任务定位为进一步解放编程。
在DirectX 10中,通过常量缓冲器、纹理阵列、动态shader执行分支等特性,将Instancing技术从这些局限中解放了出来。模型的实例没必要使用同一张纹理贴图;它们可以通过自己本身的纹理来从纹理阵列中取出各自的纹理;它们甚至可以有不同的特效——程序员可以写一个包含很多特效的“超级”shader,然后为每个模型实例运用这个shader程序的不同执行分支部分,从而给不同的模型赋以不同的材质特效。甚至连为每个模型实例使用骨骼蒙皮动画这种需要大量变换矩阵操作的问题,在16×4096常量寄存器的强大攻势下都可以迎刃而解。
“克隆人”的时代已经结束了^_^ 通过DirectX 10的高级特性,Instancing将允许每个模型实例拥有它的个性:纹理贴图,pixel和vertex shader,以及动作动画。每个实例都将会有它自己的生命。
Microsoft发布的DirectX 10代表了自从可编程Shader出现以来在3D API方面的最巨大的进步。通过一番脱胎换骨般的重建,DirectX 10展现出一系列非常醒目的新特性,包括高度优化的运行时,强大的Geometry Shader,纹理数组等等;这些特性将引领PC实时三维图形进入一个全新的世界。但是如此众多的改变对图形硬件厂商提出了前所未有的挑战,同时对游戏厂商亦是如此。
之前适合处理DX9C游戏的GPU架构已经无法满足的要求了,NVIDIA和ATI在这个时候没有任何的规则可以依靠,也没有成功的先例可以借鉴,完全是摸石头过河。就在这样的背景下,诞生了第一代统一架构,NVIDA的G80和ATI的R600。
另一方面,DirectX 10为游戏开发者提供了很多新的特性,采用这些特性可以用来开发大量的次世代图形效果。一些游戏厂商开始积极参与其中,CE2这样优秀的引擎脱颖而出,但由于这是基于强大、灵活的可编程特性基础上的,开发难度也是可想而知。实际上,更多的厂商决定保守的在原有引擎基础上稳扎稳打,慢慢升级,代表UE3。
最后的结果想必大家已然明了,虽然G80相比上一代有了质的的提升,但是在发布初期,根本无法满足Crysis这样大量采用DX10技术的先进游戏。而相对于NVIDIA,ATI的R600更是一败涂地,连之前的DX9C游戏效率都乏善可称。
以往的DirectX游戏无论多么优秀,始终都会有OpenGL引擎和游戏站出来发起挑战,而且其画面还相当不错。但DX9C之后,就只有ID Software还在负隅顽抗了,到了DX10时代,再也没有任何一款OpenGL能与DX游戏相抗衡,微软终于一统江湖!