从DirectX 9到DirectX 10,微软几乎将API打破重来以构建全新的渲染体系,DirectX 10也成为了第一种影响硬件设计的图形API——统一渲染架构代替传统的分离渲染,从而赋予GPU更高的渲染效率和可编程能力,也为通用计算提供良好的基础,之后的DirectX 10.1就属于功能上的小升级。而到DirectX 11,微软引入了更多的新技术,但同时又保有DirectX 10.1的全部特性,换句话说,DirectX 11实际上就是DirectX 10.1的扩展集,所有DirectX 10.1硬件所遵循的API对于DirectX 11同样适用。
对用户而言,这样的设计在兼容方面很有好处:无论软件还是硬件,都可以完美地向后兼容。现行的DirectX 10
游戏,在DirectX 11环境下都可以正常运行。而对软件开发者来说,包容的设计使他们能够非常平滑地过渡到DirectX 11,而不需要像DirectX 9到DirectX 10过渡那样突兀和漫长。这样一来,软件厂商可以直接转入DirectX 11技术体系,这对于后续产品开发是非常有利的。不过,DirectX 11不仅只是简单的升级,它带来相当多的新颖特性,比如引入通用计算着色器(Compute Shader),允许GPU从事更多的通用计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地将GPU作为并行处理器使用。还有就是引入多线程渲染、提高GPU的工作效率;新增的镶嵌技术(Tessellation)可以帮助开发人员创建出更为细腻流畅的模型,实现高质量实时渲染和预渲染场景。
首先我们来看DirectX 10体系的渲染架构,DirectX 10加入Geometry Shader(几何着色器,简称GS单元)设计,让GPU可以直接处理模板阴影特效(Stencil Shadows)燃耐、动态法向量图(Dynamic cube maps)及早兆位移贴图(Displacement mapping)等操作——过去这些操作是由CPU来完成的。此外,Geometry Shader最高可支持1024个顶点处理,同时可把不必要的顶点数据删除,这两项功能使得绘图运算将较以往更具效率。除了纳入几何着色器外,DirectX 10的渲染流程其实并没有改变,顶点渲染与像素渲染依次进行,只是在硬件层级上,渲染工作不再由独立的顶点着色器、像素着色器进行,而交给通用的统一着色器(或者说统一渲染单元)。
现在我们接着来看看DirectX 11的渲染管线。最引人注目的变化就是:在顶点渲染之后,DirectX 11新增了外壳着色器(Hull Shader,简称HS)、镶嵌器(Tessellator)和域着色器(Domain Shader)三个新的管线;而在像素渲染环节,DirectX 11则新增了计算着色器(ComputerShader,简称CS),这些新陆段租增的部分也就是DirectX 11的关键所在。