第四章\第四节 Setup Engine(装配引擎)
Setup,通常这个词用于程序安装,在这里我们可以理解为GPU负责指令分配和安装的模块,主要负责给流处理器将要执行的指令准备数据,我们将其称之为装配引擎。

R600的Setup Engine
我们可以看到R600的Setup Engine分为Vertex Assembler(顶点装配器)、Geometry Assembler(几何装配器)、Scan Converter/Rasterizer(扫描转换/光栅化)、Interpolators(排序器),另外在顶点装配器上方还有一个特殊的Programmable Tessellator(可编程拆嵌模块)。
以往GPU的Setup Engine位于Vertex Shader(顶点着色器)之后Pixel Shader(像素着色器)之前,也就是说指令首先经过顶点建模之后才进入Setup Engine进行三角形重组,生成像素、纹理、颜色值等信息,然后交给Pixel Shader处理。
而R600是统一渲染架构&DX10,因此数据通过Command Processor之后直接进入Setup Engine,此时Setup Engine还必须承担部分顶点引擎的工作、并且生成几何着色(DX10之前几何着色由
CPU完成)的必备数据,所以我们看到R600 Setup Engine包含了Vertex Assembler(顶点装配器)和Geometry Assembler(几何装配器)两个新的模块;至于Programmable Tessellator(可编程拆嵌模块)属于DX10.1的内容,在前文中我们已经进行了非常详细的介绍。

用网格将的顶点坐标转换为像素坐标
一旦在所有必须的顶点处理都执行之后,顶点必须重新分散到三角形中,这个步骤由几何装配器来完成,这里三个顶点连成一个三角形,其中会有个索引缓存包含了诸如哪个顶点属于每个象素等。几何装配还处理粒子,它被定义为单个顶点。其中两个三角形会被转换成为矩形,它也成为原始的顶点。
接下来三角形顶点的2D坐标信息经过Rasterizer(光栅化)之后就得到了像素信息,也就是得到了屏幕上每个点的数据信息。进行这部分操作的时候也经过Scan Converter(扫面转换)生成了每个点的Z轴信息,这些信息将被传输到Z轴缓冲中,以备后用。
最后,所有的像素/顶点/几何/纹理/颜色等数据经过Interpolators(排序器)之后交给Shader进行处理,当然在此之前还有一项必备的工序,那就是数据的重新封装打包,以及指定相应的统一渲染单元运算,这部分任务由超线程分配
处理器完成。
