在近几天举行的GDC游戏开发者大会上,微软和NVIDIA、ATi两家重要的厂商都举行了针对最新DirectX 10的讲座,配合幻灯片的讲解,在讲座上透露了很多DirectX 10、尤其是Direct3D 10的最新技术和框架。

『NVIDIA的Kevin Myers先生』
从下面的介绍我们可以看出,D3D 10将会是微软正式的下一代应用程序接口API。在驱动方面将会有新的模式,采用IHV(独立硬件供应商)内核和用户驱动两种模式。

D3D 10将必须使用Vista操作系统,不支持XP及其以前的操作系统。到2007年(微软刚刚表示家用版的Vista将不会在2006年推出),支持DirectX 10的显卡将会推出,在XP操作系统下,这些显卡仍然可以采用DirectX 9驱动,但是DirectX 9驱动必然会进行比较大的改动。但是想要达成全规格的支持,Vista就是必需的了。此外,专有的HLSL(High-Level Shader Language,高级着色语言)也将会推出。
下面是D3D 9和D3D 10的渲染管线流程图,相比老版本,D3D 10去掉了以前版本DX的设备能力检查CAPS,为DX10和Windows Vista提供的显示硬件必须满足DX10的所有硬件特性。这样对于开发者就比较可以放心的使用各种硬件特性了,很类似游戏机平台。

从架构图上我们可以清晰的了解到D3D 10在结构上的重大变化,不再针对具体的渲染状态,而是全部采用“Stage”状态对象。D3D10对渲染状态这个概念进行淡化,一方面使用全Shader化的架构使得状态的前后设置和互相影响对渲染成功率降低到最少;另外对API架构也更为简洁,面对一些关键渲染状态进行封装和分类。

Input Assembler Stage类似D3D9里的顶点声明,也就是对用户输入数据进行整合和系统化,随后进入顶点Shader。我们可以看见随后增加的“Geometry Shader”,原来的VS和PS只是对逐个顶点或像素进行处理,而新的Geometry Shader可以对每个顶点或像素的临近顶点设置Shader,也就是可以对批量几何进行处理。

流输出层(Stream Output State),这个层的功能是将VS和GS处理完成的数据输出给用户,由用户进行处理后再反馈给流水线继续处理。Rasterizer Stage是光栅化对象,控制光栅器的行为,包括填充模式、剔除模式、多采样、DepthBias等。最后便是Pixel Shader和输出。
SM4.0、更高级的编程方法变为可能,整数的处理系统被强化,多种新的逻辑演算也等能变得进行,GPU和CPU的有效利用潜在力被扩大。

同时访问的texture数扩大为128,比SM3.0的16扩大了8倍。材质texture格式变为硬件支持的RGBE格式,其中的“E”是Exponent的省略,是RGB共同的说明,这在HDR的处理上有很大的作用,摒弃了以往需要专门decoding处理HDR渲染的流程。


shader变为共有的核心(common)。在SM3.0时代,ATi没有VTF(Vertex Texture Fetching,顶点纹理拾取)的支持,而在SM4.0中,这些区别将不复存在。








