【转载】DirectX简史(转)

来源:互联网 发布:阿里云和腾讯云哪个好 编辑:程序博客网 时间:2024/06/07 18:46

初生牛犊——DirectX 1.0-8.0

  对于很多网友而言,DirectX都是一个出现频率相当高的词,但是不少网友还是对DirectX没有准确的认识,简单的说,DirectX就是由微软所推出的一种应用程序接口,也就是所谓的API,通过DirectX,Windows操作系统下的游戏或者多媒体程序可以获得更高的执行效率,并且增强系统3D图形以及音效,同时还为不同的设计者提供了通用的硬件驱动标准,大大简化了设计者在驱动方面的困扰,也为用户提供了方便。

DX11时代霸主 AMD顶级5870显卡评测
DircetX一直是3D API的代表

  在DOS时代,游戏玩家要想玩游戏,前期的安装步骤可以说是相当复杂,不仅要安装游戏本身,同时还要对IRQ、I/O以及DMA等多项设置进行调整,为了简化用户的使用过程,微软推出了第一代的DirectX,也就是并不成功的DirectX 1.0,由于当时的硬件大多支持专业图形API,也就是OpenGL标准,因此缺乏硬件支持的DirectX 1.0在推广过程中阻力重重。尽管DirectX 1.0并没有想象中的效果,但是微软还是没有放弃,经过二维图形的改进,同时采用了Direct 3D技术,第二代的DirectX 2.0在各个方面的进步都是比较明显的,可以说DirectX 2.0标志着微软的DirectX开始走向成熟。在1997年最后一个版本的Windows 95操作系统发布之后不久,微软推出了新一代的DirectX 3.0,由于当时市场里3D游戏已经开始流行,因此DirectX 3.0也得到了硬件厂商以及软件开放者的认可,成为与OpenGL、Glide并列的三大应用程序接口标准之一,虽然采用了3.0的版本号,但是与DirectX 2.0相比,DirectX 3.0的进步比较有限,同时在3D显示效果方面还不是太成熟。

DX11时代霸主 AMD顶级5870显卡评测
Geforce 256宣告DirectX 7.0到来

  正当玩家们都在翘首以待微软的DirectX 4.0时,微软并没有按照传统的版本演进顺序推出DirectX 4.0,而是跳过了这一版本,直接推出DirectX 5.0,这一版本的DirectX中,对于Direct 3D做出了非常明显的改进,加入了雾化效果、Alpha混合以及S3的纹理压缩等众多3D技术,从而可以实现更加真实的3D游戏效果,另外在其他各个组件也有相当大的加强,可以说此时的DirectX 5.0已经完全不逊于其他的3D API,标志着微软在DirectX产品上的成熟。随着3dfx公司的日渐没落,有3dfx公司所力推的Glide接口也渐渐地退出了3D API战线,而日益完善的DirectX则成为了更多厂商的选择,微软也通过加入双线性过滤、三线性过滤等优化3D图形质量的新技术,推出了DirectX 6.0,从而促使游戏的3D技术日渐成熟。

DX11时代霸主 AMD顶级5870显卡评测
DirectX 8.0时代的Geforce 3显卡

  作为微软DirectX的重要产品,DirectX 7.0最大的亮点以及功劳在于提供了对T&L技术的支持,也就是3D游戏玩家们都非常熟悉的坐标转换和光源技术,在3D游戏中,物体坐标的转换以及灯光光源的渲染是实现画面真实性的重要因素,以往的3D游戏中,这两方面的渲染都需要CPU的计算,因此3D游戏往往对CPU的速度要求较高,而在DirectX 7.0中,具备T&L功能的显卡都可以代替CPU进行坐标转换和光源的渲染工作,从而实现了3D游戏的普及化。经历了DirectX 7.0的洗礼,3D游戏已经开始走入普通消费者的应用,而下一代的DirectX 8.0则引入了“像素渲染”的概念,同时具备了像素渲染引擎和顶点渲染引擎,从而实现了动态光影效果的特效,对于硬件产品而言,DirectX 8.0使得GPU成为了可以编程的处理器,大大降低了设计者通过GPU实现3D场景构建的难度,从DirectX 8.0开始,微软的DirectX已经奠定了3D API领域的权威地位。

