当前图形管道及Shader Model 4.0
我们的系统建立于PC、工作站以及XBOX平台上的应用程序可编程管道。在Direct3D 7之后图形渲染管道分为两个编程阶段,一个用来处理顶点数据(Vertex Engine),一个用来处理像素(Pixel Shader)。包括Direct3D 10在内我们可以把顶点引擎及像素渲染器的发展分为4代。

目前大多数的顶点引擎及像素渲染器都是以并行的状态来处理相互独立的顶点及像素数据,典型的硬件现实中Pixel Shader的数量要比Vertex Shader多很多,比如Radeon X1950XTX中Pixel Shader:Vertex Shader就是16:8,GeForce 7900GTX是24:8。这反映了典型的3D游戏渲染过程中像素处理的工作量要比顶点多很多。
Shader Model 4.0:
在Shader Model3.0版本的图形处理核心中,可编程的渲染管线都是通过每个阶段独立的虚拟机来实现。Direct3D 10定义了一个称为Common Core的虚拟机,作为每一个阶段的编程基础以及向下兼容之前的Direct3D版本,Common Core这个虚拟机保留了以前模型中许多特性,比如浮点运算操作这些,在这之外Common Core还增加了一下特性:

32-bit的整数指令(数学运算,位运算以及转换);
通用和索引寄存器将使用统一的内存池(4096 x 4);
独立的不过滤或者过滤内存读取指令(加载和采样指令);
不相关(decoupled)的纹理绑定点(128)和采样状态(16);
支持阴影贴图采样;
多层(16)常量(参数)缓冲(4096 x 4);
借助于Common Core这个统一的模型,GPU上的各种算法、逻辑和流程控制指令更接近于CPU,这些改进将在未来几年内解决目前困扰着开发者的问题,另寄存器、纹理邦定点以及指令存储空间都得到明显的提升。很明显的一点区别是借助于Common Core的虚拟化能力,图形硬件并不需要像以往一样增加相同数量的专用纹理处理单元来提升纹理性能。
虽然Shader Model4.0帮助开发者实现了统一的API调用,无需再区分Vertex指令与Pixel指令,但在Shader Model4.0中数据的呈现方式、算法精度、行为等都比以前的版本有更严厉的规范。为了保证这些内容在不同时代系统(主要是Windows)中的可移植性,开发者被告知需要尽可能的在所有地方都避免使用自定义的行为,需要遵循CPU的标准。为了获得精确的行为,Shader Model4.0时用了IEEE-754定义的单精度浮点数据呈现方式,通过该定义非规格化数将被近似为0,通过这样在不同硬件间建立良好的定义、一致的行为。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |