2009年10月22日,微软公司正式发布Windows 7,DirectX 11集成在Windows 7 中同步登场,但其实DirectX 11只是DirectX 10的大幅度加强版,而不是9.0C和10.0/10.1的彻底革新。
DirectX 11带来了Tessellation(拆嵌式细分曲面技术)、Multi-Threading(多执行绪)、DirectCompute(通用计算)、Shader Model 5.0(渲染引擎5.0)以及Texture Compression(纹理压缩)五个重要特性,为用户带来更好的视觉享受。
Win7直接提供了DirectX 11,而Vista则可通过升级DirectX驱动包来支持11.0。
基本介绍
- 软体名称DirectX 11
- 开发商微软公司
- 软体平台Windows 7
- 更新时间2009年10月22日
- 作用为用户带来更好的视觉享受
- 目标降低游戏开发难度和成本
发布
2009年9月22日ATI发布了支持DX11的基于Cypress核心的HD5800系列显示卡,而NVIDIA才刚造出支持DX11的GT300晶片的样品。回顾DirectX历史,从1995年Windows95里的DX1.0开始,一直保持着很快的升级速度,只有DX9系列的几个版本维持了四年之久。用两年的时间从DX10更新到DX11,其实也不算快。
虽然硬体已经支持DirectX11,但支持DirectX11的游戏2010年才会大量出现。
我们知道,DX10.1将是DX10的一次升级,而且是非关键性的,接下来微软就会直接迈入DX11。根据此前的报导,DX11的主要目标仍是降低游戏开发难度和成本,更有效地发挥新硬体的能力、提高物理效果和游戏AI、增强画面细节複杂度、针对多核心处理器进行全面最佳化。
2009年1月9日星期五,微软将面向公众发布Windows 7客户端Beta 1测试版。而此前一天,即1月8日,微软将率先发布Windows 7伺服器版本的Beta 1测试版。
在微软发布的Windows 7Beta版本中,一些已经安装使用的用户的发现了DirectX 11已经包含其中了。DirectX 11作为3D图形接口,不仅支持未来的DX11硬体,还向下兼容当前的DirectX 10和10.1硬体。DirectX 11增加了新的计算shader技术,可以允许GPU从事更多的通用计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地将GPU作为并行处理器使用。
特点
DX11新增了计算着色器(Compute Shader)代码示例,在今年的NVISION大会上,微软就透漏了这点,并通过SIGGRAPH以及GameFest 2008大会上放出的幻灯片,我们可以进行一些深入的研究。,DX11特性的提前放出,对于目前DX10以及DX10.1硬体用户而言也大有裨益,因为AMD和NVIDIA可以照此提前开发适当的驱动支持。
DirectX 11的诸多特性似乎暗示我们,DirectX 11被迅速採用的时机已经成熟,特别是微软的Windows 7发布之后,这一趋势将会势不可挡。而如今,HLSL(High Level Shading Language,高级渲染语言)已经完全成熟,这势必会让DX11在众游戏开发者们眼里变得更加具有吸引力,而且越来越多的人开始认识到DX10其实就是DX11的子集,这对于DirectX 11将来被快速採用也会起到促进作用。,DX11可以让平行编程变得更加容易,其独有的特性也会促进开发者们大胆的、迅速採纳这种API。DirectX 11可以兼容Vista作业系统,所以用户不用担心不能升级,而Windows 7与生俱来的魅力在很大程度上也会促使Windows XP用户们做出升级的决定,也就是说,对于开发者们而言,市场上将会有足够大的可运行DX11的系统群体。
微软曾许诺DirectX 10可以带来革命性的视觉体验以及渲染技术,但结果却是仁者见仁,不过可以肯定的是,DirectX 11可能最终将会履行这一承诺。虽然我们现在不可能马上就看到DirectX 11独有的特性所带来的效果,这一新版API的普及将会对刺激适时3D绘图技术不断提升大有裨益。
从DirectX 6到DirectX 9,微软一直在有条不紊的使他们的编程API从一种固定的功能传播介质以及动态的数据结构向一种丰满的、可程式的、可进行绘图硬体深控的环境演变。从DX9到DX10的演变可以说是一种升华DX9的可程式性得到了进一步扩展和延伸,并在新一代硬体的作用下变得更具深度和弹性。,微软还通过各种手段提升了DX10的稳定性以及灵活性。,DirectX 11的演变过程则有很多不同。
为了最大限度的提升可程式性,DX11宁可丢掉一些原有的结构效度。微软将DirectX 11构建成DirectX 10/10.1的精确父集,这让DirectX 11无形中新增了很多奇妙的潜力。特别是,DX10代码将会变成可以选择不去执行某些先进特性的DX11代码,而反过来,DX11又可以在所有同等水平的硬体上运行。了,对于DX10而言,并不是所有的DX11特性都是可用的,这却意味着开发者可在採用DX11的情况下针对DX10和DX11硬体进行开发,而不用考虑两者完全分开对待因为两者是相同的,只不过,一个是另一个的子集功能而已。,如果套用某些DX11独有特效(比如说tessellator或者compute shader)时,区分代码路径是非常必要的,但这完全属于从DX10向DX11过渡过程中的益处所在。
新技术预览
1,Direct3D11渲染管线
看上去,DirectX 11比DirectX 10更酷。DirectX 11的很多提升意味着更高的特性性能,而这些特性很少能在DX10中看到。DirectX 11和DirectX 10两者最大的不同之处在于管线,可以说DirectX 11的渲染管线标誌着绘图硬体以及软体功能革命性一步。DirectX 11加入了对Tessellation(镶嵌)的支持。Tessellation 由外壳着色器(Hull Shader)、镶嵌单元(tessellator)以及域着色器(Domain Shader)组成。还加入了计算着色器(Compute Shader),计算着色器与DX10中引入的GS不同,它并不是渲染管线的一部分,CS也是DirectX 11的重要改进之一,可以很大程度上协助开发人员弥补现实与虚幻之间的差别。
2,Tessellation镶嵌技术
在此之前,关于DirectX 11的报导可谓铺天盖地。事实上,自R600发布时,DirectX 11这个字眼才开始越来越多的出现在网路上。儘管R6xx和R7xx硬体都具有tessellator单元,由于tessellator属于专有实现方案(proprietary implementation),所以R6xx和R7xx硬体是不能直接兼容DirectX 11,更何况DirectX 11採用了极其精密老练的设定过程。事实上,DX11 tessellator单元本身不具备可程式性,DX11向tessellator (TS)输入或者从中输出的过程是通过两个传统的管线阶段完成的Hull Shader (HS,外壳着色器)和Domain Shader (DS,域着色器)。
tessellator可以把一些较大的图元(primitive)分成很多更小的图元,并将这些小图元组合到一起,形成一种有序的几何图形,这种几何图形更複杂,也更接近现实。这个过程也被称作细分曲面(Subdivision Surfaces)。举例来说,tessellator可以让一个立方体,通过处理看起来像是个球形,这样的话无疑节省了空间。,图形的质量、性能以及可控性也达到了一定的促进。
Hull Shader负责接收一种由全四边形格线(quad mash)计算得到的图元数据(称作patches),并计算控制点(control points)的各种变换以及输入的图元各个边的镶嵌配置(tessellation factors),从而进行镶嵌。其中Control points用来定义想要得到的图形(比如说一个曲面或者其他)的图形参数。如果您经常用Photoshop绘图软体的话,不妨把Control points理解为PS的钢笔工具用平面代替线的贝塞尔曲线功能。Hull Shader採用control points来决定如何安排tessellator处理数据,利用Tessellator生成大批量的新的图元,然后将这些图元以及控制点传送给Domain Shader,Domain Shader将这些数据计算转换成3D处理中的顶点,GPU生成曲线以及多边形。
3,多执行绪的支持
由于DX11所新增的特性甚至可以套用到DX10硬体中,所以我们对于DX11的快速套用都非常期待和乐观。DX11特性还包括很重要一点支持多执行绪(multi-threading)。没错,无论是DX10还是DX11,所有的色彩信息最终都将被光栅化并显示在电脑显示屏上(无论是通过线性的方式还是同步的),DX11新增了对多执行绪技术的支持,得益于此,应用程式可以同步创造有用资源或者管理状态,并从所有专用执行绪中传送提取命令,这样做无疑效率更高。DX11的这种多执行绪技术可能并不能加速绘图的子系统(特别是当我们的GPU资源受限时),这样却可以提升执行绪启动游戏的效率,并且可以利用台式CPU核心数量不断提高所带来的潜力。
对于场景中的人像和三个镜像,DX11会启动四个单独执行绪进行并行处理,效率自然要比现在依次进行的做法高很多。
搭载8颗以及16颗逻辑核心的CPU系统已经离我们越来越近,现在游戏开发商们也该赶紧行动起来了,是时候解决有些游戏在双核心繫统中运行缓慢的问题了。开发一款能够很大程度上促进双核以上系统普及的游戏,所能够获得的利润以及需要的付出目前来讲还很不乐观,所以这一进程进展缓慢。对于大多数游戏而言,充分利用四核心以及超过四核心的多执行绪优势还非常困难。儘管如此,通过多执行绪技术让简单的平行运算资源产生并显示出来,确实为採用平行运算代码的游戏提供了走红的机会,这些游戏代码也可以以单执行绪编码的方式存在。由于DX11系统中并不是採用一条执行绪处理所有DX state change以及draw call(或者说大量同步执行绪共同负责某一任务)的方式,所以游戏开发者可以很自然的创造出执行绪处理某个场景的某一类或者某一群的客体对象,并为将来所有客体对象或者实体为各自的执行绪处理打下基础(如果逻辑核心最终达到数百颗之后,这种执行绪处理方式对于提取硬体性能尤为重要)。
,DX10硬体也能够在运行DX11游戏时支持多执行绪,微软的这一计画相当令人兴奋,不过值得一提的是,AMD以及NVIDIA必须为各自的DX10硬体开发出相应的驱动软体才能达到这一效果(因为如果没有相应的驱动支持的话,DX10硬体即便可以运行DX11游戏,对于玩家而言并不会看到真正应有的效果)。了,我们希望NVIDIA,特别是AMD(因为他也是一家可以生产多核心CPU的厂商)能够对此感兴趣。而且,如果A/N这幺做到话,无疑会为游戏开发商们开发DX11游戏提供诱因,即便是A/N的DX11硬体还在襁褓之中。
4,计算着色器Compute Shader
很多游戏开发者都对DX11新增的Compute Shader(通常简称为CS)特性啧啧称讚。CS的这一渲染管线能够进行更多的通用目的运算。我们既能在某种可以用来被执行数据的操作中看到这种特性,又能在某种可以用来操作的数据中看到这种特性。
在DirectX11以及CS的帮助下,游戏开发者便可以使用更为複杂的数据结构,并在这些数据结构中运行更多的通用算法。与其他完整的可程式的DX10和DX11管线阶段一样,CS将会共享一套物质资源(也就是着色处理器)。
相应的硬体需要在运行CS代码时更灵活些,这些CS代码必须支持随机读写、不规则列阵(而不是简单的流体或者固定大小的2D列阵)、多重输出、可根据程式设计师的需要直接调用个别或多执行绪的套用、32k大小的共享暂存空间和执行绪组管理系统、原子数据指令集、同步建构以及可执行无序IO运算的能力。
与此,CS也将会随之失去一些特性。因为单个执行绪已经不再被看成是一个像素,所以执行绪将会丧失几何集合功能。这就意味着,儘管CS程式依然可以利用纹理取样功能,自动三线LOD过滤计算将会丧失自动功能(LOD必须被指定)。,一些并不重要的普通数据的深度剔除(depth culling)、反锯齿(anti-aliasing)、alpha混合(alpha blending)以及其他运算不能在一个CS程式中被执行。
除了某些特殊套用的渲染,游戏开发者可能也希望做一些诸如IK(inverse kinematics,反向运动学)、物理、人工智慧以及其他在GPU上执行的传统的CPU任务之类的运算。用CS算法在GPU上执行这些数据意味着这些数据将会更快的被渲染,而且一些算法可能在GPU上的执行速度更快。如果某些总是产生同样结果的算法既可以出现在CPU上又可以出现在GPU上的话,诸如AI以及物理等运算甚至可以在CPU和GPU上运行(这种运算实际上也可以代替频宽)。
即便是这些运算代码在相同的硬体(CPU或者GPU)上运行,PS以及CS代码的执行也是两个截然不同的过程,这主要取决于被执行的算法。有趣的是,暴露数据以及柱状数据经常被用作HDR渲染。用PS代码计算这些数据的话就需要几条通道和几种技巧,以便提取所有像素,从而集中或者平分这些数据。儘管共享数据将会或多或少的减缓处理速度,共享数据的方式要比在多通道中计算速度更快,而且这样可以使CS成为这些算法的理想处理阶段。
5,Shader Model 5.0
DirectX 10的Shader Model 4.0(Shader Model以下简称“SM”)带来了整数运算和位运算的功能,DirectX 10.1的SM 4.1加入了对MSAA的直接採样和控制。而DirectX 11包含的SM 5.0,採用面向对象的概念,并且完全可以支持双精度数据。随着SM 5.0的发布,微软也会将HLSL语言更新至最新版本,其中包含了诸如动态着色、动态分支和更多的对象等。,面向专业开发人员的SM 5.0,依旧是以降低编程的难度和複杂为目的。
为了解决Shader灵活性与弹性不足的问题,微软在HLSL5.0中带来解决之道。HLSL5.0提出shader子程式的概念,即允许程式设计师将各种小段、简单或为个别需要而特製的shader程式连结起来,再根据实际需要动态调用,这样既能够提高硬体兼容性,减少“巨型shader”对暂存器空间的占用,有效提升性能。
6,改进的纹理压缩
精细的纹理对视觉效果的增益是显而易见的。目前的3D游戏越来越倾向于使用更大、更为精细的纹理,过大的纹理严重占用显存和频宽。由于目前纹理压缩仍然不支持HDR图像,DirectX 11提出了更为出色的纹理压缩算法——BC6和BC7。BC6是为HDR图像设计的压缩算法,压缩比为6∶1;而BC7是为低动态範围纹理设计的压缩模式,压缩比为3∶1。两种压缩算法在高压缩比下画质损失更少,效果更出色。
这是一幅对HDR档案的压缩示意图,BC6的压缩相对于原图来说,仅仅损失了极小的画质,却获得了非常出色的效果。
纹理质量对画面效果起着至关重要的作用。比如我们运行3D游戏时,画面内同样一个物体,观察距离较远时,纹理锐利而清晰,但当你拉近视角,近距离细看时,纹理就非常粗糙了。更不用说在某些游戏中还有类似放大镜、望远镜等道具,启用这些道具后,只能看到更为粗糙和不真实的纹理。出现这种问题,一方面是纹理压缩率损失严重,细腻的纹理压缩存放后,损失大量细节;另一方面是大纹理难以保证保证游戏运行速度和软体体积,如果在游戏中大面积採用解析度高达4000dpi的纹理贴图,那幺显示卡的运算资源和显存容量很快就会告罄。,DirectX 11最快速和最直观的改变就是改进了纹理的压缩算法,将纹理体积和纹理质量控制在一个相当优秀的範围之内。
支持的游戏
游戏名称 | 发行日期 | 製作商 | 游戏类型 | 游戏引擎 | 备注 |
---|---|---|---|---|---|
锻神记 | 北美2009年3月23日 欧洲2009年3月27日 (更新入加支持)2009年9月23日 | EA Phenomic | 大型多人线上即时战略游戏 | Unknown | AMD游戏进化计画成员 |
潜行者普里皮亚季的召唤 | 乌克兰2009年10月2日 俄罗斯2009年10月2日 德国2009年11月 英美2010年2月23日 | GSC Game World | 第一人称射击 | X-Ray Engine(v1.6) | AMD游戏进化计画成员 |
科林麦克雷拉力赛尘埃2 | 北美2009年12月1日 欧洲2009年12月3日 英国2009年月12月4日 | Codemasters | 竞速 | EGO Engine v1.0 | AMD游戏进化计画成员 |
异形大战铁血战士 | 北美2010年2月16日 欧洲2010年2月19日 | Rebellion Developments | 第一人称射击 | Asura Engine | AMD游戏进化计画成员 |
战地叛逆连队2 | 北美2010年3月2日 欧洲2010年3月5日 | EA Digital Illusions CE | 第一人称射击 | Frostbite Engine (v1.5) | AMD游戏进化计画成员 |
捷运2033 | 北美2010年3月16日 欧洲2010年3月19日 澳洲2010年3月18日 | 4A Games | 第一人称射击 | 4A Engine | nVIDIA游戏之道计画成员 |
指环王Online | 欧美2007年4月24日 (Volume 3: Book 2更新入加支持)2010年9月8日 | Turbine | 大型多人线上角色扮演 | Turbine G3 Engine | AMD游戏进化计画成员 |
文明V | 北美2010年9月21日 欧洲2010年9月24日 | Firaxis Games | 回合制策略、4X概念体系 | Unknown | AMD游戏进化计画成员 |
F1 2010 | 北美2010年9月22日 欧洲2010年9月23日 英国2010年9月24日 (v1.01更新入加支持)2010年11月2日 | Codemasters | 竞速 | EGO Engine (v1.5) | AMD游戏进化计画成员 |
荣誉勋章(2010年游戏) | 北美2010年10月12日 欧洲2010年10月14日 英国2010年10月15日 | 多人游戏部分製作EA Digital Illusions CE 单人游戏部分製作EALA | 第一人称射击 | (单人游戏部分製作)Unreal Engine 3 (多人游戏部分製作)Frostbite Engine (v1.5) | (多人游戏部分支持DirectX 11) |
失落的星球2 | 北美2010年10月12日 欧洲2010年10月15日 | Capcom | 第三人称射击 | MT Framework 2.0 Engine | nVIDIA游戏之道计画成员 |
龙与地下城Online | 欧美2006年2月20日 (Update 7更新入加支持)2010年10月20日 | Turbine | 大型多人线上角色扮演 | Turbine G3 | AMD游戏进化计画成员 |
鹰击长空2 | 欧美2010年11月12日 | Ubisoft Romania | 空战 | Unknown | nVIDIA游戏之道计画成员 |
魔兽世界大地的裂变 | 欧美2010年12月7日港澳台2010年12月9日 大陆2011年7月12日 (v4.1更新入加支持)2011年4月25日 | Blizzard Entertainment | 大型多人线上角色扮演 | Unknown | |
国土防线 | 北美2011年3月15日 欧洲2011年3月18日 | 游戏主要製作Kaos Studios PC版本技术 製作Digital Extremes | 第一人称射击 | Unreal Engine 3 (v3.9) | nVIDIA游戏之道计画成员 |
龙腾世纪2 | 北美2011年3月8日 欧洲2011年3月11日 | BioWare | 角色扮演 | Lycium Engine | AMD游戏进化计画成员 |
全面战争幕府将军2 | 全球2011年3月15日 (更新入加支持)5月10日 | The Creative Assembly | 回合制策略、即时战略 | Warscape engine | AMD游戏进化计画成员 |
孤岛危机2 | 北美2011年3月22日 欧洲2011年3月25日 (v1.9更新入加支持)2011年6月27日 | 单人游戏部分製作Crytek Frankfurt 多人游戏部分製作Crytek UK | 第一人称射击 | CryEngine 3 + | nVIDIA游戏之道计画成员 |
孤岛危机 3 | 全球2013年2月19日 | 单人游戏部分製作Crytek Frankfurt 多人游戏部分製作Crytek UK | 第一人称射击 | CryEngine 3.4 | nVIDIA游戏之道计画成员,仅支持Windows Vista sp2及以上 |
尘埃3 | 欧美2011年5月24日 | Codemasters | 竞速 | EGO Engine (v2.0) | AMD游戏进化计画成员 |
汉密尔顿的大冒险 | 全球2011年6月1日 | Fatshark | 冒险 博弈 | Unknown | 仅支持Windows Vista和Windows 7 |
红色派系末日审判 | 北美2011年6月7日 欧洲2011年6月10日 | Volition, Inc. | 第三人称射击 | Geo-Mod 2.5 Engine | |
极度恐慌3 | 北美2011年6月21日英国2011年6月24日 | Day 1 Studios Monolith Productions | 第一人称射击 | Heavily modified Despair Engine | |
杀出重围人类革命 | 北美2011年8月23日 英国2011年8月26日 | Eidos Montreal | 动作角色扮演游戏 | Crystal Dynamics Engine 改进版 | AMD游戏进化计画成员 |
F1 2011 | 2011年9月23日 | Codemasters | 竞速 | EGO Engine | |
战地3 | 2011年10月25日 | EA DICE | 第一人称射击 | Frostbite Engine (V2.0) | AMD游戏进化计画成员、nVIDIA游戏之道计画成员 |
黑色洛城 (PC) | 2011年11月8日 | Rockstar | 动作冒险 | In-house engin, eHavok | v1.2.2610支持DX11 |
极品飞车亡命天涯 | 2011年11月15日 | EA Blackbox | 竞速 | Frostbite Engine (V2.0) | |
黑道圣徒3 | 2011年11月15日 | THQ | 高自由度、动作、第三人称射击 | CTG | AMD游戏进化计画成员 |
纪元2070 | 2011年11月17日 | Ubisoft | 即时战略 | init Engine | |
蝙蝠侠阿卡姆之城 | 2011年11月22日 | Rocksteady | 动作 | Unreal Engine 3 | nVIDIA游戏之道计画成员 |
光荣使命 | 2011年6月26日 | 无锡巨人网路联合南京军区 | 国内第一款具有自主智慧财产权的大型区域网路游戏 | 虚幻3 |