全面占据3D领域——DirectX 9.0、9.0c

  如果说DirectX 8.0奠定了微软在3D API领域的权威地位的话,那么DirectX 9.0则是微软在这一领域继续前进的力作,2002年所发布的DirectX 9.0将像素渲染引擎的渲染精度提升到了浮点精度,同时也取消了传统的硬件T&L单元,总的来说,DirectX 9.0中的像素渲染引擎2.0以及顶点渲染引擎2.0技术都是DirectX发展史中令人难忘的改进。

DX11时代霸主 AMD顶级5870显卡评测
9700Pro是ATi在DirectX 9.0时代的骄傲

  首先在像素渲染引擎2.0中,提供了完全可编程的架构,可以实现对纹理效果的即时演算、动态纹理的贴图,同时不会占用显存空间,而且硬件指令的数量也提升到了160个,可以操作的指令数达到无限级别,材质数量则提高到16个;其次在顶点渲染引擎2.0中,增加了Vertex程序的灵活性,并且加入了新的控制指令,从而可以用通用的程序代替以往的专用着色程序,提高了执行效率,扩展着色指令数量则是从DirectX 8.0中的128个提高到256个。

  除了在像素渲染引擎以及顶点渲染引擎的改进之外,Direct 9.0的另一个重要进步在于提供了对浮点数据的处理功能,以往的DirectX只能对整数数据进行处理,而在DirectX 9.0中,通过实现浮点数据的处理,可以大幅度地提升渲染的精度,从而实现电影级别的色彩格式。

DX11时代霸主 AMD顶级5870显卡评测
DirectX 9.0c堪称革命

  DirectX 9.0c是微软对DirectX 9.0所作出的改进版本,在DirectX 9.0c中,最大的改进无疑就是Shader Model 3.0技术,简单地说,Shader Model 3.0就是具备了像素渲染引擎3.0和顶点渲染引擎3.0的统称,在Shader Model 3.0技术中,像素渲染引擎3.0和顶点渲染引擎3.0的最大指令数分别从上一代的256个和96个提升到65535个,可以说DirectX 9.0c的推出,是微软DirectX发展过程里的里程碑,DirectX 9.0c的Shader Model 3.0技术不仅取消了指令数限制、加入位移贴图,还大幅度地提升了游戏的执行效率以及画面品质,真正实现了游戏画面品质的真实化。

伴随Vista而生——DirectX 10、10.1

  对于用户而言,Windows XP操作系统可以说是陪伴大家非常久的老伙伴了,但是对于微软来说,Windows XP操作系统的长寿并不是好事,因此在2006年,微软正式发布了旗下的新一代操作系统,也就是至今仍不受好评的Windows Vista操作系统,尽管这一操作系统在市场里的接受度并不是太理想,但是其内置的DirectX 10却成为了3D API领域的新一代主流。

DX11时代霸主 AMD顶级5870显卡评测
Windows Vista带来DirectX 10

  在DirectX 9.0和DirectX 9.0c中,像素渲染引擎以及顶点渲染引擎都是非常重要的渲染架构,因此显示芯片中也往往具备了像素渲染单元和顶点渲染单元两种不同处理器,而在DirectX 10中,两者不再独立存在,而是通过统一的流处理器运算单元实现像素或者顶点渲染的功能,因此可以大幅度地提高GPU的资源利用率,除了统一渲染架构之外,DirectX 10还加入了新的几何渲染引擎,首次允许GPU动态创建或者删除图元,而这一渲染的处理也是通过流处理器来实现的。

