| |
显示卡的技术指标(下)
与显卡相关的三项基本指标
显示卡种类繁多,但有三项最基本的指标是与显示卡息息相关的,那就是最大分辨率、色深和刷新频率。
分辨率代表了显示卡在显示器上所能描绘的点的数量,一般以横向点×纵向点数来表示,比如:标准VGA显示卡的最大分辨率为640×480。现在一般的显示卡都可以达到1024×768的分辨率。
色深也可称作颜色数,是指显示卡在当前分辨率下能同屏显示的色彩数量,一般以多少色或多少bit色来表示,比如:标准 VGA 显示卡在320×200 分辨率下的色深为256色或8bit色。目前市面上最流行的显示卡大都属于Super VGA标准显卡,这类显卡的最大分辨率一般可达到1600×1200,色深可达32bit,可以显示232=4,294,967,296种颜色。
刷新频率是指影像在显示器上更新的速度,也即影像每秒钟在屏幕上出现的帧数,单位为赫兹(Hz)。目前大部分流行的显示卡都能在 1024×768的分辨率下达到85Hz的刷新率。刷磨擦频率越高,屏幕上图像的闪烁感就越小,图像越稳定,视觉效果也好。
结构与工作原理
显卡的结构归纳起来主要由显示芯片、显示内存、RAMDAC、VGA BIOS等几个重要的部件组成,此外还包括一些连接插座或插针等。
显示芯片(Video Chip)
通常我们在显示卡上能见到的那颗最大的芯片,或是贴着大散热片和风扇(这时就看不见显示芯片了)的芯片就是显示芯片。一般的娱乐型显卡都采用单芯片设计的显示芯片,而高档专业型显卡则采用多个显示芯片组合的方式。你可以把显示芯片想象成专门用来处理图像的CPU,它可以处理软件指令以完成某些特定的绘图功能。
显示内存(Video RAM)
显示内存与系统主存的功能是一样的,只是它们负责的区域不一样。显示内存用来暂存显示芯片处理的数据;系统主存则用来暂存中央处理器所处理的数据。我们在屏幕上看到的图像数据都是存放在显示内存里的。显卡达到的分辨率越高,在屏幕上显示的像素点也就越多,要求显存的容量也越大。
RAMDAC(RAM Digital to Analog Converter)
RAMDAC实际上是一个数模转换器,它负责将显存中的数字信号转换成显示器能够接收的模拟信号。RAMDAC的转换速度以"MHz"来表示,其转换速度越快,影像在显示器上的刷新频率也就越高,从而图像也越稳定。大部分娱乐型显卡将RAMDAC集成在了显示芯片内以降低成本;高档专业型显卡则采用了高吕质的外置式RAMDAC芯片;老式的显卡也采用外置式RAMDAC芯片,但其性能无法与高档专业显卡上的RAMDAC相比。目前RAMDAC的时钟频率一般在200MHz以上。
VGA BIOS(Basic Input Output System)
VGA BIOS里包含了显示芯片和驱动程序间的控制程序、产品标识等信息,这些信息一般由显卡厂商固化在ROM芯片里,这颗芯片就被称为VGA BIOS芯片。早期的VGA BIOS数据是无法由用户自行修改的,但新的显卡大多采用了EEPROM芯片,因此可通过专用程序来改写,以便用户对显示进行升级。
VGA特性插针(VGA Feature Connector)
VGA特性插针是显卡与外部视频设备交换数据的通道。大部分显卡都有此插针,但用处却不是很大。最常用到此插针的设备是带窗口缩放功能的MPEG电影卡。
VGA插座(VGA Connector)
电脑所处理的信息最终都要输出到人们能够看得见的显示器屏幕上,显卡在其间担负着转换的任务。显卡的 VGA插座与显示器相连,以便将相应的影像输出到屏幕上。
总线接口(Bus Interface)
显示卡必须与主板交换数据才能工作,因此必须把它插在主板上才行,因而也就有与这对应的总线接口。显卡的总线接口类型主要分为ISA、EISA、VESA、VL-BUS、PCI和AGP六种类型,前三种已基本被淘汰,目前最流行的显卡总线接口为PCI和AGP两种,本节后面还要详细讲述这两种接口规范的显卡。
当需要显示的信息离开CPU时,需要经过四个步骤才能达到屏幕:
(1)从总线进入显卡中的显示芯片,将CPU送来的数据交由显卡芯片处理;
(2)从显卡芯片进入显示内存(Video RAM);
(3)从显示内存进入数模转换器RAMDAC,由RAMDAC进行数据转换工作;
(4)由RAMDAC进入显示器,由此图像就显示出来了。
以上各步如果要严格区分的话,则显示卡的效能应该由中间两步决定。因为第1步取决于总线的种类和传输速度,第4步则主要是显示器的事。为了提高显示卡的效能,必须提高显示芯片和显存之间的传输速度以及从显存到RAMDA的传输速度。
显示内存
在显示卡中显示芯片和RAMDAC都是非常忙碌的:显示芯片要不停地处理CPU来的数据,并将处理过的数据传给显存,而RAMDAC则不停地从显存中读取数据,以维持显示画面的不断更新。可怜的显存夹在两个最忙碌的装置之间,提高显示卡的效能的关键步骤之一就变成了提高显存的效能,而提高显存效能的关键步骤又是提高显存的容量和显存的刷新速度。另外一个关键步骤则是提高显示芯片的性能。
显存容量
显存容量还和分辨率、色深以及刷新频率有关。由于电脑只参识别0和1两个数字,所以在电脑里都以二进制来表示数据。当分辨率为 640×480时,屏幕上就有307,200个像素点;当色深为8bit(256种颜色)时,每个像素点就可以表达256 种色彩的变化。这是,要显示所有的屏幕上信息就需要2,457,600个bit,即2457,600/8/1024=300KB字节,即分辨率达到 640×480,色深为8bit时,就至少需要300KB显存容量。
现在大部分显卡都工作在800×600/24bit的模式下,因此按照上面的方法来计算:800×600×24/8/1024=1406.25KB,即至少需要1.37MB的显存容量。由于显存容量必须成整数倍增加,所以至少要装配2MB显存才行。如果工作在1024×768/32bit的模式下,则通过简单的计算可知至少需要3MB显存。如果是3D显卡,则要求用更多的显存来存放数据。大多数专业型3D显卡都具有20MB以上的显存容量,而娱乐型显卡的显存通常在1MB到16MB之间,以降低显卡成本。
显存类型
为了更快地显示图像,仅仅提高显存容量是不够的。因为当需要显示的图像的解析度越高时,从显示芯片传到显存中的数据就越多,从而RAMDAC从显存中读取数据的速度就要越快才行。这冰需要显示内存具有更高的刷新速度。
早期的显卡大都采用DRAM作为显存,这种显存制造容易,价格低廉,但存取速度缓慢(一般在60ns到70ns之间)。由于DRAM需要不断地刷新才能保存数据,因此缓慢的存取速度使其效能大减。此外DRAM也不允许在同一时间进行读写操作。DRAM已不能适应当今显卡的需要。比如在1024×768的分辨率、屏幕刷新频率为72Hz的显示模式下,RAMDAC每秒钟对内存数据访问72次。如果色深为24bit,那么每次的数据转换量将达到165MB/s,这已达到DRAM的极限数据传输率,而且还不包括显示芯片对显存的写操作时间。
为了解决这一系列问题,人们发明了EDO DRAM(扩展数据输出DRAM)内存。EDO内存的存取速度可达到25ns左右,其价格便宜,可满足一般商用和家用需求。但在真彩色(24位、32位色深)模式下的性能仍大打折扣。而且对高分辨率下的高刷新率支持极为不利。使用EDO DRAM的飞速示芯片目不暇接前已被淘汰。
SDRAM(同步DRAM:Synchronous DRAM)的设计思路则与过去的产品完全不同,它可以在一个时钟周期内进行数据的读写,从而加快了访问速度。SDRAM与系统总线同步工作,避免了系统总线对异步设备进行操作时取得同步的额外等待时间。另外SDRAM世含一个片内突发计数器,也可对大数据块进行快速传输。为了进一步以更经济的手段提高显存的效能,人们又发明了SGRAM(同步图形RAM:Synchronous Graphics RAM),SGRAM可大块传送数据,是专为显示卡设计的内存,属于SDRAM的图形增强版,不过有些言过其实,有些SGRAM并不如SDRAM。目前主流的显示内存使用的就是SDRAM和 SGRAM。比SDRAM效能更高的是VRAM。VRAM是一种双端口内存,它允许在同一时间被所有硬件(包括中央处理器、显示芯片等)访问,这实际上允许显示芯片和RAMDAC并行操作,大大提高了显示卡的效能。不过,由于VRAM的价格昂贵,所以并未在市面上流行起来。VRAM适用于高色深、高分辨率的显示设备。
VRAM(窗口内存"Windows RAM)是VRAM的增强版本,宣称比VRAM的性能更高,因此大有取代VRAM之势。WRAM含有逻辑运算功能以加速常用的视频功能,如块传输和模式填充,此外WARM的制造工艺要比VRAM简单,因此价格相对要低一些。未来显存的趋势很可能是VRAM和WRAM。
另外,显存各类还有MDRAM(多段式DRAM)。MDRAM可以被划分成多个独立的在效区域段,因此每个区段在进行显示刷新、视频输出或图形加速服务时就不会互相影响从而造成损失。另外还有如雷贯耳的RDRAM(Rambus DRAM,前面已经讲到),它有极高的刷新速度,是一种未来型内存。
芯片和接口
显示芯片负责将总线送过来的数据进行分析处理,然后传送给显存。不同厂商生产的显卡,由于都可以采用大同小异的显存,所以显示芯片的效能成为显卡效能的决定因素。显示芯片对图形数据的处理速度和质量,甚至可以相差很大。
最早的显示芯片主要处理2D(二维)图像,比如Windows下窗口的移动和缩放、早期二维游戏的显示等等。但我们生活在三维世界中,因此人们开发出 3D图形加速芯片,强以更加逼真地显示三维图像。再后来又将2D功能和3D功能整合在一起,推出 3D显示芯片。在3D图形加速芯片推出的早期,人们还把带有3D功能的显卡叫做3D图形加速卡,但现在的显卡几乎没有不带3D加速功能的,因此又简称为 3D显卡,或者--恢复成过去的叫法--显卡。
另外,虽然显示芯片经常可以作为显示卡的代称(就像CPU的型号经常作为计算机的代称一样),但显示卡和显示芯片绝不是一个概念(就像CPU和计算机品牌不是一个概念一样)。在计算机界,既有生产显示芯片的厂商,也有更多的利用显示芯片生产显卡的厂商,当然,生产显示芯片的厂商也可以自已生产显卡。比如:Riva TNT2系列显示芯片是NVidia公司生产的,显卡生产大户ELSA(德国)的ERAZOR III 显卡、帝盟的Diamond Viper 770 Ultra 显卡,都用Riva TNT2作为显示芯片;Voodoo3显示芯片由3Dfx公司生产,但3Dfx公司也生产Voodoo3 2000、Voodoo33000显卡。有些主板厂商甚至将显示芯片做在主板中,不过这已经是题外话。
随着图形应用软件的发展,显卡和CPU及内存中的数据交换量越来越大,所以显卡和系统总线的接口也很重要,显卡工作频率的高低,也是影响显卡性能的重要因素。PCI接口的显卡以PCI总线速度的一半来工作,由于PCI总线的时钟频率一般是66MHz,所以PCI显卡的工作频率是33MHz,最高可达到133MHz。为了提高显卡工作频率,Intel公司插手显卡生产,推出了AGP接口规范。
与PCI相比,AGP有两大优势:
(1)对内存(包括系统内存和显存)的管理有所加强,当显存不够时可使用系统内存。PCI显卡也可以作用系统内存,但速度远远比不上AGP。AGP通过两个途径处理贴图:直接内存存了解(DMA:Direct Memory Access)模式和直接内存执行模式(DME或DIME:Direct Memory Execution)。直接内存存取技术是在系统内存中开辟一块区域供显示芯片作用,直接内存执行不仅能使显示芯片在系统内存里存储数据,而且还能处理纹理,而无需在显示内存中进行,从而为软件开发商提供了足够的系统内存,开发商可以使用更大的纹理结构,大大增加视觉质量。
(2)采用更高的时钟频率和总线速度。AGP1X的时钟频率是266MHz(1X的意思是一个时钟周期内传送一次数据),峰值传输率是266MB/s,AGP2X的峰值传输率是532MB/s,而AGP4X的峰值传输率在理论上可达1.066GB/s,这已经远远超过整个系统总线的传输速度。在66MHx 的系统总线下,AGP4X的最大传输率是532MB/s,在100MHz的系统总线下,AGP4X的最大传达室输率是800MB/s,都不能使AGP4X发挥充分的威力。
Intel给我们描述的前景是美妙的。但具有讽刺意味的是,Intel推出的采用AGP接口的i740显卡的性能远远比不上同时代的PCI接口的Voodoo显卡。即使是现在,PCI接口下的Voodoo3系列也是最优秀的显示芯片之一。这是因为:AGP相对于PCI的优势在大多数情况下是华而不实的。现在的显存越配越大,用系统内存充显存的可能性很小,所以 AGP用于表演"直接内存存取"和"直接内存执行"的机会并不多;PCI的最大工作频率是133MHz,目前也足够了。但因为 Intel公司在计算机界具有无可争议的领导地位,所以AGP也出尽风头,AGP显卡逐渐成为主流产品。
带宽
在一个时钟周期内,传输一次二进制数据的位数称为数据传送接口的宽度,显卡内部一秒仲能传输的数据量成为显卡的带宽,单位是MB/s即:带宽=时钟频率×一次传送的二进制数据位数/8,比如,Voodoo3 2000的核心频率是143MHz,128位数据传送接口,所以它的带宽是2.288AGB/s;Riva TNT2的显存的运行频率接近200MHz,128位数据传送接口,带宽高达3.2GB/s。对比当前流行的系统内存100MHz、64位接口的800MB/s的带宽,可以看出显卡的带宽要比系统内存的带宽高得多。
编程接口
为了充分发挥显卡的图形处理性能,人们份份制定图形编程接口。主流的编程接口有:
(1)霸气十足的DirectX:1995年微软公司开发的基于Windows的软件,可使应用程序直接访问计算机的显卡和声卡等硬件。目前已达到DirectX7.0。微软还开发了Direct3D,专门处理三维影像。虽然微软利用频繁的升级来改正其繁多的错误并适应新的需要,但由于微软的地位,人们不得不对DirectX另眼相看。
(2)性能非凡的OpenGL:SGI公司开发的图形编程接口,性能卓越,但主要用于工作站等高端平台。其最大的贡献是通过高级语言,降低了专用图形加速卡的成本,最终导致整个PC图形系统价格的降低。
(3)横空出世的Glide API:3Dfx替Voodoo准备的编程接口,为游戏开发商们提供了优秀的开发平台,成为当时在难以实现的 OpenGL和效果太差的DirectX之间的一个较好的折衷选择,秀多游戏软件甚至是专为Voodoo开发和优化的。Glide API不但为我们带来了大量高质量的3D游戏,也将3Dfx这个本来不起眼的小公司推上了3D加速芯片市场的王座。
(4)功力深厚的Heidi:Heidi应用程序接口是Autodesk 系列产品的守护神。Autidesk是目前全球CAD/CAM/CAE/GIS(计算机辅助设计/计算机辅助制造/计算机辅助工程/地理信息系统)工业领域中拥有用户数量最多的软件公司。Heidi就是Autodesk在CAD、动画和可视化软件领域中最重要的应用软件接口。著名的应用软件如3DS MAX/VIZ、AutoCADR13/14/15等都使用 Heidi系统。和OpenGL相比,Heidi还中是一种原始对像接口,功能请求单一化,需要硬件的密切配合,但Heidi又灵活多变。
目前很多显卡都支持Direct3D和OpenGL,或其中的一种。
3D奥秘
3D图型处理流水线
3D图形其实不难想象,因为我们就生活在一个3D现实世界里。因此,人们对用计算机显示更逼真和更自然图像的渴求从来就没以间断过。为达到对图像拟真度的要求,必须在上色、调匀纹理表面以及精细照明效果上下功夫。为绘制出逼真的 3D物体,场景中的每张图都必须在"3D流水线"上完整地走一遭。虽然不同的厂商对3D图形处理的方法并不相同,但历经多年的发展,人们对3D图形处理还是形成了一定的顺序和规范。在3D图形流水线中,最主要两个阶段是几何与光栅处理。几何处理阶段会完成所有计算。在接下去的光栅处理阶段,则根据计算结果产生实际的屏幕显示。
几何处理阶段
在几何处理阶段进行的计算又可分为四类:镶嵌(Tessellation)、转换(Transfomation)、照明(Lighting)以及设置(Setup)。
镶嵌
3D物体进入流水线处理之前,必须先定义成坐标数据的形式,或采用数学公式表达。镶嵌的目的就是将这些坐标数据转换成多边形。通常会进一步将这些多边形变成三角形或四边形以简化计算,镶嵌好的物体也叫作"框架"(Wireframe),可将其大致看作一个镶嵌好的框架模型示例。该模型完全由相互连接的多边形构成(主要是三角形),它是绘制更真实图形的关键基础。因此,衡量显示卡性能的一个重要指标是它能在一秒钟内绘制多少个三角形(现在一向是每秒几百万个)。我们对选择点(三角形顶点)的计算会影响三角形开内的每一个像素,因为这些像素均由顶点的原始数据再计算而来。
转换
镶嵌完之后就是转换,包括旋转、位移以及缩放一个物体。其中,"旋转"是物体围绕X,Y和Z轴的一种运动"位移"则是物体朝一个方向的运动;"缩放"代表物体尺寸的变化。例如,地球的自转可认为是"旋转",而地球绕太阳的公转则可认为是"位移"。通过位移与旋转的组合,可产生任意形式的运动。
缩放又包括两种:均匀缩放和不均匀缩放。"均匀缩放"是指增大或减小事例物体的尺寸。进行均匀缩放时,物体的各部分比例保持不变。"不均匀缩放"是指增大或减小物体的部分尺寸。我们在哈哈镜里看到的镱像便是不均匀缩放的一个例子。一个乘法矩阵定义了缩放时物体尺寸的变化因子。变形特别适合在图形环境中产生运动效果。
经过镶嵌和转换之后,表示物体的三角形的所有顶点都已达到应该达到的位置。但还需要做一些扫尾工作:需要决定哪些顶点不会影响最终的图形显示。例如位于屏幕以外的所有内容都要剔除--不画出任何内容。这一过程叫作"剪切"。还有一些顶点超过了指定的高度或z坐标。删除这些部分的过程叫作z剪切。而且大多数时候,3D物体(如立方体)的背面是看不见的,此时构建这些背面的顶点也要剔除,为将来的计算作好准备。
剪切和剔除是非常重要的准备工作,因为它们使计算只针对那些要显示出来的元素进行。由于并不需要计算看不见的东西,不仅提高了计算的效率,而且最终图形的质量也不会受到影响。
照明
照明是几何处理最复杂的工序。在现实世界中,我们之所以能看见物体,是因为有光的缘故,而光则是由一个或多个光源发出的,因此照明效果就显得非常重要。在计算机进行3D图形显示时,必须模拟这种效果。通常有两种类型的照明:点光源和泛射。点光源是指灯光仅来自一个光源。例如一去手电筒便是一个点光源。而泛射则是指无固定方向的光线照射,例如一间屋子的四周都有打开的大窗户所形成的照明效果。点光源和泛射所形成的照明效果完全不同:如果不使用泛射灯光,物体上未被点光源照到的部分就会变成全黑。
照明公式的复杂性会对图形渲染的性能与质量都会有影响。若照明公式比较复杂,虽然可以提高显示质量,但渲染或图形生成速度也会变慢。
设置
虽然现实世界中的物体都是三维的,但计算机的屏幕显示却是二维的。这就需要将前三步所形成的 3D数据向 2D方向转换,这就是"设置",又可称为"透视投影"。
例如,假设从正前方观看,立方体看起来就是一个正方体。但若保持视点不变,然后旋转立方体,就会发现正对我们的一面会渐渐变成一个平等四边形。如正方体继续旋转,则平行四边形会变得越来越窄,直至最后变成一条线,线后的那些点则逐渐被挡住看不见了。
对于3D图形在2D屏幕上的显示,"设置"过程同样非常关键。
光栅处理阶段
几何处理是计算特别密集的一个阶段,对计算能力的要求也特别高。在几何处理阶段,所有信息都保存在三角形的顶点里。光栅处理的目的就是获取这些信息,并用不同的色调填充多边形。这一阶段决定了3D模型的表面质量,比如颜色和纹理等。为产生平滑的运动图像,屏幕内容必须以每秒约30帧的速度更新。这个更新频率叫作"帧频"。注意它与屏幕的"刷新频率"不同:刷新频率是指荧光屏体的刷新频率;而帧频是指图形的显示更新频率。
为了达到每秒30帧以上的更新频率,计算机在不到1/30秒的时间里必须做大量的工作,一般来说,光栅处理可划分为四个基本类别-可见性(Visibility)、纹理贴图(Texturemapping)、着色(Shading)以及平滑处理(Smoothing)。可见性,它决定了哪些物体或物体的哪些部分可在屏幕上看见。它由好几个方面的因素决定。如一个物体位于另一个物体的前方,则只有最前面的物体才会完全显示出来。计算机通过跟踪物体的z坐标来判断物体之间的相对方位,这一工作通常在z缓冲里完成。z缓冲保存了下一帧的z坐标数据。
若z缓冲里的基本个像素(有个较小的z值)比它在当前显示帧里对应的像素更靠近用户,但如果物体是透明或半透明的,较远的像素仍以基本种形式保留下来。像素的透明/半透明状态保存在第四个颜色组件里(位于红、绿和蓝之后),名为 Aopha (a),或者"色层"。Alpha值决定了透过一样东西能看到其他多少内容。这个值在一种名为Alpha混合或色层混合的技术中特别有用。色层混合会以近端像素颜色的透明/半透明状态以及两个元素的颜色值为基础,对颜色进行重叠与合并。
纹理贴图
在光栅处理阶段,另一道关键的工序是纹下地贴图。它的原理非常简单,就是将纹下地或材质粘贴到3d物体表面。可以把它想像成一个多面体的壁纸。纹理贴图最大的好处就是在非常大的表面区域展现出大量细节。由于存在弟三维,所以表面贴图的工作量也很大。为精确表现出纹下理,必须旋转贴图,与多边形的角度配合,这就叫作"透视矫正纹理贴图"(Perspective Correct TextureMapping)。此外,根据多边形所处的位置,纹理贴图必须进行适当的缩放。
如果仅仅原样复制该平面上的纹理而不进行额外的纹理贴图旋转变形处理,就可以快速产生大量多边形,从而节省了图形加速器或处理器资源,提高显示速度。
着色
光栅处理阶段的第三道工序就是照明或者叫"着色"。着色是指在图像中精确展现出光影效果。在几何处理阶段,以一些照明公式为基础,已完成了大量计算,已经知道灯光会对图像的每个顶点造成什么影响。在光栅处理阶段,必须利用这些数据判断灯光对每个像素造成的影响。
目前可利用三种流行的技术完成顶点照明数据向像素照明数据的转换,分别是平面着色(Fla Shading)、高洛德着色(Gouraud Shading)以及补色着色(Phong Shading)。平面着色最简单,速度也最快,特别适合用它处理盒状物体。对图像进行了平面着色以后,每个多边形只能分配到一种颜色,代表物体那一部分状态。为完成平面着色,只需将照明模型应用于多边形表面的某个点即可。这儿的"照明模型"是指一个特殊的数学公式,它同时考虑到了3D物体相对于光源的方位,以及采用的是何种类型的表面。因此,平面着色的结果是一个浓淡不均的"斑驳"表面。 高洛德着色是目前最常用的一种着色方法,它比平面着色逼真得多。照明模型应用于多边形的每一个顶点。结果产生的颜色(遵守照明公式)均匀分布于多边形的表面。这样做出来的阴影显得非常光滑和真实。补色着色模型甚至比高洛德着色还要复杂,对镜面反光有特别强的表现能力。"镜面反光"是指光线反射离开一个表面。这类反射尤其在金性或塑料表面上有非常生动的效果。
平滑处理
光栅处理的最后一道工序是"平滑处理",消除所有斑驳或不自然的外观。有两种常用的平滑处理技术,第一种是"边缘修补",它可以生成更光滑的线条。第二种是"纹理修补",它能使纹理贴图表面显得更光滑。
不过,由于显示器的像素是有限的,所以最终显示的图像的放多细节都会丢失。为了达到更好的显示效果,必须增加显示器的分辨率。但分辨率再高,屏幕像素的数量都是有限的,因此屏幕上显示斜线时,在微观上必然呈锯齿状。本应光滑的线条被映射击成为一个像素网格,这就叫作"边缘失真"(Edge Aliasing)。而消除这种失真锯齿的过程就叫作"边缘抗失真"或"边缘修补"(Edge Anti aliasing)。
若在一个像素网格里强行显示一条直线,需要将那条线穿过的像素点都找出来。然后,将它接触到的所有像素都变成一种颜色。最终的线条看起来会非常粗糙,上面有一些锯齿。为消除这些锯齿,我们可以根据每个像素的中心距线条有多远,为每个受到影响的像素都赋予选定颜色强度的一个百分比。最接近中心的具有最高的颜色强度,最远的则具有最弱的颜色强度。这样处理以后,整个线条都被轻微"柔化"了。若从一定的距离观看,线条和它周围颜色间的过渡显得更加平滑。我们也用类似的方法调匀纹理贴图。
由于多边形发生了旋转及缩放,像素并不一定能与构成一张纹理贴图的元素(叫做质素)完美地配合。为获得逼真的 3D图形显示,非常重要的一项工作就是选择正确的质素来表示屏幕上的一个像素。最简单、但经常又差强人意的方法是选用最接近的质素值。按照刚才所说的选择办法,当像素比较稀疏(如屏幕的分辨率高得很低)而质素比较稠密(计算机要处理的图形的分辨率很高)时,一个像素可以从很低多个质素中挑选出来(而这些质素闭幕异很可能是巨大的,如物体的边缘),所以会出现非常剧烈的质素跳跃,表现出来就是图像非常闪烁,3D物体移动距离很大时就会出现这种情况。但另一方面,当像素比较稠密而质素比较稀疏时,必须从有限的质素中选出很多像素,图形就会变得非常斑驳,3D物体移动距离小时会出现这个情况。
为此,人们提出了双线过滤(Bilinear Filtering)、MIP贴图(MIP Mapping)、双线MIP贴图(Blilnear MIP Mapping)以及三线MIP贴图(Trilinear MIP Mapping)等解决问题的办法。双线过滤和 MIP贴图是两种基本技术,而双线MIP贴图和三线 MIP贴图则是两种基本技术的混合形式。
双线过滤可使质素间的过渡变得更为平滑。一个像素位置会映射到一张纹理贴图上。随后,它的颜色由最接近的四个质素的加权平均值决定。像素距某个质素中心越近,那个质素在最后平均值中获得的加权分数越高。这是一种相当有效的方法,但若距离较远,仍会出现一些色斑或闪烁现象。
MIP是拉丁语"Multum in Parvo"的缩写,即"少中见多"。以同样的纹理为基础,MIP贴图要求事先创建好包含了不同细节的几张纹理贴图。每张图都代表从不同距离观看时的纹理显示。在屏幕上显示时,要根据物体的z坐标选出最恰当的贴图。随后,以"最接近"为标准,从这张图中选出要显示的像素颜色。
"双线MIP贴图"的过程是先选出一张合适的MIP贴图,然后根据最接近四个质素的加公权平均值,从这张图中挑选出像素颜色。这种技术的效率很高,一般都能消除所有斑驳的色块以及闪烁。
最后一种调匀方法叫作"三线MIP贴图",它是最有效和最准确的。首先,假设一个物体位于两张贴图的范围之间,选择这两张贴图(两次MIP贴图)。然后,根据这两张贴图计算出两个像素值,每个值都以单张贴图四个最接近的质素为基础(两次双线过滤),然后计算出两张贴图的权重,离物体近的权重较大,远的权重较小。这个过程精确地确立了物体在z轴上的最终坐标位置,但计算量也最大。
流水线工作量的分配
如此连续而又巨大的计算量,是分配给 CPU还是分配给显示卡呢?
在图形处理的早期阶段,大量的工作交给CPU来做,但如此一来,CPU就不得不放不其它的事情,专门处理显示数据,因此为了提高CPU的利用率和计算机的综合效率,人们逐渐把有关计算教给显示卡来做。尽管几何处理是计算密集的一个阶段,但在整个图形处理流水线中,对带宽最敏感的还是光栅处理阶段。所以为充分发挥每个子系统的能力,一般是将几何处理分配给CPU做,而光栅处理则分配给图形加速器。几何处理阶段的最后一道工序--"设置"--也可从CPU移至图形加速器进行。为获得高品质的3D图形输出,必须依赖CPU、图形加速器(包括图形加速器中的显存)以及系统内存的密切配合。
目前,几何处理阶段都在CPU中进行(每秒能产生更多的多边形),因为CPU的速度当然是无与伦比的,完全可发胜任几何处理工作。在这一阶段需要大量的浮点运算,其中大多数又都是矩阵或矢量运算。Intel和AMD都非常重视这种计算能力,专门为此进行了设计。此外,通过使用纹理贴图,可表现出更丰富的细节。纹理贴图会消耗大量内存,同时要求非常快的访问速度。有两个方案可解决这个问题。一个是在显卡上增加更多的显存,另一个是提高系统内存与显卡的通信速度。现在显存一般都在16MB到32MB之间,应该说完全够用了(即使不够也可以继续增加显存,比用系统内存快得多),Intel即说这种办法不好,因此推出了 AGP接口,但用Intel的显示芯片生产的显卡也在不停地增加显存。
随着人们对图像逼真度的要求越来越高,因此要处理的数据也越来越多,CPU和显卡之间传送的数据量越来越大,这些读写操作要占用大量带宽。虽然现在的总线位数和总线频率也是水小组长船高,但如果能让显示卡把计算都"包"下来,CPU只给显示卡发送指令即可,那该多好!不过,目前的显示芯片并没有把全部计算都包不来的能力,这也正是下一代显示芯片所竭力要达到的。如果几何计算能让显示芯片来做,那么显卡将再次发生一场革命,其意义之深远,丝毫不亚于CPU的更新换代。
显示卡的技术指标(下)
|
|