T&L测试揭秘 ION 2000年 第17期   硬件T&L(几何转换和光照引擎)一向是Geforce让世人为之注目的特性之一,它使3D游戏效果得以进一步提升,在新一代的3D芯片如Geforce2 GTS、ATI的Radeon256中都把T&L置于首要的位置。人们一直以为在现有的主流显卡中,集成硬件T&L特性的Geforce的表现是最好的,不过令人诧异的是,使用3DMark2000进行一些T&L测试时,却发现高端的Athlon处理器加TNT2 Ultra显示卡的系统可以击败基于GeForce显示卡的系统(见^17030101a^)。   可以很明显地看出,高端的PentiumⅢ在所有光照情况下项目测试的得分都高于Geforce,而搭配TNT2 Ultra的Athlon处理器在4个光照或8个光照的情况下,测试结果也高于Geforce。问题自然就出来了:硬件加速的T&L怎么会比软件模拟的还慢?在对这个问题作出解释之前,我们首先需要了解3DMark2000中T&L项目的测试原理。 #1 GPU与数学运算   用于T&L测试的多边形测试场景是一些绳圈形状的物体,在测试时,绳圈被平移、旋转、缩放、光照。平移、旋转和缩放正是T&L的T(转换)部分,而光照则是T&L的L(光照)部分,决定照在物体表面的光线。现在人们的一个误解是认为这个测试可以用来测试游戏性能,但实际上这个场景不能代表所有的游戏,一个正常的游戏肯定不是由一个物体重复变化而来,一个真实的游戏有无数个不同的物体,而且有更多的变化(不仅仅是平移、旋转和缩放)。所以它实际是一个理论值测试,就和填充率测试一样。同样,3DMark 2000的填充率测试也不能代表游戏,它只是测试理论峰值填充率的场景。   在游戏的运行中,T&L是非常复杂的数学运算,计算的对象是组成物体的三角形的顶点。实质上,每个顶点都要经过空间的转换,也就是说经过平移、旋转、缩放。光照同样也是数学运算,需要计算光照的位置、方向,视角方向位置、平面位置等等。对于nVidia的Geforce来说,GPU就是做这个差事的。GPU具有特殊的流水线,为T&L的数学运算作了优化,但硬件也有限制,它具有一定的运行时钟,性能必然有一定的峰值上限。   如果没有Geforce的GPU,数学运算就必须通过CPU来进行。但它不可能像GPU专门为某个工作优化,那么普通的CPU必须使用软件来完成T&L,即通过编程来实现T&L所需的数学运算。 #1 CPU的特殊优化   由于T&L对数学运算要求非常高,CPU的浮点性能设计就显得尤为重要,而且3D图形卡的发展已是大势所趋。Intel和AMD推出的主流高端处理器都设计了特殊的3D优化指令,这些指令包括对T&L运算的优化。但Intel和AMD的3D指令截然不同,具体来说,Athlon和PentiumⅢ处理器一个采用3D Now!增强指令,一个采用SSE指令,虽然执行相同的程序,内部运算却完全不同,但目的都是对3D性能进行优化。   对于目前大多数游戏来说,在3D引擎中都包含了特殊优化的软件T&L。因为硬件T&L是新生事物,而游戏公司很早以前就开始设计游戏,他们面对有限的硬件资源必须物尽其用。很多软件公司都成年累月地在软件设计上下功夫,当然,他们还需要求助于Intel和AMD。 #1 nVidia对软件T&L的回答   尽管很多游戏都在使用软件优化的T&L,nVidia公司却不赞成使用优化的软件T&L,原因可能很简单,如果PentiumⅢ和AMD的软件T&L性能比nVidia的硬件还要快,对于nVidia一直大肆宣传的Geforce岂不是个沉重的打击?nVidia对软件T&L的异议主要在于以下几点:   1.3DMark2000采用了定制的转换和光照(T&L)引擎。因为这是专门为3DMark2000设计的引擎,所以它仅仅可以精确显示使用这个定制引擎的游戏的执行效果。就nVidia所知,目前还没有几个游戏是基于这个引擎的。如果测试的目的是测试某个特定的图形卡在真实游戏中的性能,那么选择普遍和广泛应用的T&L引擎,测试结果才更精确。很遗憾,3DMark2000选择了自己定制的T&L引擎作为所有软件T&L显卡的 默认设置,我们认为这是3DMark2000的一个主要缺点。   nVidia所说的大致是指优化的软件T&L应用不够全面,事实在还没有硬件T&L特性之前,大多数游戏都定制了T&L引擎。如果设计人员希望游戏流畅的话,他们就必须设计快速的软件T&L。像Quake3 Arena这样的顶级游戏就有自行设计的优化引擎,而Messiah绝大部分的几何处理也使用了软件T&L。很多游戏都为软件T&L进行了优化,没有软件T&L的游戏是很难成功的,峰值数据只是告诉我们显卡的性能与理论最大值接近的程度,以及开发人员应该怎样使用。   Geforce的峰值性能确实比高端CPU优化软件T&L引擎低,按照nVidia的解释,3D Mark2000提供的是一个错误的测试方法,而按照它们的方法Geforce的表现确实速度很快,可这种测试是毫无道理的,因为这只是一个峰值测试,在游戏中没有一个CPU会百分之百去献身于T&L。所以尽管在峰值测试中Geforce表现不佳,但在所有的真实游戏中Geforce都会比软件T&L快。   2.3DMark2000测试的官方说明文件上推荐进行所有的测试时关闭Vsync选项,这是正确的测试方法。但是,3DMark2000还推荐在“Triple Buffer”模式下测试。事实上,3DMark2000的默认设置就是Triple Buffering。这是3DMark2000的又一个缺点。   这是nVidia公司认为3DMark2000的第二个缺点,但实际上如果第一个论点站不住脚,那第二点也是一样。Vsync和Triple Buffer与测试都毫无关系,使用Triple Buffer还是Double Buffer再关闭“Vsync”选项只对内存(三倍缓存对帧缓存的占用比双倍缓存多一个后台缓存)有影响,而可用的内存主要是对填充率有所影响,对实际的T&L速度影响不大,使用Double Buffer并不会使T&L性能加倍。   3.光照条件的简化显然是为定制T&L引擎所作的又一次优化。没有镜面高光,将明显减少光照引擎的工作量。例如,在一个第一视角游戏中,当你用火箭炮开火时,会看见墙壁上的闪光效果。另外,还有一些游戏中使用了手电筒或车灯照亮某个区域,这都是镜面高光效果。可是3DMark2000“High Polygon Count”测试的光照并没有这些效果良好而运算复杂的光照条件。   nVidia公司建议使用更复杂的光照效果,例如Spotlight,在使用越多的复杂光照后,Geforce的T&L画质表现很不错,但复杂的光照效果会使得速度变慢。   4.3DMark2000的定制T&L引擎具有专利保护,不可能用第三方软件来验证引擎中的光照计算的精确度。   很显然,这是nVidia对光照测试表现失常的说明,那么Geforce系统的光照表现为什么会慢呢?这是因为Geforce的性能表现已经到了硬件极限,硬件流水线和时钟都不可避免地存在极限值,峰值测试的数字正好说明了Geforce每增加一个光源时,性能都会剧烈下降,衰减幅度有一半之多,每增加一个光照,性能都会“稳步”减弱。这种不可避免的后果使人理解为什么它的光照测试分值那么低。 #1 结 语   3DMark2000是一个很好的测试软件,通过标准设置的软件T&L也可以很快,nVidia芯片的T&L也很好,但我们必须认识到目前它并不完美。nVidia的Geforce确实支持T&L加速,但T(转换)加速占了大部分,而L(光照)加速相对要少一些,3DMark2000的T&L测试结果说明的正是这个问题。不过这只是个峰值测试,峰值性能是CPU 百分之百做T&L的结果,我们知道在真实的游戏中这是不可能的,除了T&L以外,CPU还有更多的工作要做,这就是为什么Geforce在游戏中仍然快的原因:Geforce卸载了CPU的负担。3D Mark2000还证明软件T&L经过优化,也可以提供很不错的性能,尽管在真实的游戏中不如GPU。