DX11时代霸主 AMD顶级5870显卡评测
DirectX 10游戏画质惊艳

  除了渲染引擎上的改进之外,DirectX 10还提供了两种新的32bit浮点HDR格式,使得DirectX 10的高动态范围比DirectX 9.0c更大,而且解决了HDR与AA两种特效之间的兼容性,同时还能够有效地节约显存带宽的消耗;DirectX 10同时提供了对纹理阵列的支持,能够支持最高为8192×8192分辨率的贴图,同时访问的纹理数量则是达到了128个。

DX11时代霸主 AMD顶级5870显卡评测
DirectX 10.1改进不多

  经过统一渲染架构以及新的特效技术,DirectX 10的特效可以说是空前的华丽,但是也正是因为特效水平的大幅度提升,使得GPU的负担也大大地增加,可以说当时的GPU在面对DirectX 10的众多特效时,都显得力不从心,因此微软在之后发布了改进版的DirectX 10.1,与DirectX 10相比,DirectX 10.1的改进大多集中在提高GPU的资源利用率,同时降低对GPU的负担,因此DirectX 10.1的升级并没有当初DirectX 9.0c具备那么大的影响力。

 一切为了游戏——DirectX 11

新增5个指令集——Shader Model 5.0

  尽管DirectX 10.1对于GPU的资源占用率进行了优化,但是对于如今的GPU产品而言,这样的优化依然不能让他们承担如此重的工作压力,由此我们也可以得出这样的结论——一味地追求高特效而忽视现实的GPU处理能力是无法实现游戏画质和性能之间的平衡,经过DirectX 10以及DirectX 10.1的推广,微软也深刻认识到了这一点,因此在下一代的Windows 7操作系统中,微软将会采用DirectX 11来代替如今的DirectX 10和DirectX 10.1。

DX11时代霸主 AMD顶级5870显卡评测

  Shader Model技术一直都是微软DirectX中不可或缺的组成,而在新一代的DirectX 11中,我们欣喜地看到微软的Shader Model技术已经发展到Shader Model 5.0,而这一技术也是微软在DirectX 11中的一个重要改进。

  和上一代DirectX 10以及DirectX 10.1中的Shader Model 4.0以及Shader Model 4.1一样,DirectX 11中所具备的Shader Model 5.0同样也是基于统一渲染架构而设计的,因此其处理方式也都是与如今GPU的流处理器所挂钩,新一代的Shader Model 5.0不仅采用了以往Shader Model技术中的所有特性,同时还在指令集方面进行了扩充和改进,因此可以让像素、顶点、几何等众多应用在新指令集中获得帮助。

  在Shader Model 5.0中所采用的新指令主要包括:覆盖采样、Gather函数加速纹理拾取、粗糙偏导数、类型转化类指令以及位操作类指令,通过众多的新指令,Shader Model不仅可以实现更加精细的画面质量,同时对于GPU流处理器的利用率也得到了大幅度的提升。

坚持自己的路——HDR纹理压缩技术

  对于如今的3D游戏而言,除了吸引玩家的游戏情节和体验之外,相信大部分的游戏厂商都会将精力投入到游戏的画面质量中,自从3D游戏诞生以来,游戏的画质无不是玩家和厂商所共同关注的,因此DirectX也一直将提高游戏画质作为自己的主要功能,在现在的3D游戏中,基本上都采用大规模、高精度的纹理作为提高画质的手段,但是对于显卡而言,大规模、高精度的纹理无异于一场噩梦,因此纹理压缩技术就成为DirectX 11的重点工程。

DX11时代霸主 AMD顶级5870显卡评测
DirectX 11支持HDR纹理压缩

  在以往的DirectX中,纹理压缩技术并非不存在,但是都不能支持高动态范围图像(HDR)的纹理压缩,因此在玩家们开启了HDR之后,往往会发现显卡的显存占用率上升到很高的水平,而新一代的DirectX 11中,采用了两种全新的压缩算法——BC6H和BC7来解决这一问题,其中BC6H是专门针对HDR图像所涉及的纹理压缩算法,而BC7则是专门为高品质RGB纹理所设计的压缩算法。

  在BC6H压缩算法中,压缩比例为6:1,简单地说经过BC6H压缩算法的处理,HDR图像将会损失一些细节,但是损失的程度在用户肉眼中的感觉基本上是无法察觉的,而显存的占用率则能够得到大幅度的降低,而BC7压缩算法的压缩比例为3:1,实际的压缩效果要比以往的BC3压缩算法出色得多,可以说两种全新压缩算法的加入,使得DirectX 11在保持画质的同时,优化了对硬件的利用率,这也是DirectX一直以来所坚持的道路。

