DirectX经过几年的发展,目前DirectX已经发展到了V9.0c版本,DirectX9.0没有令我们失望,其所带来的电影级画面渲染效果给我们造成的震撼绝不亚于当年3Dfx的Voodoo对整个3D游戏业的影响。但微软并没有止步不前,目前DirectX 9.0c的继任者DirectX 10已经呼之欲出,这种即将随同微软Windows Vista操作系统一同面世的DirectX API将再次撼动当今显示卡市场的格局,因为这又将是一个新时代的开始,当然具体到商业领域,势必又将引发目前图形业双雄在标准确立乃至最终产品规格上的较量。那么,作为DirectX发展史上又一个里程碑式的标准,它给我们带来了什么呢?下面让我们就目前各方已经掌握的信息来为大家介绍一下DirectX10最主要的几大技术进步:
1、Shader Model 4.0
相信大家在选购显卡时已经都向是否支持DirectX9.0c看齐,而Shader Model 3.0则是DirectX9.0c最大的特色。虽然DirectX9.0c与DirectX9.0b仅仅只是一个字母之差,但DirectX9.0c所支持的SM3.0与DirectX9.0b所支持的SM2.0在功能、特效方面却有差很大的差别。在而呼之欲出的DirectX10中,Shader Model也将升级到Shader Model4.0,那么SM4.0比SM3.0优势在哪呢?
SM4.0规格令游戏程序开发员有更大的空间,相比原先的Shader Model 3.0自然继续有所提升,特别是对于最大指令数从512条增加到了64000条;暂存器数量也从原先的32个增加到惊人的4096个,而同时Texture由SM3.0的16个提升至128个,并硬件支持RGBE,令HDR不再需要特别的Decoding处理也能实现,HDR+AA将不再有这么多的麻烦。对于2D的纹理尺寸支持来看,DirectX 10也有惊人的提升,8192x8192的最高纹理分辩率比原先最高2048x2048的分辩率要高出许多。早在此前的E3上,微软就公布部分飞行模拟X中的DX9/DX10的游戏画面对比。从画面上我们可以看到其水面效果十分的逼真,同时淡化了DirectX 9.0版本比较虚假的山脉在水中的倒影。在上图中,左边的为现实世界的真实场景,右边为游戏里的虚拟环境,你能看的出有多大区别吗?
2、统一渲染架构
相对SM4.0,其实在Shader Model 4.0中微软将引入统一着色架构,这才是DX10最大的更进。我们都知道,微软在DirectX 9中引入的了2.0/2.X/3.0三个版本的Vertex Shader(顶点着色引擎)以及Pixel Shader(像素着色引擎)。其中支持2.0版的着色引擎是DirectX 9的GPU的最低标准,而当前主流的显卡已经都硬件支持加入了拥有更多高级处理功能的3.0版本着色引擎。不过,即便是DirectX9.0c,对于功能相仿Vertex Shader、Pixel Shader来说,目前图形芯片厂商仍需要在GPU中划分两个区域来存放Vertex Shader阵列和Pixel Shader贴图流水线。这无疑是一种资源冗余,而且这也加重GPU的设计难度及成本。当Direct X10把渲染流程更细分为Vertex Shader、Geometry Shader及Pixel Shader,这个情况将会更为明显。那么,有没有可能把这两者整合在一起呢?答案就是肯定的!
ATI为Xbox 360设计的Xenos芯片已经采用US架构
而在DirectX 10中引入了统一渲染架,通过一个整合Vertex Shader、 Pixel Shader的可编程整合光影处理器来完成目前Vertex Shader、Pixel Shader所有的工作。所谓统一渲染架构,最容易的理解方式就是Shader单元不再分离,显示核心不再为Shader类型不同而配置不同类型的Shader单元,对于主流的显示核心,Pixel Shader单元以及Vertex Shader单元的概念都应该已经非常熟悉了,而在统一渲染架构中这两种Shader单元将不再分离,转而所有的Shader单元都可以为需要处理的数据进行处理,不管和是Pixel Shader数据还是Vertex Shader数据。而调配哪几组Shader单元负责处理什么数据或者进行什么样子类型的计算,则由一个被称为Small Sets of Instructions(SSI)的部分来控制。这样在硬件上,设计者就无需为不同的着色引擎设计不同的执行单元,只要按照所对应的接口以及操作方式全部融为一体,仅设置一种独立的Shader执行单元。这意味着GPU厂家可以用更小的核心来实现现在需要用8000万甚至更多晶体管才能实现的功能!
3、Physics(物理加速)技术
最近热门的技术就是物理加速及其应用,物理计算是下一代游戏体验当中的关键部分,它将增加游戏的真实感、沉浸感和带来更加有趣的体验。NVIDIA同样对物理加速非常感兴趣,在未来的DX10产品中会加入物理加速的支持。
虽然,物理加速的概念很早之前就已经提出,但时至今日依然处于概念性阶段——AGEIA的物理加速卡仅有几款游戏能够支持,而ATI的GPU物理加速才刚刚进行完Demo演示,NVIDIA的SLI物理加速也要等待游戏厂商采用Havok FX引擎才能够出台!推广进程如此缓慢因为标准的不统一。AGEIA和Havok两大阵营的物理加速引擎互不兼容、各自为政,这就使得很多游戏仅能支持一种物理引擎,这种情形非常类似于3D时代开荒初期在技术和规范上百花齐放!
这一现状有望在DX10推出之后得到改善,有了微软API的支持,无论哪种物理引擎都拥有发挥的空间,相信将会有更多的游戏加入更多的物理运算。未来,DX10 GPU将是更趋向化通用型的处理器,也就是说,原本许多交由CPU进行的3D处理会被转移到GPU上面来,因为强大的GPU比CPU更适合做这些工作,由此游戏性能会大幅提高。微软表示,DX10会开放两个SDK,分别照顾到AGEIA和Havok,其中AGEIA的PPU直接作用于SDK独立进行物理运算,在Havok引擎的调动下NVIDIA的GPU也可以动态的处理物理运算!
4、Geometry Shader技术
另外,DirectX 10还带来了一个被称为Geometry Shader的新版“Shader”,可以处理Pixel Shaders和Vertex Shaders不能完成的任务。目前DirectX的处理模式是:1.顶点数据准备,2.Vertex Shader,3.完成Vertex Shader。4.光栅化计算,5.PixelShader,6.完成PixelShader,这是一个D3D标准的处理模式,这个过程是是顺序进行的(DirectX 10之前)。因此,只能吸收和输出一个单独顶点的旧版Vertex Shaders是不能创建或者破坏三角形的。
而新的Geometry Shader的作用就是对每个Vertex数据临近的数据进行Vertex函数处理也就是用来判定临近的,类似数据操作的点来进行计算,而这种函数处理直接关系到整个渲染模型的形状;也就是说其可以快速的把模型类似的顶点结合起来进行快速运算,虽然其操作不会象Vertex Shader那样的进行完整的操作,只是处理器单个顶点的相关函数操作,但是这种操作却可以确定整个模型的物理形状,这将大大加速处理器速度,因为其它Shader单元将不再去需要判定数据所存在的位置,而只是需要简单的为特定区域进行操作就可以了。
此外,Geometry Shader中还具备一个被称为Stream Out的技术,这种技术允许GPU可以重复利用已经计算的结果(允许继续由Vertex Shader数据来调用处理好的结果),从而减少计算。目前我们已经得知,NVIDIA即将发布的GeForce 8800GTX将拥有多达128个Stream Out单元。
说完技术,再让我们来都有哪些游戏采用了最新的DX10技术呢?毕竟,游戏画面是3D技术进步最好的体现,以下就是目前已经公布的部分支持DX10技术的游戏画面: