万卷书   首页 > 电脑书籍 > 硬件文章 > 3D图形技术
 
 人们现在常常谈到GPU这样的一个概念,但GPU是什么,它有什么用呢?

一、什么是GPU?

GPU是相对于CPU的一个概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形的核心处理器。而另一个方面,以nVIDIA 公司的GEFORCE256为代表的新一带的图形芯片对CPU的依赖程度已经不是那样的高,于是有了GPU,专门的图形处理器的意思。

二、显示卡的相关知识:

很显然,GPU是一种图形的设备,就不能不来谈谈显示卡。

显示卡的主要作用是对图形函数进行加速。早期的电脑,CPU和标准的EGA或VGA显示卡以及帧缓存(用于存储图象),可以对大多数图象进行处理,但是它们只是起一种传递作用,我们所看到的就是CPU所提供的。这对老的操作系统象DOS,以及文本文件的显示是足够的,但是这种组合对复杂的图形和高质量的图象的处理就显得力不从心了,特别是当用户使用Windows操作系统后,CPU已经无法对众多的图形函数进行处理,而最根本的解决方法就是图形加速卡。图形加速卡拥有自己的图形函数加速器和显存,这些都是专门用来执行图形加速任务,因此就可以大大减少CPU所必须处理的图形函数。比如我们想画个圆圈,如果单单让CPU作这个工作,它就要考虑需要多少个像素来实现,还要想想用什么颜色,但是如果图形加速卡芯片具有画圈这个函数,CPU只需要告诉它“给我画个圈”剩下的工作就由加速卡来进行,这样CPU就可以执行其他更多的任务,这样就提高了计算机的整体性能。

实际上现在的显示卡都已经是图形加速卡,它们多多少少都可以执行一些图形函数.通常所说的加速卡的性能,是指加速卡上的芯片集能够提供的图形函数计算能力,这个芯片集通常也称为加速器或图形处理器。一般来说在芯片集的内部会有有一个时钟发生器、VGA核心和硬件加速函数,很多新的芯片集在内部还集成了RAMDAC(后面会介绍)。芯片集可以通过它们的数据传输带宽来划分,最近的芯片多为64位或128位,而早期的显卡芯片为32位或16位。更多的带宽可以使芯片在一个时钟周期中处理更多的信息。但是大家不要以为128位芯片就会比64位芯片快两倍,更大的带宽为我们带来的是更高的解析度和色深,加速卡的速度很大程度上受所使用的显存类型以及驱动程序的影响。现在生产加速卡的厂商可以分为两类。一类是自己生产芯片,自己设计卡板并生产,例如MGA所生产的加速卡多为此类(m3d除外),因为从设计到生产都是自己进行,所以对BIOS和驱动程序的设计会做的较好。另外一类就是使用别人设计的芯片,自己设计卡板线路并生产,象Diamond就是这一类中比较著名的厂家。

三、了解两个重要的概念

3D像素填充率与多边形生成率

四、GPU技术的一些核心内容:

光源及变形处理(Transform and Lighting)在以往的显卡技术中,为了使物体图象真实,就不得不大量增加多边形设计,这样就会导致速度下降,而采用较少的多边形呢,画面又很粗糙。但经过这几代的发展,人物形象仍然很呆板。为了克服这放面的弊病,nVIDIA研究出来的一种新型技术,这就是光源及变形处理(Transform and Lighting)。GeForce256采用的这种T&L技术其特点是能在不增加物体多边形的前提下,进一步提高物体表面的边缘圆滑程度,使图像更真实准确生动。这点,也是以往的显卡所要克服的最大问题之一。其次,除了变形处理外,光源的作用也是很重要的。传统的光源处理其实是很落后的,要想进一步改善图象的质量就有新的技术来支持。而GeForce256拥有强大的光源处理机能,它在硬件上可以支持8个独立的光源,加上GPU的支持,即时处理的光源将让画面变得更加生动鲜活,真实性也大大提高,可以产生带有反射性质的光源效果。这正应了解决了上面所说的问题。

立方环境材质贴图和顶点混合 环境贴图并不是nVIDIA发明的,nVIDIA只是用GPU来对立方环境材质贴图和顶点混合进行进行完全硬件加速,这样一来,CPU就可以从繁重的浮点运算中解脱出来去处理除图像外的工作,从而获得完美效果。立体环境材质贴图已经被DirectX 7.0所支持,今后还是大有发展前途的。至于顶点混合的话在3D特效中也是很重要的。例如,在Quake和Unreal等游戏中,物体与物体之间的结合处会出现缺口和重叠现象,因而看起来总是不是很真实,破坏了3D整体效果。而GPU采用了一个新的顶点混合技术来处理上述接口,使得物体连接处看起来十分真实,给人们带来的极大的视觉冲击。

纹理压缩和凹凸映射贴图 随着Direct7对纹理压缩和凹凸映射贴图的支持,上面的两项功能回很快被广泛应用在以后的3D游戏中。作为最新的3D显卡,GeForce 256支持纹理压缩功能和最新的凹凸映射贴图效果也是理所当然的,GeForce256在采用取得了纹理压缩和凹凸映射贴图后,获得了和S3及Matrox相同的效果,而同时,其性能下降却很小,这些都要归功于GPU的作用。据nVIDIA说:GeForce 256支持5种格式的DirectX纹理压缩,同时还可支持单通道浮现和点状凹凸映射。这样一来,游戏的画面被提高到一个新水平。

双重纹理四象素256位渲染引擎 双重纹理功能最早是被应用在3dfx的Voodoo2上面,这种技术可以成倍增加填充速度,使得Voodoo2在Quake2中明显占有优势的原因。nVIDIA最早是将这项技术应用在了它的Riva TNT上,为此,3dfx还以“双重纹理渲染是3dfx的专利”为由,将nVIDIA送上里法庭。对于最新的GeForce256来说,其填充速度可以达到原来TNT的数倍。而256位渲染引擎则能在相同时钟频率里可以处理更多的数据,提高内部总线的带宽。

3D像素填充率与多边形生成率

像素填充率与多边形生成率是衡量3D芯片/卡性能高低的两个重要指标。在理论上,这两上指标都是越大越好。但在使用中,我们经常会发现某些3D卡的这两项指标虽然很高,但在实际运行程序,游戏时,其速度并没有如此快。所以我们也许该对它个重新审视一番。

一,像素填充率:即每秒钟显示芯片/卡能在显示器上画出的点的数量。举例来说,如果你将屏幕分辩率高在800X600。则在屏幕上构成每幅图像均需800X600=480000像素。再以每项秒钟屏幕刷新60次算,在此分辩率下所需的最小像素填充率即为60X(800X600)=两千八百八十万像素/秒。同理,我们可以算出在1024X768的解析度下进行每秒60幅的画面更新需要3D芯片/卡提供至少四千七百二十万像/秒(60X1024X768)的填充率。不过,以上的计算都有一个前提----每个像素只需要一个纹理贴图。而如果在3D游戏/程序中运用到了多重贴图(每一个像素上贴多张纹理贴图),对3D芯片/卡的像素填充率需求就要加倍计算。如反映光线照在人体皮肤上的画面:要是每个像素都进行光源贴图,凹凸贴图双贴图操作,在800X600的分辩率下进行每秒60幅的画面更新就要比上例增加一倍的像素填充速度即2X60X800X600=五千七百六十万像素/秒。如果为增强画面3D效果再增加一个反射贴图,则对3D芯片/卡最低的像素填充率要求更会增加到3X60X800X600=八千六百四十万像素/秒。有了这些基本要领我们就能解释为什么有的卡(如Riva TNT)像素填充率指标高出voodoo2一倍(达一亿八千万像素/秒)但实际表现却和后者相差无几:voodoo2有两个贴图处理单元,虽然在处理单贴图画面时因设计问题只能使用一颗处理单元,但在处理多重贴图时就能进行并行操作。仍以上例为说明:处理60幅/秒更新的单贴图800X600画面,voodoo2需要2880万/9000万=0.32秒,但在处理60幅/秒更新的双贴图800X600画面时,voodoo2也只要0.32秒(5760万/(9000万X2))。相反,Riva TNT的两颗贴图处理单元是分别独立的,不管处理单贴图画面还是多重贴图画面都是两颗处理单元齐上阵,所以处理以上两种情况的时间分别为2880万/18000万=0.16秒和5760万/18000=0.32秒(如voodoo2相同)。至于其它只有单贴图处理单元的3D芯片/卡与是如此。

二,多边形生成率:即3D芯片/卡每秒能画出多少骨架(三角形)。由于3D贴图,效果渲染都需要在这些骨架上进行。所以多边形生成率越高,3D芯片/卡能提供的画面越细腻。不过,这些多边形在由3D卡处理前是必须通过CPU进行计算,然后再传给3D卡的。这样只有几何浮点处理能力够强的CPU才可能及时完成计算并将这些数据传回给3D卡。要是CPU速度慢一点就会影响到3D画面的速度。换句话说,3D芯片/卡的多边形生成率越高,3D芯片/卡的3D处理能力就越强,但对CPU的3D计算要求也越高。所以我们才会看到新一代的高档3D芯片/卡的性能表现都强烈依赖于CPU的等级。

WanJuanShu