更高,更快,更强——3D技术的未来及其对游戏的影响 飞翔鸟 楚狂 1999年 第31期 41版 现在几乎所有的游戏都在快速地向3D过渡,无可否认,我们已经进入了3D游戏时代。我们在3D游戏中的体验,很大程度上取决于3D技术的发展。现在的3D技术可以说是一日千里,那么,现在和不久的将来会有什么新的3D技术?它们对游戏又有什么影响呢?我们一起来看看吧。(本文所提到的3D技术都是指家用游戏3D领域,而非专业领域。) 对3D游戏而言,速度和画面是永恒的主题,3D技术也正是朝这个方向去努力的。    #1 更多更快的缓存 还记得我们最早的显卡上显存是多少吗?啊,256K?这在当时已经不错了!现在呢?市面上出售的最新图形加速卡(如TNT2、Savage4等)拥有32MB的内存已经是很常见的了!之所以需要这么多的显示缓存,除了为更高的分辨率而设外,主要是因为3D应用需要比2D更多的缓存。 通过增加显示缓存,可以有效地增进3D性能。其中最常见的好处是可以装载更多的纹理,以减少纹理交换的花费;另一个好处就是着色时可以使用额外的缓存:Triple-Buffer(三缓存),Triple-Buffer可以有效的提高速度达20%~30%。随着下一代3D芯片的发表,支持64MB或更多的缓存(如128MB或256MB)将成为潮流。 因为3D着色的过程需要芯片非常频繁地和显示缓存打交道,因此更快速的存储芯片也将投入使用,如DDR SDRAM、RAMBUS等,这些内存往往拥有更高的带宽。 #1 更快的总线  除了显示卡上的显示缓存,系统内存也非常重要,因为大量的游戏数据和图形数据是存储在系统内存里的。为了提高显示芯片与系统内存数据的交换速度,我们需要更快的总线。Intel的AGP总线就是一个大家都很熟悉的解决方案。虽然Intel的原意并不是只提供一个快速的总线那么简单,但老实说真正使用AGP DME功能的应用并不多。当前的AGP 2X可以提供超过500MB的带宽,到支持AGP 4X的820芯片组上市的时候,我们心爱的游戏将获得更为惊人的带宽。 #1 更高的频率 现在的图形加速芯片正在走CPU的路子:集成了越来越多的晶体管,时钟频率越来越高,发展速度甚至超越了莫尔定律。在Voodoo之前我们几乎没有去关心过显示芯片的频率,Voodoo出现后,我也只是为了超频才去留意到它的频率。从TNT和Banshee这一代的显卡开始,频率就开始跑入了大家的视野(超频也成为时尚了)。现在的TNT2和Voodoo3频率最高可以超过200MHz!芯片制造商开始按频率来卖他们的产品,人们也学会了一开口就问频率是多少。 #1 让FPU走开! 在我们3D工作流水线中,许多工作是要由CPU(实际上是FPU)来完成的,如场景物体的生成、坐标系的转换和光照计算等。如果我们CPU不够强,不能用足够速度提供多边形的话,图形加速卡就必须停下来等待数据,游戏的画面速度自然就会打折扣。所以今天的游戏往往要求我们拥有一颗强劲的CPU,才会有比较理想的3D效果,很多测试也在快速的CPU上进行。虽然很多狂热的游戏玩家已经拥有了PentiumⅢ 500MHz或以上的CPU,然而很不幸的是,我们的CPU有太多的工作要做,特别是在具有高超人工智能的游戏中,CPU需要花费大量的时间计算行动。即使我们愿意牺牲人工智能的复杂算法,笨拙的API和日益复杂的游戏还是使得CPU没有办法应付(Quake3:Arena需要花费75%的执行时间等待来自于OpenGL驱动程序的数据)。虽然AMD和Intel都提出了自己的解决方案(3DNow!和SSE),但这种单指令多数据流的方式不见得一定非常适合所有的3D应用,而且还需要游戏和显示卡的驱动程序都必须修改做专门的优化,比较麻烦。最好的解决方案,当然就是让FPU滚开,把工作转移到显示芯片中来。(^314301a^ Savage4) 在这方面,NVidia即将发布的NV10充当了先锋,NV10将首次集成完整的硬件Transform(转换)和Lighting(光照)功能,而Microsoft在DirectX 7.0中也将支持这一功能。Transform和Lighting(以下简称T&L)的功能原来是在CPU中完成的,现在集成到图形加速芯片中后,可以极大减轻CPU的负担。 在图形芯片中集成了几何运算和光照功能后,对游戏来说好处是显而易见的。首先游戏可以使用更多的多边形。当前游戏的场景,受限于系统整体的处理能力,平均每一个场景只能够用比较少的多边形组成。例如在Quake2中,我们可以发现怪物的棱角比较明显,显得不够生动,那是因为如果使用太多的多边形来表现物体的细节的话,游戏的速度将使人无法接受。在芯片集成了T&L功能后,多边形的处理能力将增强数倍,表现在游戏中的效果将是惊人的。 集成T&L的另一个重大的影响就是实时动画成为可能(而且将成潮流)。我们都知道游戏中的开头、过场、结局等动画是很重要的,由于画面要求较高,游戏中的动画往往是事先做好再回放的,这种方式既不灵活也不方便,对空间的要求也越来越高。目前在TombRaider的一些过场和Hidden&Dangerous、Kingpin等一些游戏中,我们看到了即时生成的动画,然而令人遗憾的是这些画面都不怎么样。家用游戏机Sony Playstation 2的出现可以说是一个里程碑(如果那些宣传数据是真的的话),在Playstation2精美的演示动画中,我们发现机能强劲的机器所表现出来的实时动画效果是何等的惊人!由于Playstation2的处理能力是平均每秒2千万个多边形,而集成了T&L功能的NV10的多边形处理能力可能将是这个数字的2到4倍,所以到时我们将可以在电脑上欣赏到媲美《最终幻想Ⅷ》的精美实时动画!另外如果游戏的开发商用心的话(那些美工就惨了),游戏的过程也可以做到和动画一样的效果。我们的游戏体验将因此而彻底改写。 除了使用更多的多边形外,游戏中最绚丽的效果往往来自于光影的变化。光照引擎转移到图形加速芯片后,光照的计算将由硬件加速完成。游戏中可以使用的光源的数量和种类就可以大大增加,游戏中的场景和过程将变得空前的华丽和炫目!! 可以预计接下来将会有更多的加速芯片集成T&L的功能。 #1 千变万化的纹理映射技术 在3D的世界中,纹理可以说是重点之一。因为生成的3D世界真不真实,很大程度上要看纹理的质量和映射的技术。 当初Voodoo2推出的时候,3dfx大肆宣传其Multitexturing(单次多纹理)技术,因为Voodoo2有两个Texture处理单元,可以一次(single pass)同时处理两份纹理。后来的芯片(如RivaTNT)纷纷仿效,形成了一个标准的体系结构。 除了应用多纹理技术,各个公司还在发展自己的技术来提高纹理贴图的质量。其中S3公司的S3TC技术可以说是最广为人知。S3TC通过把大容量的纹理进行压缩,使得在不过多增加系统资源负担(带宽、显存大小等)的情况下,使用比较大的纹理,极大的提高游戏场景的清晰度(那些专门DEMO会让第一次看的人目瞪口呆)。在即将发布的Unreal:Tournament中就使用了大量为S3TC技术优化的大纹理,拥有Savage系列的人可以在这个游戏发行时一饱眼福了。因为Microsoft已经把S3TC技术加入DirectX6.X中成为其标准之一,所以下一代的别的芯片估计也会纷纷使用这一技术。(^314301b^ TNT2) 和S3公司不同,3DLabs公司走的是另一条路。在其最新的Permedia3 Creative!芯片中采用了一种叫做Virtual Textures(虚拟纹理)的技术。这种技术允许Permedia3 Creative!把纹理放在系统内存中,而把显存作为一种快速缓存来使用(注意这种技术和AGP DME模式不同)。Virtual Textures技术并不要求图形硬件一次装入所有的纹理,而只需装入任意纹理中所需的特定部分。一个硬件引擎把纹理分成小份易于管理的子纹理。当有纹理需求时,Permedia3会分析有多少纹理是必需的,然后只处理那些被看见的所需子纹理。这个技术允许的纹理仅受限于系统的内存容量,可以多至数百兆计。同样可以极大的提高游戏场景的真实程度。可惜的是Permedia3 Creative!的游戏性能并非最好,加上宣传不多,我们不一定能看到Virtual Textures的真实效果。 Matrox公司在3D技术方面并非开拓者,甚至不算一个很成功的开发者。但其最新的G400系列却一反过去只在总线、色彩等方面作文章的作风,加入了环境凹凸映射的功能,可以在游戏中产生漂亮真实的环境效果。由于这方面的文章特别多,这里就不口罗嗦了。 除了S3TC这样的技术外,加速芯片的厂商还在不断提高处理大纹理的能力。Voodoo(包括Voodoo3)系列目前只能够处理大小为256×256的纹理,但其它的芯片(如RivaTNT2、Savage4等)已经可以处理2048×2048的纹理了,下一代芯片更可以处理高达5012×5012的纹理!这么大的纹理将使游戏的清晰度空前提高。(目前在游戏Quake3:Arena中已经使用了512×512的纹理,所以我们可以明显的感受到清晰度提高了不少。) #1 让一切都并行运行! 并行的概念并不新鲜,但却是提高速度的最有效的方法之一。3dfx在这方面是先锋,它在Voodoo2中可以说是充分发挥了并行的威力。除了在一块卡上拥有两个纹理处理单元外,Voodoo2更因支持SLI的并行工作模式让人广为称道。在Voodoo2之后,NVidia的RIVATNT不但集成了双纹理处理单元,而且有两条质素处理流水线,可以一次处理两个Texel(质素)。接下来其它公司的芯片也都采用了类似的设计。 除了芯片厂商外,一家显示卡制造商MetaBytes也在进行这方面的努力。他们采用了一种被称为PGC的技术,使理论上两块同样的显示卡可以一起运行处理3D运算。这个技术已经在他们基于RIVATNT的加速卡上取得了成效。虽然这种把屏幕划分为上下两半的办法效率不太好,但毕竟走出了可喜的一步。 #1 平滑的曲面 当前我们在游戏中营造的3D世界,实际上主要是由多边形构成的,包括一些看起来很平滑的表面,也都是用多边形逼近来造成的一种近似的假象。但在3D表面的构成中,还有更好的办法,那就是曲面。和多边形的顶点构成方法不太一样,曲面是通过精确的数学函数来描述的(例如NURBS——nonuniform rational B-splines非均匀有理B样条等)。通过曲面来构造物体,不但可以减少存储数据的空间(一个精确的物体需要大量的多边形构成,所需数据量是比较多的),生成物体的精细度更高,而且还具有放大后图像质量不变的优点。 现在我们用于游戏的3D图形加速卡基本上是基于多边形的,也就是说只能提供与多边形有关的加速和着色能力,如果游戏或应用软件(如专业的3D软件)应用了曲面的话,就只能够先将曲面转换为多边形或在CPU中处理了。预计将来的3D技术将会逐渐采用曲面,下几代的3D加速卡也将会提供基于曲面系统的加速能力。一个曲面系统的游戏将会是什么样子的?一切都平滑如水,我们将告别原来那种硬邦邦的世界! #1 T-Buffer T-Buffer是什么东西?T-Buffer是3dfx公司将在下一代芯片中采用的新的3D技术。这个技术实际上就是让3D着色引擎在把着色结果写入显示Frame Buffer之前先写入另一个缓存中(称为T-Buffer),与T-Buffer中已有的(或之后的)内容一起处理,最后再把最终的结果写入Frame Buffer,这一过程可能要根据具体的需求重复多次。这种T-Buffer技术实际上相当于多重的Frame Buffer,但加以灵活运用可以在游戏中产生惊人的效果。 T-Buffer效果之一:全屏空间反锯齿(Full Scene Spatial Anti-aliasing)。我们都知道由于客观原因,在计算机屏幕上的线条都不够平滑,存在锯齿现象。为了解决这个问题,厂商采用了各种各样的反锯齿技术。尽管很多技术都宣称可以达到很好的反走样效果,但我们在实际的游戏中还是看到了令人遗憾的锯齿。T-Buffer可以很好地解决这个问题,而且不需要游戏专门去做修改。(^314301c^ Voodoo3) T-Buffer效果之二:运动模糊(Motion Blur)。在当前的3D游戏中,所有的物体都非常的清晰锐利,不管这个物体是静止还是运动的。但如果我们用照相机拍摄一个运动的物体的话,我们可以发现运动的物体在镜头中会有模糊的残影,这就是所谓的运动模糊。运动模糊使得每秒只有30帧的视频看起来很平滑,但没有运动模糊的3D运动图像却总是让人感觉有点跳。T-Buffer可以在游戏中运动的3D物体周围产生运动模糊的效果,使游戏看起来更为真实和富有戏剧性。 T-Buffer效果之三:景深(Depth of Field)。喜欢拍摄的人都有这样的体验:镜头很难在前景与背景上同时聚焦,当镜头在前景聚焦时,背景会变得模糊;当镜头在背景聚焦时,前景会变得模糊。人眼的工作原理和镜头是一样的。T-Buffer技术可以在游戏的场景中实现这种变化。在游戏中采用景深技术可以产生电影中的各种效果,吸引人们对游戏中某一部分场景或物体的注意,使玩者与各个物体和目标的距离感更加明确。而且应用在游戏的实时动画中的作用尤为明显。 T-Buffer的其它效果还包括柔和影子(Soft Shadows)、反射模糊(Reflectance blur)等。应用在游戏中都可以营造出更为真实的世界。 3D技术每天都在进步,我们喜欢的游戏也不断的推陈出新。尽管我们在不断地努力追逐,但仍然无法确切知道明天的游戏会是什么样子。我们只知道3D游戏会越来越逼真、越来越绚丽,使我们能在这个神奇的虚幻世界中自由翱翔!