更好支持多核CPU——多线程处理技术

  如今的处理器市场里,单核心处理器已经彻底沦落为入门级产品,大部分的消费者在选购时还是会以多核心处理器作为首选,因此越来越多的软件针对多核心处理器进行专门的优化处理器,从而使得软件的运行效率得到明显的提升,作为IT业界的老牌劲旅,微软同样看到多核心应用的必然趋势,因此在DirectX 11中提供了多线程处理技术。

DX11时代霸主 AMD顶级5870显卡评测

  简单地说,DirectX 11中的多线程处理技术的实现并不复杂,以往的DirectX中单线程处理都是将一个渲染进程以一个线程进行处理,而在DirectX 11的多线程处理技术中,通过引入延迟执行这一指令,将一个渲染进程拆分成多个线程,并且根据处理器的核心或者线程数量设置延迟执行内容的数目,从而实现了多线程处理一个渲染进程的效果。

DX11时代霸主 AMD顶级5870显卡评测

  可以说DirectX 11的多线程处理技术在执行过程上还是比较灵活的,每一个渲染进程都会根据处理器的核心或者线程数量拆分为多个线程,而延迟执行的指令可以为每个线程的执行顺序进行标识,首先执行的线程与传统的渲染并没有不同,而延迟执行的线程则可以通过预先存取必须资源的方式进行多线程并行处理,从而可以充分地利用多核心处理器的资源,并且提高程序的响应速度。

DirectX 11标志革新——Direct Compute 11

通用计算——GPU应用新领域

  自从GPU采用了统一渲染架构之后,流处理器已经成为GPU的主要组成部分,而随着技术的发展,GPU的流处理器性能已经得到了相当充足的进步,因此不仅可以胜任传统的像素渲染单元或者顶点渲染单元的工作,如今的AMD和NVIDIA,都开始在GPU通用计算领域进行大力的拓展。

  谈到通用计算,我们不能不提到早年ATi所提出的GPGPU的概念,在当时显示芯片性能还不如今天如此强大的时候,ATi就提出了GPGPU概念,设想让GPU承担通用计算任务的可行性,不过在2006年被AMD收购之后,GPGPU概念暂时被搁置了,不过随着显示芯片性能的提升,GPU通用计算技术在近年得到了长足的发展。

DX11时代霸主 AMD顶级5870显卡评测

  在如今的显示芯片市场里,通用计算技术并不少见,就两大显示芯片巨头而言,AMD旗下有Stream技术,NVIDIA旗下则是以CUDA技术为主打,同时还存在着开放的OpenCL技术,如今微软在新一代的DirectX 11中,也加入了以通用计算为主要应用的DirectComputer技术。

DX11时代霸主 AMD顶级5870显卡评测

  虽然同样是GPU通用计算技术,当时微软的DirectComputer技术还是有自己的特点,AMD的Stream和NVIDIA的CUDA都是基于自己的GPU架构所设计,因此在开放性方面并没有那么广泛,而OpenCL作为一个开放式的标准,可以直接对硬件底层进行操作,相对灵活强大,但是开发难度较高,而微软的DirectComputer技术作为DirectX 11的组成部分,可以说是一款通用计算API,集成于Windows并且偏向消费领域,相对而言更加简单易用,同时兼容性也更好。

Direct Computer技术发展简史

  作为通用计算技术领域的生力军,微软的DirectComputer技术是与上一代的DirectX 10同时诞生的,至今已经发展出三个不同的版本,其中第一代DirectX 10所搭配的为DirectComputer 10,而之前的DirectX 10.1则是具备了DirectComputer 10.1,如今最新的DriectX 11上,我们看到的也是新一代的DirectComputer 11技术。

