现在对于一些显卡的玩家,大都在讨论的图形问题是什么?也许在前一段时间里,还有人在研究X800的SM2.0到底值不值得购买,或是X1000系列的HDR+AA效果有多么的绚丽,又或者是双显卡的SLI!不过这些问题都随着微软vista的正式发布所掩盖,现在玩家们的目光几乎都已经被全新的3D图形API——DirectX 10所吸引!

微软的Windows Vista也已经在今年正式的发布了

真实还是虚幻?
最近在网络上最流行的一幅关于DirectX10游戏效果的图片,在图中我们可以看到DirectX10游戏中的世界表现,已经非常的接近了真实的世界。
这是自从微软在2002年底发布DirectX9之后,持续时间最长、也是最重大的DirectX版本更新。每一次的图形API改朝换代都会带来一系列相关的问题,就好像当年大头菜我的ATI镭7500显卡本来用的挺好,可是新款的DirectX8.1游戏根本就不让运行,无奈之下只好升级到了一块TI 4200显卡,可见DirectX版本对游戏玩家来说有多么的重要。所以现在有很多的中高端玩家在这个新老交替的时候去选择显卡,就都存在一个是选择DirectX9.0C还是DirectX10的问题!
那么作为一名游戏玩家来说,到底有没有必要去升级DirectX10呢?而微软的DirectX 10究竟能给我们带来什么呢?
那么我们下面就来看看DirectX10的方方面面:
从DirectX9.0C过渡到DirectX10最大的变化就是Shader Model 4.0和统一渲染架构。
一、DirectX10最新图形技术——Shader Model 4.0(以下简称SM4.0)
大家应该还记得在DirectX9.0C的时代里,ATI的X800系列显卡虽然显卡本身的性能的确很强,但就是因为在硬件上不支持SM3.0而被无数的玩家遗弃。那么到了DirectX10的时代后,SM4.0就是一款DirectX10显卡所必须具备的特性之一。
我们知道SM3.0相比更早的SM2.0最明显的变化就是支持FP16 HDR技术,带来更绚丽的光影效果,那么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将不再有这么多的麻烦。而且DirectX10将首度实现RayTracing光线追踪,并且将位移贴图Displacement作为标准之一。

DirectX9的渲染流程图

DirectX10的渲染流程图
对比上代DX9的渲染流程,新一代DirectX10做了非常大的改动,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语言来实现。
二、DX10最新图形架构——Unified Shader
在升级到了DirectX10以后,最重大的改进之一就是将原来传统的顶点着色和像素渲染两大部分和二为一。
在DirectX109.0C或更早的传统3D渲染过程是:
GPU硬件就被分为顶点着色和像素渲染两大部分,分别处理3D建模和表面渲染,由于3D图形渲染的过程就是先建模后渲染。而在DirectX10中将不再有像素和顶点之分,难道真的应和那句古话,和久比分,分久必和吗!

传统3D渲染过程:从顶点到多边形,最后进行表面渲染

传统3D渲染过程:从顶点到多边形,最后进行表面渲染

传统3D渲染过程:从顶点到多边形,最后进行表面渲染
DirectX10的GPU硬件统一渲染,最大限度调动所有Shader单元,DirectX10最显著的变化就是完全放弃GPU当中的固定渲染模式,并且支持GPU行为的完全自由化,即GPU不在明确划分像素着色和顶点着色单元,并且支持多种任务,如2D/3D/视频加速等等任务的自由分配。
这里需要注意的是,统一渲染架构是将顶点渲染和像素渲染的硬件处理单元统一起来,并不是没有顶点和像素渲染操作。实际上3D图形的渲染过程依然是先顶点再进行表面渲染处理,只不过顶点和像素都会调用统一的Shader单元,而不是原来的顶点单元/像素管线!
那么有了这些改进后,对于游戏玩家们来说,我们真切能够体验到的变化会有哪些呢?
首先借助DirectX10后,游戏的性能会有很大幅度的提高
当初GeForce 256的出现就是因为它具备的硬件T&L功能,将原本CPU负责处理的光影转换交给了显示芯片,而光影特效处理要占据3D场景的很大比例,这种技术的实现让系统3D性能得到了大幅提高。而DirectX10拥有全新的DLL数据库,运行效率大幅提高;另外API将更多的将工作从CPU移交到了GPU身上。微软表示:整个API和流水线都将重新设计,CPU运行程序时间最小化,性能最大化DX10的思路是在不需要CPU参与下,最大程度发挥GPU性能,如果需要CPU也参与工作的话,那么就是一个快速的,流线型的流水操作。DirectX10赋予了GPU更有效的数据读写方式,从而使CPU将更多工作移交给显卡并进而减少程序运行时间。
通过DirectX10的特性可以看出,采用DirectX10技术的GPU将是更为通用化的处理器,也就是说,原本许多交由CPU进行的3D处理会被转移到GPU上面来,因为强大的GPU比CPU更适合做这些工作,由此游戏性能会大幅提高。
游戏中的细节将会更加的复杂、真实
在以往的游戏中,因为会受到CPU性能和GPU性能的限制,在游戏的画面中不可能出现泰国复杂的场景,基本上也都是对游戏的主角进行着重的渲染,而象背景之类的部分就只能够被简单处理,给人一种非常假的感觉,让游戏的效果大打折扣。
更多物体
而新一代的DirectX10游戏能够最大限度的调用GPU的所有资源,加上GPU本身拥有更多的渲染管线,因此游戏开发者得以在同一个画面中处理更多的物体,让游戏的世界背景也变的真实起来。
树木、毛发
很多朋友在玩一些大型的3D游戏时,可能都会有这种感觉,那就是在场景重点表现树林或是人物的毛发时,游戏的帧数会大幅度的下降!那又是什么原因呢?因为独立渲染的树木或是毛发是由庞大数量的多边形构成,对GPU的顶点渲染提出了严酷的要求,如此一来大规模的像素渲染被闲置而顶点模块处于不堪重负状态——此刻正是统一渲染架构大显神威之时,如果能够将闲置的像素单元用来处理顶点,那么游戏的速度就会得到很大的提升。
光影效果
不论哪个版本的DirectX,不管是哪一代显卡,光与影都是永恒的主题,因为光影最能够对人眼造成刺激,因此也最受关注。
在我们生活的周围环境有多少光源?谁也数不清楚,因为所有物体都是光源,在所有物体的共同作用下,所有的阴影互相作用,真实地展现在大家面前。然而3D游戏的光源数量大都是固定的,所以单纯的增加光源就能够让画面细节表现获得大幅提升,很多的游戏开发商也会为了让游戏画面看起来更加的真实,而使用更多的光源,交相辉映的阴影营造出来环境就不会显得那么做作。
纹理材质
3D渲染出来的单个物体是否真实,几乎完全取决于纹理材质,只要建模多边形数足够多、贴图足够精细,3D实时渲染要达到真实物体的水准没有多少难度。事实上电影CG特效处理都是通过这种方式渲染而来,然后再加上高倍(64x甚至更高)抗锯齿,这样的3D渲染绝对能够骗过任何人的眼睛!
DX10游戏到底能给我们带来什么,也许您现在看到的效果还不太明显,因为它目前还处在一个初级的阶段里,不过在今后的DirectX10游戏中,展现在我们面前的图形画面将会变得非常接近现实,也就是说DirectX将要带给我们一个非常接近真实的游戏世界。