3D研究——多边形与像素填充率 Terry 2000年 第4期   编者按:本文有删节,全文请见《用电脑PCDIY》第3期。 说起3D图形加速卡的性能,我们都会想到多边形处理能力和像素填充率这两项指标。比如Riva TNT2具备每秒1000万个多边形处理能力和250M/s的像素填充率。那么,多边形处理能力与像素填充率究竟是什么意思,它们将如何影响到3D图形加速卡的性能呢?而对于一块3D图形加速卡来说,是更强的多边形处理能力好,还是像素填充率更高为好呢?以下,将详细介绍多边形与像素填充率的知识。 #1  像素填充率   我们知道,每一幅图形都是以最基本的像素组合而成的,我们常说的800×600分辨率,就是指该图像是由横向800个像素和纵向600个像素完成的,实际上这一幅图共用到了4.8万个像素。但为什么现在的3D加速卡需要500M甚至1G以上的填充率呢?   要使一帧帧静止图片变成眼睛所能接受的动画,那至少每秒须具备30fps(每秒帧数)以上的帧速率,这样才会觉得画面是连续的。也就是说,要让即时处理的3D图像能成为连续的动画,那每秒就必须能达到480000×30=144万像素(14M像素/秒)。那么这样看来,我们根本没有必要采用100M甚至更高填充率的3D图形加速卡了?这不得不说说现有的3D图形加速卡处理一幅3D图像的过程。因为在3D游戏中,任何一幅图像都是以多边形组合而成,但这并不单纯是一幅平面图像,虽然我们最终在显示器上看到的仅仅是一幅没有深度的图像。比方说,在一个场景中,有主角,有树木和房子,当主角和树木遮住房子时,普通的3D显示卡并不会因此而不计算被遮住的部分,实际上3D显示卡必须计算整个场景中的多边形和像素。也就是说,如果场景越复杂,那么不可见的多边形和像素也就越多。所以,一般的像素填充率测试软件是不会采用太多的层面,这样才能计算出最准确的填充率。在普通的3D游戏中,大概需要3D显示卡填充1.5~3倍的像素,而对于Quake 3这样场景非常复杂的游戏而言,则有可能高达3~5倍。所以像素填充率一直都是3D图形芯片重要的数据指标之一,这决定了一块3D加速卡在各种分辨率下的性能表现。 #1  多边形对速度的影响   任何一个3D场景,都是由最基本的三角形所组成的。一块3D卡多边形处理能力的多少,将直接影响到3D场景构建的速度,但对于现在的3D加速卡而言,大多数必须依靠与CPU浮点运算的配合才能完成。对于Voodoo3这种内置了三角形设置引擎的加速卡来说,相对于其它3D卡对CPU的依赖将减少。而像GeForce 256这种内置了GPU的芯片来说,将极大改善多边形处理对CPU的依赖,但前提是游戏必须支持硬件T&L加速,这一点是非常重要的。   下^04070202a^是几款流行3D加速卡的多边形处理能力,单位(Polygon/s) 多边形处理能力对一块3D卡处理速度的影响是很大的,它决定了一块3D卡所能达到最高速度。因为在一个3D场景中,多边形的数量是一定的,多边形处理能力/每帧中多边形数量=每帧帧速度。也就是说,如果不考虑像素填充率的影响,多边形处理能力仅为500万/s的 G400是不可能比处理能力为800万/s的Savage 4快。但实际上,在对多边形要求较高的游戏中,如Expandable(兵人)中,多边形处理能力的多少与3D卡所能达到的最高帧数是有直接关系的。这就是为什么G400在低分辨率下性能不及其它3D加速卡的原因。而且,像Savage 4这种低填充率的3D卡,甚至可能在320 × 200的分辨率下强于Voodoo3。当然,在实际游戏中,一般多边形处理能力会首先限制着3D卡的速度。毕竟,现在任何一款3D卡的填充率都能满足在640×480下的需求。   也许你会问,那为什么G400在高分辨率下性能比多边形处理能力比自己高一倍的TNT2还要好呢? 首先要说明的是,多边形处理能力并不会因为分辨率的高低而产生变化,无论是320×200还是1600×1200,3D卡都能提供理论的多边形处理能力,当分辨率提高时,对3D卡提出的是像素填充率的要求,为什么G400的速度从640×480~1024×768都如此平均呢,很显然,G400较低的多边形处理能力严重制约着其在低分辨率下的性能表现。   由上面的测试可以得出,在低分辨率下,多边形处理能力越高,速度也就越快(当然,这还得看CPU浮点性能而定,相对来说,Voodoo3更宜在低分辨率下取得较高的帧数)   那如何才能确定3D卡多边形处理能力不足呢? 你只需用3D MARK 2000做一个简单的测试便可以了。在3D MARK 2000中,首次加入了对大量多边形的支持,在两个游戏测试细节均分为低,中,高三项,在这个测试中,每帧使用了6千~8万个多边形,这对于任何一款3D加速卡来说都是一种挑战,我们可以选用Highdetail(高细节)测试,观察在不同分辨率下的帧速。你会发现像素填充率已经不太重要了。   从下^04070202b^可以看出,填充率对于这项测试的影响是非常小的,不过也反映出3D MARK 2000 Highdetail测试过于极端,甚至在Savage 4这种像素填充率极低的3D卡上也无法反映其分辨率的影响。 #1  像素填充率对速度的影响   看完了多边形对速度的影响后,让我们再来看看像素填充率的情况。   在上面我们知道,3D卡所能达到的速度首先将会被多边形处理能力所限制(注意,这主要是指在实际游戏环境中,并不是指某些测试软件)。如果一块3D卡在640×480下只能达到30fps的速度,那无论这块卡填充率有多高,都不可能在其它分辨率上有所提高的。相反,如果一块3D卡像素填充率较低,我们就需要通过降低其分辨率来尽量达到其所能达到的最大帧数。不过这样的情况一般不太常见,因为我还没有见过多边形处理能力仅有10M/s,但填充率可以超过300M/s的显示卡,或是填充率极低,多边形处理能力却很高的。   这就是为什么Voodoo并没有采用8M显存的原因,虽然使用8M显存可以使Voodoo运行在更高的分辨率下,但Voodoo 45M/s的填充率并不能在800×600下提供令人满意的帧速。从这一点,可以看出3dfx在制订多边形、填充率及显存数量等细节上颇有一套,这样做,可以在合理的价格下提供了合理的性能。所以,这就是为什么许多多边形处理或像素填充率比Voodoo强的3D卡却无法达到Voodoo的性能,原因是厂商忽略了填充率与多边形处理能力合理的搭配。 #1  几款流行3D加速卡像素填充率   在这里要说明的是,Voodoo5 6000支持高达1.37GT/s~1.46GT/s的填充率,但这并不是为了在游戏中达到100fps或是200fps,关键是全屏抗锯齿对像素填充率的要求非常高。由于每帧图像需经T-Buffer处理后经过4次采样进入Frame Buffer(帧缓存),然后输出显示,对像素的要求也将是原来的4倍,如果一个在TNT2上运行得很流畅的游戏在Voodoo5上加上全屏抗锯齿要达到类似效果的话,那意味着填充率必须达到250×4=1000MT/s,所以,填充率仅为376MT/s的Voodoo 4 4500并不支持全屏抗锯齿和T-Buffer。也可以肯定的是,Voodoo 5在运行支持全屏抗锯齿的游戏时,并不会跑得比现在的3D卡还快。(^04070202c^)   如果说在一个游戏中,3D卡的多边形处理能力制约了游戏最高帧数的话,那么像素填充率将决定着3D卡在高分辨率下的表现,那会不会出现像素填充率限制了最高帧数呢? 这种情况现在看来是不会发生的,除非你的3D卡填充率真是低得可以了。对于现在的游戏而言,100M/s的填充率足以满足3D卡在640×480下的填充率了,当你的3D卡在320×200分辨率下速度比640×480还快的话,那肯定是填充率太低了。   对于选购3D加速卡来说,由于填充率的多少将决定着该卡在不同分辨率下的表现,所以如果你只有14英寸显示器的话,买一块填充率为90M~150M/s的3D卡就足够了,而对于15英寸显示器来说,拥有一块150M~250M/s的3D卡是必须的,更高尺寸的显示器,则需要250M以上的像素填充率才能很好的发挥。对于那些对速度非常敏感的朋友来说,我推荐选择多边形处理能力更强的3D卡,否则,你肯定会认为购买G400 MAX还没有TNT2值。总之根据自己的实际情况选购最重要,G400 MAX在1280×1024下可以战胜所有同代对手,但这并不代表它是同代中速度最快的。   谈到像素填充率,不能不说一下的是32bit渲染。通过实际使用我们发现,32bit色下,性能将比16bit色下降不少,是因为32bit下多边形增多吗? 或是像素填充率提高了? 都不是。由于32bit渲染对显存带宽有很高的要求,比如128位SDRAM在150MHz带宽为2.4GB/s,而显卡在进行32位渲染时,须进行1次读操作和两次写操作( ZRead,ZWrite,CWrite ),带宽的大小将直接影响3D卡在32位色时的填充率,所以像G400 MAX这种带宽较大的卡在做32位处理时性能较好也不足为奇了。   所以,像TNT2 M64这种64位显存接口的3D卡,在做32位处理时性能将比TNT2有明显下降。在下表中,可以看到几款3D卡在不同色深下的填充率。   其中GeForce的测试是基于SDRAM版本的,所以填充率在32位色时有明显下降,那为什么同样是SDRAM版的Savage 2000却能在32位保持一定的填充率呢? 这都归功于Savage 2000双像素/双纹理的流水线,这与GeForce 在单周期处理4个像素所不同,双像素/双纹理并不会对带宽带来更多的要求。在不久前Annanandtech网站做的测试中,Savage2000在32位色下的表现令人非常满意,可能现在只有GeForce 256 DDR版可与之媲美。(^04070202d^) #1  多边形与填充率谁更重要?   前面说过了多边形与填充率各自对3D游戏速度影响的问题,那么在3D游戏中,起决定性作用的究竟是哪项呢?   这必须根据3D游戏具体情况而定,不过现在有两种极端,一种是对多边形要求很高的游戏,另一种情况则是需要大量填充率的游戏。对于前一种情况还极少发生,因为大部分3D卡的多边形处理能力均不是很高,所以,游戏的多边形数一般设在大多数3D卡都能达到50~60帧左右的速度,当然,这是在不受像素填充率及纹理填充率影响的前提下得到的。   虽然现在也有许多须处理大量多边形的游戏或测试软件出现,但这毕竟是少数,不过可以肯定的是,未来的发展方向肯定是更多的多边形,3D MARK 2000的出现就证明了这一点。游戏厂商真会推出只有一两种卡能跑得起来的游戏吗? 至少在近一段时间内,这样的游戏不会大量出现。   与多边形所不同的是,即便是填充率为500MT/s的Savage 2000,也不可能在游戏中比TNT2快两倍,如果你玩游戏主要在较低的分辨率下,那就是1GT/s以上的填充率有什么用呢?除非每帧中的多边形少得足够提供更高的帧数。   如何判断一块卡的多边形处理能力或像素填充率是否搭配合理呢? 只须留意测试软件中的帧数变化,像TNT2这样最低与最高帧数相差很大的3D卡,很明显是因为填充率不能达到要求所致,因为在一个场景中,所需处理的像素并不是一定的。如果你对比TNT2与Voodoo3的最高帧数和最低帧数就会发现,TNT2最高帧数比Voodoo3高了不少,但是由于最低帧数也很低,导致平均帧数两者不相上下。这就是浪费了多边形处理能力的表现。而与TNT2相反的是,一些卡在测试中帧数始终保持在一定范围内,很显然,如果加强多边形处理能力,将对帧数提高有很大的促进作用,但前提必须是有更高的像素填充率作为后盾,否则就会让人感觉一停一顿的了。   时常有人谈到超频显卡后性能没有任何提高,从以上的论述可以看出,要让帧数提高必须提高多边形处理能力,而超频并没有办法解决这个问题,显卡超频所能带来的好处就是提供了更高的像素填充率。如果超频后你发现在低分辨率下帧数也提高了,那只能说明你的3D卡填充率真是太低了。而当分辨率提高后,理论上只有有足够的填充率,速度将与低分辨率时一致,但实际上,除非有1GT/s以上的填充率,否则要在1600×1200下达到流畅是不大可能的,所以超频最大的好处就是改善了3D卡在高分辨率下的性能。不过如果碰到像Quake 3这类像素大户,那么即便是低分辨率下也会有所提高的。   如果超频3D卡芯片能提高填充率,那为什么要超显存呢? 如果填充率很低的话,超频显存可能不会看到什么提高,以TNT2或GeForce SDR这类卡来说,显存超频后提供了更大的带宽,将极大改善在32位色下的效果。   当然,对于一块3D卡而言,影响性能的绝不仅仅是多边形处理能力与像素填充率,它们均属于硬件支持的范畴,而对于渲染等处理,则是决定了整块卡最终的效果。而渲染效果的好坏及速度则是可由软件所改善的,我们升级显卡驱动,最终目的就是改善这些性能。而在相同的多边形处理和填充率下,谁的驱动程序或API编得好,谁就能取得更好的性能。   当Voodoo4发布时,许多人都会发现其填充率甚至比Voodoo3 3500都低,难道Voodoo4的性能比Voodoo3 3500还差吗? 当然,我们并不排除这种可能,但依照3dfx的发展,多边形处理能力绝对不可能没有提高的,虽然3dfx并未公布VSA-100的多边形处理能力,但我猜测至少应在100M/s左右。当然,如果3dfx为了取得更高的帧速度,有可能提供更高的多边形处理能力,而有大量多边形做后盾,Voodoo4/5在应付未来游戏时也将提供令人接受的速度。所以,当Voodoo4 4500的测试速度比Voodoo 3 3500快10帧以上时,千万不要惊讶。不过可以肯定,Voodoo4 4500将无法满足高分辨率下的要求。   写了这么多,主要是希望能为大家在选购3D加速卡时能有所帮助,有目的的选购3D加速卡,千万不要仅仅因为15xx万的多边形处理能力或1GT/s以上的填充率而成为购买的首要条件,就像我们现在买个100G的硬盘一样,将会造成资源的严重浪费,购买3D加速卡,够用就行,毕竟,我们的腰包已被JS们搜刮得差不多了。