DX11时代霸主 AMD顶级5870显卡评测

  与上一代的DirectComputer 10相比,最新的DirectComputer 11在众多技术细节上都做出了明显的改进,其中在线程派遣方面,DirectComputer 11采用了单一的3D阵列代替以往的2D线性阵列组,可以实现更高的效率,并且节约资源,另外线程限制和线程组共享缓存方面,DirectComputer 11也从上一代的768个和16KB分别提升至1024个和32KB。

  另外在共享缓存存取设计上,DirectComputer 11采用了完整的32KB可用共享缓存,同时实现了读写不限的功能,而在以往的DirectComputer技术上,共享缓存的写入限制为256bit,通过这一改进,可以有效地减轻I/O压力,提高缓存的利用率,而在计算单元顺序无关存取方面则支持到8个,可以允许计算单元同时访问8个位置的缓存,与上一代的1个相比提升了8倍。

DX11时代霸主 AMD顶级5870显卡评测

  除了上述原有技术的改进之外,DirectComputer 11还加入了为数众多的新技术,其中包括允许每个线程在受保护的内存区域内操作,避免打断的原子操作功能;支持IEEE754标准的64bit浮点运算功能、能够提高缓存空间利用率,降低显存压力的附加缓存技术、提高纹理数据拾取速度四倍的Gather4技术以及新增的8个像素单元顺序无关存取功能。

OIT乱序透明——Direct Computer 11特色(一)

  对于3D游戏而言,尽可能地实现逼真的画质是永无止境的追求,而为了实现最出色的画质效果,DirectX也一直在特效上进行努力,特别是对于多个透明物体的叠加效果,一直都是DirectX中较为复杂的技术,毕竟在现实生活中,多个透明物体之间的层次和结构都是相当复杂的,对于显卡而言,如果不能准确地判定物体之间的层次关系,画面的逼真程度将无从说起。

DX11时代霸主 AMD顶级5870显卡评测
透明物体的叠加相当复杂

  以往的DriectX中,对于透明物体的处理并不是太令人满意,因此微软在最新的DirectX 11中,加入了OIT(透明独立叠加)乱序透明技术,从而可以准确地判定多个透明物体之间的层次关系,实现多个不同透明物体的快速混合,达到最为逼真的画面质量,在OTI乱序透明技术中,微软还提供了单独的缓存来提高处理透明物体排序的效率。

DX11时代霸主 AMD顶级5870显卡评测
OIT乱序透明技术

  之所以能够实现OIT乱序透明技术,这与微软的DirectComputer 11也有着密不可分的关系,在OTI乱序透明技术中,所有透明物体的层次判定以及顺序排列都是通过DirectCmoputer 11技术来实现的,而且基于如今的GPU架构设计,OIT乱序透明技术的实现还是比较容易的。

渲染后处理——Direct Computer 11特色(二)

  在GPU的工作过程中,当流处理器完成对于像素以及顶点的处理器,还需要对图像进行最后的渲染才能输出到显示器上,而针对这一步进行渲染的就是我们经常听到的ROPs单元,尽管ROPs单元在GPU中的知名度不如流处理器那么高,但是对于画面的质量和逼真程度而言,ROPs单元的重要性却是不可取代的。

DX11时代霸主 AMD顶级5870显卡评测
景深渲染后处理

  作为新一代的DircetX版本,DirectX 11对于渲染后处理的改进也是比较明显的,其中主要的改进集中在两个部分。其一,DirectX 11对于像素效果的渲染后处理,其中包括了各种不同的特效处理,这些效果的渲染后处理基本上都需要从附近的像素取得数据才能进行相应的操作;另一个则是将渲染后处理的一些复杂编程方式进行简化,并且改善了渲染后处理的内存共享使用机制,达到更强的性能。

