三年架构大革命!R520脱胎换骨全测试
首先我们还是来看一下R520的顶点渲染管线部分,因为如果按照3D图形处理顺序而言,这部分是需要先执行的。很早之前,顶点坐标的运算是由CPU完成的,到了GeForce和Radeon以后,图形芯片便具备了T&L(Transform&Lighting 变换和光照)的功能。
我们注意到,在R520图形芯片上,顶点渲染单元的数目为8个,这个数目是和NVIDIA的G70是相同的,比上一代的R4XX系列的6个增加了两个。
也许有朋友会问,为什么顶点渲染管线的数目的增加没有像素渲染管线的增加那么快,每代产品的增加并不会达到太大的幅度。
这是因为顶点运算的需求是决定于游戏本身的,每一个游戏的3D模型一旦确定,顶点数目是固定的,有的游戏提供了几种不同细节程度的模型供玩家选择,但是多数的游戏的模型是固定的,为了保证游戏的性能,游戏开发者通常会利用贴图等手段控制模型的3D顶点数目。游戏在执行的过程中,顶点部分的运算也是不会受分辨率,特效等设置而改变的。
所以对于顶点渲染单元,虽然是非常重要,但是却是需要始终本着够用的原则进行设计,游戏设计者也通常不会突然设计出对顶点运算要求非常高的游戏来的。这就是为什么我们看到从R9800到X800,到今天的X1800的增长显得非常平稳的原因。
我们看到,在每个顶点运算单元中,都由三部分组成,它们分别是:
- 上图中橙色的128bit精度的向量(vector)算术运算单元。
- 上图中红色的32bit精度的标量(scalar)算术运算单元。
- 上图中黑色的程序流控制单元(Flow Control)。
前面我们已经提到,R520全面支持SM3.0特性,可以执行多达1024条指令,借助于程序流控制的功能,可以执行的指令数就达到了无限条。
经过前面的顶点渲染单元的处理,每个时刻的3D模型中的顶点的位置和状态就被运算出来了,接下来,这部分数据被送到了顶点渲染引擎的后半部分:
现在我们就来看看这个部分的四个功能模块:
隐面消除技术节省大量资源
Backface Cull,这个功能叫做隐面消除,就是将3D模型中,不会显现在用户面前的那些三角形去掉,不进行下面的渲染,隐面消除技术能够非常有效地节省资源,当年的Kyro显示芯片就是因为这项技术声名大噪,虽然Kyro没有成功,但是这一思想在后来已经被NVIDIA和ATI学到了手里。
Clip,这个部分的功能是将位于屏幕边缘的三角形进行裁剪,将那些三角形重新修正成为和屏幕适合的三角形。
Persctive Divide 这部分是将3D模型中的三角形转换为平面信息重要步骤,这个功能模块可以称为透视除法,它将齐次坐标系下的坐标转换为2D坐标。
Viewport Transform 这个部分的功能是将已经生成的三角形顶点的2D坐标再进行转换,以便适应新的要求,缩放到小的矩形区域中。
Setup Engine
经过前面的顶点渲染引擎的处理,最基本的每个模型的顶点信息已经转换为2D坐标了,但是这个2D坐标并不是最终的画面分辨率的信息,只是一些点的2D坐标。
如果要进行下一步的操作,就必须进入Setup引擎进行处理。生成最终的每个像素的信息。
Setup,我们最常见的这个词的意思就是“安装”,但是在这里我们可以理解成,它用一个网格去比对前面得到的三角形顶点的2D坐标信息,将这些数据光栅化,从而得到像素信息,也就是得到了屏幕上每个点的数据信息。
进行这部分操作的时候也生成了每个点的Z轴信息,这些信息将被传输到Z轴缓冲中,以备后用。