当前图形管道及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还增加了一下特性:

1.32-bit的整数指令(数学运算,位运算以及转换);2.通用和索引寄存器将使用统一的内存池(4096 x 4);3.独立的不过滤或者过滤内存读取指令(加载和采样指令);4.不相关(decoupled)的纹理绑定点(128)和采样状态(16);5.支持阴影贴图采样;6.多层(16)常量(参数)缓冲(4096 x 4).
借助于Common Core这个统一的模型,GPU上的各种算法、逻辑和流程控制指令更接近于CPU,这些改进将在未来几年内解决目前困扰着开发者的问题,另寄存器、纹理邦定点以及指令存储空间都得到明显的提升。很明显的一点区别是借助于Common Core的虚拟化能力,图形硬件并不需要像以往一样增加相同数量的专用纹理处理单元来提升纹理性能。


在R600的Unified Shader Architecture的的每一个Shader Processor中拥有5-路超标量体系结构着色处理器,单时钟周期最大可以处理5个标量MAD(乘加)指令,5个流处理单元当中有1个流处理单元(示意图中特别胖的那个)负责处理超越指令(SIN, COS, LOG, EXP, 等等),32-bit 浮点精度,支持整数和逐位操作。除了5个Stream Processor之外,Shader Processor中还包含了一个分歧执行单元(Branch execution Unit),这个是ATi在DirectX 10中的一个重要设计,我们下面会单独说明,在这里先按下不表。
Radeon HD 2900 内建4个纹理单元,每单元内建8个纹理寻址处理器(总数32个)用来执行着色指令,为纹理查找控制地址。每单元内建20个FP32纹理采样器(总数80个)每时钟周期可以取得1个单数据数值。每个单元内建4个FP32纹理过滤单元(总数16个),每时钟周期可以双线性过滤1个64-bit色彩数值,或者每2个时钟周期双线性过滤1个128-bit色彩数值。

NVIDIA没有为G80的Stream Processor做出更多的说明,但我们可以看到NVIDIA每一路Shader Processor中的Stream Processor都是毫无区别的,并没有能处理transcendental指令的Stream Processor,也没有用于处理分歧的Branch execution Unit,在纹理处理部分R600与G80则没有太大的不同。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |