|
[今日各地硬件价格]
作者:清水反应
今年2月27日,研发代号NV20、正式名称叫做GeForce3的NVIDIA的新一代显卡如期发布了。之前对于NV20的各种猜测终于结束了——因为标准答案发下来了!OK,让我们一起看看标准答案。:P

如上图,这块小小的东西里面集成了5700万个晶体管,4个象素管线,每条管线配备2个材质单元,完全复合
DirectX 8规格,提供对其的完全硬件支持。另外所有的象素管线都是可编程的,而且内置一套预制好的顶点处理效果,进一步方便游戏开发者。改善了FSAA(全屏抗锯齿),这个自从DirectX
7开始Nvidia就支持的特性,在那个时代的FSAA效果并不理想,当打开FSAA功能时显示效能下降很多,几乎没有什么实际意义。这么说说,你可能觉得GeForce3似乎没有什么改善似的。其实本文的主旨就是帮你了解GeForce3背后的技术以及这些技术对于晚些时候发布的支持DirectX
8应用程序的影响。
关于芯片
NVIDIA每一代的新显卡的晶体管数目几乎都比上一代多一倍:NVIDIA's RIVA 128大约是700万个晶体管,TNT2集成了1500万晶体管,GeForce2大约是2500万。ATI
RADEON由3000万个晶体管组成, Pentium 4 处理器大约是4200万个晶体管,采用的0.18微米工艺制作。
在GeForce3中,NVIDIA集成了5700万个晶体管,是GeForce2 2倍还多,而且是采用了0.15微米技术,在制作工艺上已经领先于Intel了。GeForce3还提供了对于静态T&L的支持,也就是说提供了对于DirectX
7应用程序的完全兼容。

同上一代产品GeForce2 GTS一样,GeForce3架构依然真是配备了4条象素管线,每条管线配备2个材质单元。虽然在数目上一样的,可是实际工作效能是完全不同的。对于2纹理象素GeForce2
GTS、GeForce3都可以在一个时钟周期处理4个,但是对于4纹理象素GeForce2 GTS需要两个周期才能处理完(每次只能处理2个),而GeForce3可以让两个象素管线同时处理一个4纹理象素,也就是说一个时钟周期它可以处理2个4纹理象素。可见GeForce3在不降低性能的前提下,为游戏开发者提供了更宽松的环境。
GeForce3核心时钟频率是200MHz,再加上2倍于GeForce2 GTS的晶体管数目,发热量可想而知。下面的简单计算可以看出GeForce3在理论象素填充率和材质填充率上都基本等同于GeForce2
GTS。
200MHz × 4 个象素管线= 800Mpixels/s
200MHz × 4 个象素管线 × 2 个材质单元每管线 = 1600Mtexels/s
NVIDIA目前认为这样的数据已经没有什么实际意义了,他们指出单纯的通过提升显示芯片的处理能力这种“暴力”的方式已经不能解决目前的问题了,因为现在的显示芯片的运算能力已经收到了带宽的制约,所以如何更加有效的发挥显示芯片的性能才是最终的解决之道。这也就是为什么单纯的从填充率的指标看不出GeForce3相对于GeForce2
GTS具有优势的原因。
所有的GeForce3板卡都配备至少64MB of DDR SDRAM,让我们一起向32M的时代告别吧。显存时钟频率是
230MHz (也就是460MHz), GeForce3理论显存带宽是7.36GB/s:
460MHz × (128 bit bus / 8 = 16 bytes) = 7360MB/s
当然这样的计算是没有考虑到DDR内存的潜伏期等因素的,所以实际有效带宽还要低一些。不过我们希望NVIDIA的最新的显存构架LMA(Lightspeed
Memory Architecture:光速显存架构)能对这个损失弥补一下。
光速显存架构(Lightspeed Memory Architecture)
如果你把一些3D游戏设定到高分辨率上,会发现基本都不能流畅的运行,这并不是目前的顶级没有这个运算能力,而是因为基于DRAM技术的内存不能提供足够的带宽从而形成了制约显卡性能的瓶颈。针对这个问题,ATI开发了HyperZ技术,可以通过去除一部分冗余数据并、清除Z缓冲等方法来有效的利用带宽。另外无损压缩技术的应用使得不牺牲还画质的前提下,尽可能的减少数据的传输。
NVIDIA也开发了一套类似的技术在GeForce3中最大限度的提高230MHz DDR带宽的利用效率。
·交叉显存控制技术(Crossbar memory controller):
目前的内存控制器一般都可以传输256 bit的数据(其实是把256bit分成2个128 bit数据分为两次传输,因为DDR可以在时钟周期的上升沿和下降沿都能传输数据)。不过问题是当传输一个小的三角形数据——这些数据可能只有64bit的时候,传统的内存控制器会用256bit的能力来传输这些64bit数据,也就是说带宽利用率只有25%其余的75%都被浪费了。GeForce3采取了把显存控制器分成4个显存控制器的方法来提高效率,这4个显存控制器之间以及它们同GPU之间都相互联系、通讯协同合作。每个显存控制器都能独立传输64bit数据,或者协同工作传输256bit数据。未来的游戏为了得到更加逼真的效果,小三角形的使用量会更多,GeFroce3采用交叉显存控制技术能更好的适应这种情况。
·无损Z轴向压缩算法(lossless Z compression algorithm):
这是LMA架构中又一个提高显存带宽利用效率的技术,这项技术同RADEON采用的技术相类似。决定3D场景中的物体景深的就是Z轴向坐标,无损Z轴向压缩算法可以减少Z轴向数据的大小,但是却不会减少数据的精度,同样画质也不会因此受到影响。
·Z轴遮挡选择算法(Z-Occlusion Culling):
这是一项类似于ATI的Hierarchical Z技术,主要通过一定的算法来验证某些象素是否能够被看得见,从而决定是否对其进行处理和渲染。如果一些象素被确定是不可见的,那么显示芯片将不会对其进行渲染,从而大量减少无用数据的生成,节约大量的带宽。一般的3D游戏的精神复杂程度是2,也就是说对于每一个可见象素需要渲染两次才能得到我们看到的结果,可见如果能真正的实现这种处理,带宽的利用率的提高不是一点两点,也就是说在目前的GPU运算能力下,我们还能得到更逼真、更复杂的游戏效果。
nfiniteFX引擎
pixel shader随着GeForce2 GTS的发布一起出世了,现在NVIDIA又开发名称“vertex
shader”的技术。这些可编程管线的最终目的是为了能实时产生无限量逼真的图象效果,这个或许就是nfiniteFX名字的由来吧。任何的3D对象都是有若干个三角形组成的,每个三角形都由若干条线组成,两天线的校点就是一个顶点(vertex)。简单的说,vertex
shader就是一种图形处理功能,通过处理3D场景中的的对象的顶点,为3D对象加上特殊效果。GeForce3具有的可编程的vertex shader给了程序设计师的设计空间极大的弹性,
Vertex数据属性包括数据x、y、z轴向坐标,色彩,光照,材质指令等等,vertex shader可以控制所有的这些属性。你可以想象vertex
shader为一个具有运算功能的盒子,这个功能能对vertex所有的属性进行设定(但是它不会删除或者创建任何数据)只是改变vertex的属性,比如各个轴向的坐标、透明度、颜色等等。当然不是每一个进入盒子的vertex都会被改变属性,而是按照程序的要求来进行的。

如同你在上图看到的,在GeForce3中,vertex shader处理单元同硬件T&L处理单元是并行的,也就是说如果vertex
shader正在运行,那么硬件T&L单元一定是在休息的。不过图形对象虽然只是经过了vertex shader处理单元处理而没有经过硬件H&L单元处理,但是输出结果依然是经过完全的几何转换和光照处理过的顶点。DirectX
7应用程序利用的是静态T&L原理,所以需要经过硬件T&L处理单元的处理,而复合DirectX 8以及以上的应用程序利用的是vertex shader处理单元,而不经过硬件T&L单元的处理——可见GeForce3这样的设计是为了充分兼容以前的程序,同时又能支持新程序。
因为vertex shader被设计为可编程的特性,所以程序究竟能支持何种效果,是由程序开发者当初的创意决定的——为了达到这种创意他会选择不同函数和效果来修饰设计的对象。Nvidia为此开发了近100套特效,并且开发了管理些次特效的管理程序。下面我们将来见识下这些非凡的效果。
Vertex效果
创造栩栩如生的动画角色是vertex shader首要的应用。ATI在RADEON中采用了“阵列蒙皮技术”(matrix
skinning),这个功能使得游戏开发者能够为设计的角色骨架敷上真实的皮肤、衣服等效果,让关节的运动不再生硬无比。ATI RADEON用于蒙皮技术的硬件加速阵列是GeForce2
GTS的两倍(分别是4、2)。而GeForce3将这个数目增加到了32个!利用它将能创造更加逼真的动画角色。下图是由NVIDIA开发的展示GeFrce3
vertex shader以及关键帧插值运算功能的demo的截图。

点击放大
另外描绘诸如若隐若现的雾气、复杂的反射效果等等环境场景也是vertex shader的拿手好戏。透镜效果也是能赋予环境的一种特效。使用定制好的转换阵列:鱼眼透镜,就能通过DirectX
8生成下图所示的效果。这种转换是无法通过以前版本的API的静态T&L实现的。

使用前 使用后
除了刚才我们讨论的环境效果,GeForce3的vertex shader还能用于有规律的物体形变。首先可以作用于一些静态物体,利用形变来产生动态效果,比如让一面旗子随风飘动、水波荡漾的效果、动物呼吸运动时胸腔的运动;另外可以作用于物体表面来产生诸如子弹的破坏效果、塞车碰撞之后的损坏。

起伏不平的银色金属板表面,这都是运用Vertex效果之后生成的
GeForce2 GTS和ATI的RADEON都只能赋予每一个顶点固定数目的硬件光源,而GeForce3协同DirectX
8理论上可以把无限多个硬件光源赋予处理对象。其实对于顶点效果而言,目前只有一部分是经常用到的,比如光照效果,形变,动态模糊等等。只有等到支持DirectX
8游戏全面上市的时候,我们才能体验到可编程顶点技术所带来的无数的令人炫目的新的效果
Pixel Shader
vertex shader其实是同GeForce2 GTS同时发布的技术,而pixel shader是对这个功能的一个补充。正是由于vertex
shader的不断发展才使得GPU越来越复杂。这也就是为什么GeForce3虽然在填充率指标上没有什么变化,而晶体管数据却达到了前所未有的5700万个!
因为具备了可编程的pixel shader,GeForce3允许开发者可以不必再拘泥于NSR的限制,而是可以自己创建pixel
shader效果。GeForce2每个时钟周期只能进行2个材质混和运算,GeForce3却可以进行8个。也就是可以处理2个4纹理象素,而GeForce2
GTS处理一个4纹理象素就需要两个周期。可见GeForce3大大提高了运算效率。
GeForce3进一步扩展了pixel shader的能力,使得它能并行处理36个运算,而GeForce2
GTS平行运算数目只有7个。比如硬件阴影、反射凹凸映射、材质属性、每象素光照等运算都有从这种扩展中受益。因为pixel shader可以精确到象素级别进行精细控制,所以生成极具质感的皮肤、头发、羽毛、以及真实的反射等效果都是GeForce3的强项。

HRAA高分辨率抗锯齿(High Resolution Anti-Aliasing)
Voodoo5的出现正式把抗锯齿功能作为了显卡的一项重要的新功能,NVIDIA、ATI见状当然也立即实现了对FSAA(全屏抗锯齿)的支持,可是效果的确不敢恭维,即使使用GeForce2
GTS如果把游戏的FSAA功能打开,也会感觉到显卡的力不从心。GeForce2 GTS使用了一种称之为超级采样的技术——它妄图仰仗GTS无人匹敌的填充率,使用蛮力来实现抗锯齿功能——它在极高分辨率下对于每一帧图象都进行渲染。
NVIDIA在GeForce3中采用了HRAA,声称HRAA能取得同超级采用同等质量画面的前提下,性能也有了极大的提高。“重建滤镜”利用相邻象素的采样点数据计算出来每一个象素最终结果,这种采样方式就称为梅花形采样,如下图,利用梅花形采样实际上每个象素都只是采样2点,也就是说只需要超级采样的2点采样的计算能力,就能得到相当于4点采样的图象质量。

请看下表以及下图,梅花形采样在各个分辨率下,只是需要2点采样的资源就能达到4点采样的效果,而比4点采样少用了一般的资源,另外还可以看得出来,梅花形采样当分辨率越高表现出来的优势就越明显。


下图是针对游戏的fps测试结果,GeForce3对于目前还不支持DX8的游戏的唯一优点就是在打开抗锯齿功能时,性能有了很大的改善,只是比2点采样慢20%左右,但是比4点快40%左右。

2D/Video性能
虽然我没有找到关于GeForce3的RAMDAC速度的资料,不过个人认为这款芯片在2D以及视频方面至少应该保持GeForce2系列的芯片的水平。不过GeForce2
2D方面最高只能支持1600x1200分辨率,希望GeForce3能够有所突破。
在视频方面,GeForce3将提供同GeForce2 GTS一样的动态补偿引擎和阿尔法子画面混和功能。另外NVIDIA的5级水平过滤/3级纵向过滤可以进行更精确的缩放操作。
NVIDIA GeForce3规格,功能和游戏效果图>>
|