新一代3D技术——T-Buffer 飞越3D ION 1999年 第38期 17版 随着最新一波3D加速芯片的推出,3D图形技术已走入成熟期,第四代的Voodoo3、TNT2等3D芯片总体性能都已达到了一个非常高的水平。但遗憾的是,除了S3TC纹理压缩技术和环境凸凹映射等个别特性外,我们并没有看见标新立异的技术,大部分显示卡性能都是基于原来老的产品之上,只是速度更快,性能更强。 提起3dfx和Voodoo系列芯片,大家都会有这样的感觉:具有超强的性能却缺乏关键的功能。3dfx的系列产品总是速度飞快,但一直不支持32位渲染、高分辨率纹理和AGP纹理等3D特性。3dfx认为“Framerate is king(速度为王)”。在竞争加剧的情况下,3dfx也感到在保持高水准性能的同时,也要改善画质。因而在下一代3D芯片中,3dfx将应用更先进的技术——T-buffer。T-buffer技术的首要目标就是要提高以往不如人意的视觉效果。 #1 T-buffer技术产生的基础 T-buffer技术看起来好像是横空出世,其实早期发展的计算机图像技术都是T-buffer的理论基础。在80年代,人们用标准的射线跟踪来形成高质量的图像。那时的问题是视觉效果不真实,包括锯齿、锐化、阴影固定、玻璃无半透明效果等。为了解决这个问题,1984年开发了著名的分布式射线跟踪(Distributed Ray Tracing)技术。 分布式射线跟踪技术使用了超级采样(Super Samping)来解决锯齿问题。另外还具有区域景深、柔和阴影和一些其他功能。所谓超级采样,就是让多条光线投射到一个指定像素上,颜色取所有光线平均值,然后就用这个颜色给像素上色。标准射线所有被跟踪的点都来自光源的同一方向,而分布射线跟踪的点则可以来自不同方向,由不同方向的射线交叉混合形成像素的亮度,这样阴影的效果更加真实。总的来说,分布射线跟踪技术效果不错,但是光线跟踪要占用大量系统资源进行渲染,而且不能即时生成渲染效果。 #1 A-buffer和T-buffer技术 A-buffer(Accumulate-buffer,累积缓冲)技术是1990年发布的图像技术。A-buffer不仅具有即时生成效果,还保留了分布式射线跟踪技术的所有效果。当所有图像渲染完毕后,累积缓冲将之连成一个完整的图像,并送入帧缓存,最后在显示器显示出来。 A-buffer具有抗锯齿效果,但不支持焦点模糊(它的实现对CPU要求非常高)。其实A-buffer的实质也是超级采样,场景被多次渲染,每次渲染时图像的位置都稍稍有些不同,当然我们肉眼是无法看见这个偏移的。当所有渲染过程完成之后,再将每个图像再叠加起来,由于每个图像位置不同,正好可以填补图像之间的间隙,抗锯齿的效果就出来了。至于运动模糊,也是同样的处理过程,图像多次渲染,由于每次位置不同,图像叠加后人眼自然感觉有多个图像,然后由暗色向亮色逐渐过渡,运动模糊效果就出来了。A-buffer确实是项优秀的技术,克服了渲染中的许多问题,但它是为高端工作站设计的,成本非常昂贵。T-buffer的功能与A-buffer十分相似,两者的主要区别是T-buffer成本相对要便宜很多,因为它的图像处理过程要简单得多,完成时间也更快。因而3dfx将T-buffer视为技术上的一个飞跃,游戏图像可以具有照片般的真实效果。 1.A-buffer技术渲染步骤如下: 1)清除A-buffer中的图像。 2)清空后台buffer中的图像并在后台buffer中为送入的新场景着色。 3)将渲染后的着色结果送入A-buffer中进行加权处理(这一步是累积)。 4)根据需要,多次重复第2、3步,每一次重复部分都会连接一个新的图像,这是不同图像加权处理后的结果。 5)将累积buffer中内容送入后台buffer,交换buffer内容,这一步骤将形成显示的图像效果。 2.T-buffer技术的渲染过程: 1)清除后台buffer 原有的图像。 2)将多重渲染图像送入后台buffer(或buffer)。 3)清除前台和后台buffer内容,然后显示渲染后的图像。 3.一般的3D芯片和T-buffer处理图像的过程见右图。 由于T-buffer比A-buffer少了两个步骤,效率要高很多,而且降低了成本,使得用于工作站的图像技术可以应用到个人计算机上。 #1 T-buffer的技术特点 1.全场景抗锯齿特效。只要仔细观察市面上的每个游戏,会发现在所有多边形边缘都有裂纹,这是由于图像信息量缩减造成的。现在一个非常普遍的解决方案就是:抗锯齿。当今的3D卡有两种类型的抗锯齿技术:边缘抗锯齿(Edge Antialiasing)和上行采样(Over-Sampling)。这两者都有弊端,边缘抗锯齿是由软件实现的,即软件为每个进入流水线的三角形边缘做标记,形成一个有轮廓的边沿。当场景渲染完毕后,驱动程序再找回信息标记清单并进行清理工作。这个过程要消耗大量的CPU资源,因为它要保存所有边缘信息的列表清单,然后才能做抗锯齿处理。至于Over-Sampling,它的缺点是会令填充率剧减,因为它需要大量的填充率来完成。 T-buffer支持全场景空间抗锯齿,这可以消除多边形边缘的参差不齐的毛边,并避免多边形可能发生的错位(通常发生在很小的多边形上)。T-buffer还支持像素等级的渲染(即小于像素宽度),可以创造更加复杂细微的颜色,使边缘更加圆滑,边缘的颜色也柔和地融为一体。而真正可贵的是这一切都由硬件完成,T-buffer的价值正在于此。抗锯齿无须对游戏软件做什么修改,无论游戏本身是否支持抗锯齿,只要你有Voodoo 4,游戏就有抗锯齿效果。而且T-buffer可以完全兼容Direct 3D、Open GL和Glide三个API。老游戏可以轻易得到新技术的绝佳画质,对CPU性能也不会有很高的要求。 2.运动模糊特效。运动模糊在电影中场景、人物、视角的快速移动应用得非常普遍。简而言之,运动模糊就是允许画面以稳定的帧速运行,且图像看上去非常平滑自然。T-buffer也是对物体进行多次采样,每次选取位置都在稍微不同的位置,然后一次性全部渲染。 3.焦点模糊特效。T-buffer另一个值得自豪的效果就是焦点模糊。但不能肯定是在整个游戏中还是在特殊场景中使用焦点模糊效果。 4.柔和阴影和柔和反射特效。在现在的3D游戏中,阴影和反射效果随处可见。不过通常是人物或物体在地面上有一个固定的黑影,很不真实。T-buffer技术自称可以改变这些。 可以说T-buffer确实是个先进的技术,全场景抗锯齿的效果如果在游戏中频繁使用,游戏的画质肯定会更好,但运动模糊和焦点模糊是否有广阔发挥的空间就很难说了,至于阴影和反射效果,笔者是极为欣赏的,无影侠时代将一去不复返了! (^381701a^) #1 结 语 T-buffer技术虽然出众,但对于对3D整体性能仍然可能存在一些的影响。首先是T-buffer技术非常复杂,可能造成填充率的下降,另一方面,目前的3D显卡一般都支持很高的分辨率,这样一来全场景抗锯齿似乎并不那么重要。不过在看过某些游戏的演示后,发现高分辨率可以减少多边形边缘的锯齿数量,但并不能完全消除,而且不能去除多边形闪烁,可以预见,全场景抗锯齿技术仍然具有它的优势一面。 今年是3D图形市场竞争最激烈的一年,3dfx有T-buffer技术,Nvidia有T&L技术,S3有S3TL和S3TC技术,在截稿时,3dfx也发布了它最新的纹理压缩技术——FTX1,这些必将对未来图形芯片的发展产生深远的影响。如果对此有兴趣的话,可以访问我的站点 http://beyond3d.chinese.com。