DirectX9新技术简介
DirectX是现时最热门的API(应用程序接口),每次升级都会有重大的内核结构改变,比如DirectX 8引入了可编程像素和顶点着色引擎,但这些引擎已经在DirectX 9中有所改变。除此之外,DirectX 9还有什么激动人心的特性呢?请接着看。
1、DM
在3D渲染中,多种场合都需要用到DM(Displacement mapping,置换式贴图),它的主要用处是通过改变物体的凹凸贴图,来改变表面的视觉效果。
DM通过凹凸贴图改变视觉效果
DM现在有两个版本,普通版本为大多数厂商所选用,而Matrox专用版本是Matrox自家的显卡所独有的,DirectX 9同时支持两个版本的DM。
普通版本名为Precomputed/Preimaged(预计算/预描绘),最大优点是速度快,缺点是无法进行自适应纹理镶嵌和LoD(Levels-of-Detail,细节级)处理,所以在地形、建筑物等大型3D物体上,无法采用预计算DM。
Matrox使用采样DM,加入自适应纹理镶嵌和LoD,特别适合地形应用,而且使用方法简单,所以支持它的厂商不断增加,其缺点是速度缓慢。
2、PS 2.0
DirectX拥有一系列全新的DLL(Dynamic Link Library,动态链接库)文件,不过,可编程程度越高,微软在3D渲染中的重要性就越为淡化。
像素着色引擎和顶点着色引擎合并成一个引擎——PS(Pixel Shader)2.0,使用一个运算单元以降低制造成本。与Direct X 8/8.1相比,PS 2.0变化不大,只是加入了流程控制和一定的指令数目,增加跳跃、循环和子程序规则,提高着色引擎的灵活性。
PS是一种负责数据处理的新式编程模型,同时支持高级语言和汇编语言,直接面向硬件控制显示缓存和硬件指令。PS的控制变得更为简单,还能在纹理和调色运算前自动释放被占用的资源。
并非所有的显卡厂商都乐意加入PS,如意法半导体(ST Microelectronics)的Kyro 2,由于采用非传统架构,它的长处在于多边形数目和纹理尺寸庞大的环境,只要场景越复杂,显卡的优势越明显。
3、FSAA
3dfx创建了FSAA(Full Scene/Screen Anti-aliasing,全景/屏幕抗锯齿),可惜他自己出师未捷身先死,但它的OGSS(Ordered Grid Super-Sampling,顺序栅格超级采样)比nVIDIA和ATi的RGSS(Rotated Grid Super-Sampling,旋转栅格超级采样)效果好得多。不过,FSAA也有缺点,在优化3D物体边缘画质的同时,也使其它部分的图像变得模糊,DirectX 9将针对这个情况进行改良,避免再次犯拾芝麻丢西瓜的错误。
4、NURBS
微软的Directx 9将支持NURBS(Non Uniform Relational B Splines,非统一相关B样条)算法,能够在有限的带宽内,进行更多的3D运算,如:nVIDIA的GeForce 3使用了B样条,在不提高显存带宽的前提下同样实现了高帧率。
5、SP
SP(Scissor Planes,剪裁平面)提供给复杂应用程序使用,把物体放在有限区域中,裁掉看不到的部分,适用于开启多个窗口和剪辑视频内容,前提是硬件必须支持像素矩形修剪。OpenGL很早就支持SP,但需要精确的支持才能做到,常用在停止API向屏幕描绘画面。DirectX发展到现在才支持SP,相对成熟,只是晚了一点。
6、Z伽玛修正
伽玛修正主要是处理程序的色彩,对3D环境的真实性有很大影响,一直以来的修正只涉及2D。借助强大硬件的高精精确度,加入Z伽玛修正,可以提升纹理光影效果。以前这项特性只用于高端产品,DirectX 9让它平民化了。
7、DirectX8 vs DirectX 9
DirectX 9仍然使用DirectX 8的基本结构。DirectX 8和DirectX 9都向co-CPU(cooperative CPU,协处理器)的方面发展。因为显卡只是图形处理的一部分,无需所有人都购买GPU级显卡,协处理器显卡十分适合低端市场。
微软公司在他们发行的各个操作系统里,都附带DirectX,Windows 95是Direct X 2,Windows NT 里是 DirectX 3.0a,Windows 98 里是 DirectX 5 ,Windows 98 Second Edition 就使用了 DirectX 6.1a,Windows 2000 则附带了 DirectX 7。Windows XP 家庭版/专业版都将使用当前的 DirectX 8.1版本。至于DirectX 9,可能要到Windows XP(或许是Windows 2003?:))的升级补丁才能看到。
DirectX 9加入了许多新的3D特效,主要还是描影效果。DirectX从8.0开始,在3D API中取得了领先的地位,某些方面已经超过了OpenGL。越多人拥护的标准,发展的越快,这是个不争的事实。OpenGL也许最终会归为科学研究之类的应用,普通商业和游戏则由DirectX占主导。
本来,我们期望会在DirectX 9中看到可编程雾化,可惜微软似乎决意用PS 2来完成所有工作,程序员们必须掌握这个新特性。尽管自己的渲染程序可能获得更好的雾化效果,为了兼容性,还是不得不放弃。
DirectX 9之后,未来的版本可能会加入地址描影表、BDRF,以及可编程的硬件级描影,让3D游戏继续向虚拟现实发展。