DX11时代霸主 AMD顶级5870显卡评测
阴影渲染后处理

  举两个简单的例子,对于游戏作品而言,要想达到逼真的画面质量,景深和阴影都是不可忽视的因素,而在DirectX 11的后渲染处理中,对于景深和阴影的渲染后处理都达到了比以往更加出色的水平,从AMD实际展示的DEMO截图来看,我们可以发现,DirectX 11所处理的景深和阴影与现实生活中相比,已经没有太大的区别。

Tessellation技术

终成正果——Tessellation技术由来

  作为DirectX 11中的一个重要特色,Tessellation技术可以说并不是太新鲜的东西,而这一技术的由来也和AMD颇有渊源,因此可以说在DirectX 11中,Tessellation技术得到重用也可以体现出AMD在技术方面的前瞻性和实力。

DX11时代霸主 AMD顶级5870显卡评测

  熟悉ATi的玩家对于Tessellation这个词都不会陌生,早在ATi所推出的第一款DirectX 10显示芯片——R600上就存在着Tessellation这一模块,而在之后AMD所推出的HD3000、HD4000系列显卡产品上,Tessellation技术都毫无例外地得到了支持,如今DirectX 11上终于将Tessellation技术纳入标准配置,可谓是AMD终成正果。

DX11时代霸主 AMD顶级5870显卡评测
ATi TruForm技术

  看到Tessellation我们就不能不回过头去看微软在推出DirectX 8.1时所提出的NPatch技术,NPatch技术可以通过自动创造顶点使得整个3D模型变得更加光滑。在微软提出NPatch技术之后,ATi就在2002年所发布的R200显示芯片中,采用了NPatch技术,并且冠以TruForm的官方名称,由于NPatch技术的原理是在模型中的三角形上自动创造顶点,从而使得模型外观更加光滑,但是在一些线条比较直的模型上,NPatch技术的优势反而会使得模型外观失真,因此闹出了不少的笑话。

DX11时代霸主 AMD顶级5870显卡评测
Tessellation技术使得模型更精细

  尽管微软的NPatch技术和ATi的TruForm技术存在着不小的问题,但是微软和ATi对于这一简单高效的技术都没有放弃,由此也诞生了后来微软XBOX360上所采用的ATi Xenos显示芯片,在这款显示芯片上,NPatch和TruForm技术得到了升华,并且以Tessellation的名字登上了舞台。此后Tessellation技术成为了微软和AMD所共同关注的对象,并且在历代产品中不断地完善,直到今日正式纳入DirectX 11中,成为业界的主要标准。

纳入DirectX 11——Tessellation技术改进

  从最初的闹笑话到如今在DirectX 11中占据重要地位,Tessellation技术经历了众多的改进和发展,而与当初的NPatch以及TruForm技术相比,如今的Tessellation技术已经今非昔比,无论是微软还是AMD,都对这款Tessellation技术倾注了众多心血,自然会有众多技术进步存在。

DX11时代霸主 AMD顶级5870显卡评测

  在AMD所推出的第一款DirectX 10显示芯片——R600上,我们就可以看到改进之后的Programmable Tessellation模块,翻译成中文也就是可编程拆嵌器,与以往的NPatch、TruForm乃至XBOX360上的Tessellation技术相比,R600显示芯片上的Tessellation模块可以说得到了不小的提升,它已经可以根据3D模型中的已有顶点,按照不同的需要和规格进行处理,从而在提高画面精细度和质量的同时,保证模型的外观不受影响。

DX11时代霸主 AMD顶级5870显卡评测

  如今Tessellation技术已经正式成为DirectX 11中的一个主要特点,但是微软并不是直接把AMD的Tessellation技术整合到DirectX 11中,而是通过优化使得Tessellation技术可以与渲染流程实现出色的结合,简单地说,微软在DirectX 11中加入了两个新的着色器——外壳着色器和域着色器,通过这两个着色器配合Tessellation模块的工作,从而实现更加出色的游戏画面质量。

0 0
原创粉丝点击