|
在来一段当时介绍3dfx的T-buffer的:
-----------------------------------------------------------------------------
近日,美国News.com将3dfx公司的T-Buffer(T-缓存)列为本世纪10大技术发展趋势之一,而3dfx最新推出的Voodoo 4和Voodoo 5则已经采用了T-Buffer技术。由此可见,T-Buffer技术将会对3D芯片技术产生重要的影响。
3D技术的变革—T-Buffer
---- 众所周知,3dfx与Nvidia之间为争夺3D加速硬件之王而进行的征战已持续了数年。从最初的Voodoo与Riva 128到Voodoo 2与Riva TNT,再到现在的Voodoo 3与Riva TNT 2。3dfx虽仍在某些方面保有优势,但Nvidia已迎头赶上,并在32位色贴图、支持的贴图大小、显存容量、模板缓存、Z缓存位数和AGP贴图等方面完全超过了3dfx。为了迎接Nvidia的挑战,3dfx推出了被称为下一代3D技术的T-Buffer(T缓存)。
T-Buffer产生的基础
---- 在80年代,人们用单点光源来形成高质量的图像。那时的问题是视觉效果不真实,包括锯齿、锐化、阴影呆板、玻璃无半透明效果等。为了解决这个问题,1984年开发了著名的多点光源(Distributed Ray Tracing)技术。多点光源技术使用了超级采样(Super Sampling)来解决锯齿问题。另外还具有区域景深、柔和阴影和一些其他功能。所谓超级采样,就是让多条光线投射到一个指定像素上,颜色取所有光线平均值,然后就用这个颜色给像素上色。单点光源所有被跟踪的点都来自光源的同一方向,而多点光源的点则可以来自不同方向,由不同方向的光线交叉混合形成像素的亮度,这样阴影的效果更加真实。总的来说,多点光源技术效果不错,但是要占用大量系统资源进行渲染,而且不能即时生成渲染效果。于是T-Buffer 技术应运而生。
---- T-Buffer一词源于3dfx的首席技术官员——Gary Tarolli的名字,介绍T-Buffer技术之前,不得不首先提一下1990年发布的图像技术——累积缓存(Accumulate Buffer,A-Buffer)技术。A-Buffer不仅具有即时生成效果,还保留了分布式射线跟踪技术的所有效果。当所有图像渲染完毕后,A-Buffer将之连成一个完整的图像,并送入帧缓存,最后在显示器上显示出来。
崭露头角的T-Buffer
---- T-Buffer本质上与A-Buffer并无不同,只是T-Buffer的成本相对要便宜得多。但T-Buffer使用常规缓存进行贴图。概括来说,T-Buffer在工作时首先将后台缓存(帧缓存中不在前台显示的部分)中的内容清空,然后在同一时刻将多个仅在细节上略有不同的图像存入后台缓存各区域(形成多个帧缓存),接着前台缓存与后台缓存进行交换,后台缓存变为前台缓存,与此同时,图像进行硬件累加并于显示端输出。由于T-Buffer可以在同一时刻构成4至8幅图像,因此理论上它能使3D加速芯片在保持高速的情况下增强图像质量。而常规的累加缓存因为必须有一个图像累加以及为在显示端输出而将累加缓存中的图像重新拷入后台缓存的步骤,甚至也不能像T-Buffer那样可以为增强图像的某一部分效果进行部分累加,这些都使累加缓存工作大量耗费系统资源,拖慢3D图像的显示速度。当然为了得到最佳的图质,通常需要即时整合16至30幅仅在细节上略有不同的图像才行。可是现在的技术要想达到这一步是几乎不可能的,不过T-Buffer目前达到的即时集成4至8幅图像的水平已经能够提供高质量的即时运算3D图像。T-Buffer与常规PC加速器工作原理比较如图1所示。
图1 T-Buffer与常规PC加速器工作原理的比较
T-Buffer的效果
---- T-Buffer的效果主要包括以下几个方面。
---- 一、全屏空间反锯齿(Full Scene Spatial Anti-aliasing) 由于客观原因,在计算机屏幕上的线条都不够平滑,存在锯齿现象。为了解决这个问题,厂商采用了各种各样的反锯齿技术。其中最典型的反锯齿技术是边缘反锯齿(Edge Anti-aliasing)和多重采样(Over-Sampling)。尽管他们都宣称可以达到很好的反锯齿效果,但在实际的游戏中还是看到了令人遗憾的锯齿,这主要是由于它们的运行机制决定的。例如边缘反锯齿是由软件实现的,即软件为每个进入流水线的三角形边缘做标记,形成一个有轮廓的边沿。当场景渲染完毕后,驱动程序再找回信息标记清单并进行清理工作。在这个过程中要消耗大量的系统资源,大大降低程序的运行速度。这是因为它要保存所有边缘信息的列表清单,然后才能做反锯齿处理。而多重采样的缺点是令填充率剧减,因为它需要大量的填充率来完成。相反,利用最新的T-Buffer可同时构成4~8个仅有微小细节差异的图像并进行均衡过滤,产生反锯齿效果,因此,T-Buffer可以在不损失速度的前提下实现即时反锯齿效果。此外,T-Buffer可以完全兼容Direct 3D、Open GL和Glide三个API,这使得老游戏也可以得到T-Buffer带来的出色画质,且对CPU不会有太高的要求。
---- 二、运动模糊(Motion Blur) 当前的3D游戏中,所有的物体都非常的清晰锐利,不管这个物体是运动的还是静止的。但人们如果用照相机拍摄一个运动物体的话,就可以发现运动的物体在镜头中会有模糊的残影,这就是所谓的运动模糊。运动模糊在电影中场景、人物、视角的快速移动应用得非常普遍。简而言之,运动模糊就是允许画面以稳定的帧速运行,且图像看上去非常平滑自然。T-Buffer是对物体进行多次采样,每次选定位置都在稍微不同的位置,然后一次性全部渲染,从而使游戏中的3D动画更接近于电影的品质。
---- 三、景深(Depth of Field) 喜欢拍摄的人都有这样的体验:镜头很难在前景与背景上同时聚焦,当镜头在前景聚焦时,背景会变得模糊;当镜头在背景聚焦时,前景会变得模糊。人眼的工作原理和镜头是一样的。T-Buffer技术可以在游戏的场景中实现这种变化。在游戏中采用景深技术可以产生电影中的各种效果,吸引人们对游戏中某一部分场景或物体的注意,使玩家与各个物体和目标的距离感更加明确,而且应用在游戏的实时动画中的作用尤为明显。
---- 四、柔和影子(Soft Shadows)、反射模糊这两个特性必须得到软、硬件的配合才能在程序中实现。目前人们在游戏中看到的人、物的即时阴影基本是利用模板缓存创建的,仔细观察就会发现影子过于虚假,这是因为它们的棱角过于分明,形状也保持得太好。其实现实中的影子受凸凹不平的地表和其他因素的影响在边缘处并不太分明,很多时候它们甚至是一团无法分辨的黑色。而T-Buffer的出现使构建模糊阴影成为可能。与模糊阴影类似,现在3D程序中的反射也基本都是“硬反射”(模拟经由镜面物体反射的影像),而模拟生锈的铁板等非完全镜面物体产生的反射影像的“反射模糊”做得并不好。T-Buffer同样也能够弥补这一缺憾。它根据物体靠近反射物的距离以及反射物表面的光洁程度来决定反射影像的清晰或模糊程度。这两个特性是采用T-Buffer的产品能产生电影画质的3D图像的两个重要因素。未采用T-Buffer和采用T-Buffer的效果比较如图2所示。
图2 未采用T-Buffer(左)和采用T-Buffer(右)的效果比较图
---- 目前3D显卡间的竞争可谓是愈演愈烈,新技术也是层出不穷,而鉴于T-Buffer技术的诸多优点,它定会在未来的3D显卡市场中大显身手。 |
|