4.DirectX 9.0时代
其主要特色在于提升了Vertex Shader和Pixel Shader的版本,从而展现出更为强大的性能。DirectX 9.0中还包含了NURBS和Displacement Mapping(置换式贴图)这两项关键的技术。NURBS在3Dmax中是很常见的,但是运用到3D游戏后,我们所看到的画面将更加接近真实。简单地说,NURBS就是专门做曲面物体的一种造型方法,可以用它做出各种复杂的曲面造型和表现特殊的效果,如人的皮肤,面貌或流线型的跑车等。而Displacement Mapping技术借助在平面的多边形上加上一些数据,可以帮材质加上深浅高低的轮廓视觉效果。总体而言,DirectX 9.0是对于DirectX 8.1版本的补充,出现这一现象是因为3D显卡技术的发展滞后于DirectX接口。
从技术角度来看,DirectX 9.0c相对于DirectX 9.0b还是有着很多的变化,不过Microsoft对于版本提升相当谨慎,因此很多用户都将DirectX 9.0c称作为准DirectX 10。在DirectX 9.0c架构中,最终要的改进便是引入3.0版本的Pixel/Vertex Shader,并且支持ATI的3Dc纹理压缩技术和nVIDIA主导的HDR技术。
DirectX 9时代的渲染能力
三、惊人的巨变:解析DirectX 10
1.继续加强Shader功能
很多用户都在抱怨3D游戏中的画面总是难以呈现出如同电影般的渲染效果,而此时的罪魁祸首不仅仅是显卡和CPU,本身的渲染方式也是造成低效率的重要原因。在DirectX 10时代,所有的显卡GPU管线将会被赋予更加完善的Shader功能运算。以我们最近经常看到的Shader Model 3.0为例,这仅仅在部分场景才能展现出效果,游戏开发商也不敢大量应用。而当Direct X10要求所有的GPU管线加上丰富的Shader功能运算之后,所谓的Shader将不再是显卡的一些特殊功能,而是一项基本功能,而且贴图效果也将得到极大的改善。
DirectX 10的贴图效果展示
毫无疑问,这将令市场上所有遵循DirectX 10 API标准而设计的显卡甚至集成显卡有着强大的Shader运算能力。一旦拥有如此强大的“群众基础”,游戏开发商也就敢于大量使用这些3D特效。与此同时,微软还增加的DirectX的可编程语法结构,令各种特效的运用更加简易实现,这对于提高3D游戏画面效果将会有巨大的共享。除此以外,Direct X10还支持Shader Model 4.0,意味著它的渲染效果将会进一步提升。事实上,DirectX 10对于画质方面的其它贡献也有不少,其中“Geometry Shader”(几何着色)便是最显著的一点。通过引入新的渲染模型,开发人员可以利用整体多边形渲染加速图形运算,新着色模式将大幅提高很多3D立体作图功能效率,还将允许GPU独立于CPU外完成数据循环工作,使系统完全脱离CPU束缚。
微软游戏所展示的DirectX 10效果
2.微软推行统一渲染架构
对于微软这样的业界巨头而言,掌握应用接口是头等大事。当年,并不“听话”的3DFX在推行Glide3D接口方面一意孤行,接过被微软所倡导的Direct3D接口彻底取代。即便是强大的OpenGL组织,微软也可以以退出并力推Direct3D来正面对抗,并且在民用市场取得压倒性的优势。而现在,DirectX 10显然也希望结束DirectX 9时代的尴尬。
微软在DirectX 9中引入的了2.0/2.X/3.0三个版本的Vertex Shader(顶点着色引擎)以及Pixel Shader(像素着色引擎)。这看似是技术的推进,其实是微软在为nVIDIA和ATI两强搭建竞争舞台,而且其中的内耗直接导致技术普及速度减缓,并且利用率降低,更令软件开发商畏首畏尾。而进入DirectX 10时代之后,微软渴望使用统一渲染架构来引领群雄。
所谓统一渲染架构,大家可以直观地理解为将Vertex Shader、Pixel Shader以及DirectX 10所引入的Geometry Shader统一封装。此时,显卡中的GPU将不会开辟独立的管线,而是所有的运算单元都可以任意处理任何一种Shader运算。譬如,在《上古卷轴4埋没》这款游戏中,对于Vertex Shader的要求非常高,而此时大量显卡的Pixel Shader处于闲置状态,Vertex Shader又不堪重负。在微软的统一渲染架构下,既然所有的运算单元都可以处理任何一种运算,那么就能有效避免这种不合理的分配现象。
支持DirectX 10的GeForce 8800GX
可是,统一渲染架构真的要普及还为时尚早。一方面,nVIDIA并不买账,而ATI也对此不“感冒”。此外,即便是微软今后强迫普及统一渲染架构,这也需要显卡GPU厂商进行新的研发。目前主流GPU都已经在两年前进入研发阶段,所以采用统一渲染架构几乎是不可能的,甚至连DirectX 10的执行效率都无法得到保障。当然,我们并非否认微软统一渲染架构的技术领先性,而是得客观承认当前的现状。
3.理解流水线真正概念:Pixel Shader+TMU+ROP
在讨论显卡GPU的流水线之前,我们想先让大家了解一下3D游戏的制作过程,这对于理解后续的流水线概念将有很大的帮助。事实上,3D游戏初期的开发就好象一部电影:游戏策划、剧本撰写、角色圈定等等,在确定主角的造型风格之后,制作厂商将把原画交给3D建模部门。至此,3D工作正式开始,此时需要处理纹理,后期混合等等,具体的工作内容就是构造顶点、几何变换(Transform)、光照(Lighting)、设定(Setup)、光栅化(Rasterize)等。
对于传统的图形芯片,以上的一些工作全部由CPU代为执行。到了3D时代,GPU作为图形处理单元开始承担更多的工作,因此我们也开始接触纹理贴图、像素渲染等概念。然而时至今日,GPU已经发展得更为全面,其所谓的流水线作为一个完全的处理单元而存在,几乎每一款GPU都内置了多个流水线。
不过值得指出的是,不同时代对于流水线的定义完全不相同。如今我们对于一条流水线定义是“Pixel Shader(像素着色器)+TMU(纹理单元)+ROP(光栅化引擎,ATI将其称为Render Back End)。从功能上简单的说,Pixel Shader完成像素处理,TMU负责纹理渲染,而ROP则负责像素的最终输出,因此 ,一条完整的传统流水线意味着在一个时钟周期完成1个Pixel Shader运算,输出1个纹理和1个像素。以GeForce 6600LE为例,一块传统的4流水线构架显卡(4X1)在一个时钟周期内完成4个Pixel Shader运算,输出4个纹理和4个像素。
在3D游戏工作时,其实Pixel Shader、TMU以及ROP部分都非常重要。让我们回想一下当年《FIFA98》等老一代3D游戏,当时三角形生成能力是最为看重的,基本没有应用到纹理贴图与像素着色,真正的工作部分是被成为顶点生成器的单元,而且也可以由CPU来模拟执行。但是发展到DirectX 6与DirectX 7时期,大量3D游戏开始追求更加丰富真实的表面效果,此时贴图技术则迅速普及,如何提供强大的纹理填充率成为关键。至于DirectX 8之后的时代,像素处理则异军突起并且展现出令人惊艳的画质。相对而言,ROP的概念比较难理解,这实际上是像素结果输出处理器负责像素的最终输出,执行像素读/写操作、Z-buffer检查、色彩混合、抗锯齿操作等。
4.DirectX 10核心:追求像素渲染
进入DirectX 9时代以后,Pixel Shader技术开始应用得十分普遍,此时显卡能否提供更多的像素渲染管线成为关键因素。当然,造成GPU开始追求更多像素渲染管线的因素绝不仅仅是3D游戏普及化应用Pixel Shader,Pixel Shader本身版本的提升也是一个重要原因。单流水线内置一条像素渲染管线在DirectX8游戏横行的时代是比较合理的,因为DirectX8的Pixel Shader1.3允许的着色器程序比较短,此时单流水线内的多个像素渲染管线无法发挥并行工作的优势。然而DirectX9时代的Pixel Shader 2.0/3.0则全然不同,更长的着色器程序指令让多个像素渲染管线有了用武之地。
当然,我们也并非单纯否定TMU纹理填充单元的作用。但是也应该清楚地意识到,随着纹理压缩以及Z缓存技术的不断成熟,再加上显存带宽越来越出色,TMU逐渐摆脱了性能瓶颈,此时自然也就无需在单流水线中集成多个TMU单元。而与此同时,ROP也在数量上足以满足GPU的需求,因此也没有随着像素渲染管线数量的递增而不断增长。
按照ATI和nVIDIA对于未来3D游戏技术的预测,今后像素渲染将会越来越得到重用。在2001年刚刚出现具备像素着色器的显卡时,当时游戏的像素着色器程序中算术指令和纹理指令数量的比例在1:1左右,打这以后,算术指令的数量呈显著增加之势。在2007年,游戏中每个像素的平均着色器程序指令数目是30条,算术指令和纹理指令数量平均比率达到了5:1,也就是说现在的像素着色器程序中,平均每5条算术指令才会出现一条贴图指令,而这样的算术指令数量急剧增长趋势仍将继续保持下去。
Crysis在DirectX 10下像素计算量非常大
四、写在最后:DirectX 10最终受益者是谁?
DirectX已经成为3D技术竞争的舞台,任何一项先进的硬件技术都必须在DirectX API的支持下才能发挥威力。从未来的发展趋势来看,伴随着DirectX的成熟,3D游戏对于硬件的利用效果将会很快提高,届时真正的电影级游戏效果或许就真的离我们不远了。在整个DirectX 10时代,其实并没有哪一个受害方,因为即便是nVIDIA和ATI,不断的产品更新依然会给他们带来巨大的利润,而Microsoft永远是干着保赚不赔的大买卖,让Windows Vista的强势地位更加巩固。对于消费者而言,DirectX 10时代将会看到更加出色的3D渲染效果,只不过我们又得升级显卡了。