标题：DirectX 11
发布
[1]2009年9月22日ATI发布了支持DX11的基于Cypress核心的HD5800系列显卡，而NVIDIA才刚造出支持DX11的GT300芯片的样品。回顾DirectX历史，从1995年Windows 95里的DX1.0开始，一直保持着很快的升级速度，只有DX9系列的几个版本维持了四年之久。用两年的时间从DX10更新到DX11，其实也不算快。[2]
虽然硬件已经支持DirectX11，但支持DirectX11的游戏2010年才会大量出现。
我们知道，DX10.1将是DX10的最后一次升级，而且是非关键性的，接下来微软就会直接迈入DX11。根据此前的报道，DX11的主要目标仍是降低游戏开发难度和成本，同时更有效地发挥新硬件的能力、提高物理效果和游戏AI、增强画面细节复杂度、针对多核心处理器进行全面优化。
2009年1月9日星期五，微软将面向公众发布Windows 7客户端Beta 1测试版。而此前一天，即1月8日，微软将率先发布Windows 7服务器版本的Beta 1测试版。
在微软发布的Windows 7 Beta版本中，一些已经安装使用的用户的发现了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过渡过程中的益处所在。
DirectX 11 新技术预览
1，Direct3D11渲染管线：
  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多线程处理由于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，改进的纹理压缩：
  BC6纹理压缩精细的纹理对视觉效果的增益是显而易见的。目前的3D游戏越来越倾向于使用更大、更为精细的纹理，但是过大的纹理严重占用显存和带宽。由于目前纹理压缩仍然不支持HDR图像，因此DirectX 11提出了更为出色的纹理压缩算法——BC6和BC7。BC6是为HDR图像设计的压缩算法，压缩比为6∶1；而BC7是为低动态范围纹理设计的压缩模式，压缩比为3∶1。两种压缩算法在高压缩比下画质损失更少，效果更出色。
这是一幅对HDR文件的压缩示意图，BC6的压缩相对于原图来说，仅仅损失了极小的画质，却获得了非常出色的效果。
纹理质量对画面效果起着至关重要的作用。比如我们运行3D游戏时，画面内同样一个物体，观察距离较远时，纹理锐利而清晰，但当你拉近视角，近距离细看时，纹理就非常粗糙了。更不用说在某些游戏中还有类似放大镜、望远镜等道具，启用这些道具后，只能看到更为粗糙和不真实的纹理。出现这种问题，一方面是纹理压缩率损失严重，细腻的纹理压缩存放后，损失大量细节；另一方面是大纹理难以保证保证游戏运行速度和软件体积，如果在游戏中大面积采用分辨率高达4000dpi的纹理贴图，那么显卡的运算资源和显存容量很快就会告罄。因此，DirectX 11最快速和最直观的改变就是再次改进了纹理的压缩算法，将纹理体积和纹理质量控制在一个相当优秀的范围之内。
支持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游戏进化计划成员[3]
战地：叛逆连队2
北美：2010年3月2日
欧洲：2010年3月5日
EA Digital Illusions CE
第一人称射击
Frostbite Engine (v1.5)
AMD游戏进化计划成员[3]
地铁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
欧美：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游戏进化计划成员[4]、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