一切为了更真实──显卡中的3D技术(一)
整机外设
“让游戏画面看上去更真实!”这恐怕是无数游戏爱好者的共同愿望。而显卡作为电脑图像显示的输出设备,它的性能是影响游戏表现的关键。目前,在极品飞车6、DOOM 3等游戏中,3D图像的产生(物理建模、光照计算、坐标变换、着色渲染等)几乎完全由GPU承担,渲染出来的场景是越来越逼真了。那么,是什么样的显卡3D技术让虚拟的游戏世界变得如此真实、逼真呢?
3D图像的形成
众所周知,3D游戏画面中的每一个物体,无论是游戏角色、墙、地板或是其他,其实都是由一定数目的三角形构成。如图1就是一个由多个三角形组成的3D图像。
此时的3D图像(即3D模型)好比是绘画中的素描图,所有三角形的表面都是一种颜色,这样直接创建出来的3D物体肯定是不真实的。因此就需要给3D模型的表面赋予各种色彩来让图像看上去更真实,而这是由我们常说的“纹理贴图”来完成的,纹理就像3D模型的皮肤一样。“填充”每一个三角形,覆盖3D模型表面(即渲染过程,好比对一幅素描图进行着色,如图2)。当然,让3D物体仅仅有颜色还是不够的,因为现实中的物体都有自己的表面特点,有的光滑、有的粗糙,有的会反光。那么,在3D图像中如何表现这些呢?一般是通过材质贴图。其实材质和纹理的本质都是一样的,都是3D模型的“皮肤”,二者的区别是材质是为了模拟真实世界物体表面的质感,如物体的颜色、透明度、反光度和自发光以及粗糙程度等;纹理的作用是使物体表面呈现某种纹理和图案。
在游戏中的物体离我们有远有近,物体表面有凹有凸,同样的纹理会随着距离、表面的不同而显示出来的大小不同,为了让场景做出令人信服的效果,材质和贴图是至关重要的。我们先看看相关的贴图技术。
贴图技术
贴图是在3D场景中增加真实性的一个重要的工具。就像一般的影像一样,贴图愈大,它的图像就愈精细。目前在3D场景中常用贴图技术主要有下面几种。
1.凹凸贴图(Bump Mapping)
凹凸贴图是一种在3D场景中模拟粗糙表面的技术,是先将深度的变化保存到一张贴图中,然后再对3D模型进行标准的混合贴图处理,即可得到具有凹凸感的表面效果,也可以说是让材质看起来有皱折或平滑感觉的障眼法。例如,在游戏中如果要实现一个粗糙凹凸墙面效果,游戏研发人员会先在一个线框架构的立体矩形方块上面覆盖一层砖墙材质,再制作出一张凹凸贴图用的图片(这张图片实际就是一平面图形),然后研发人员再将图片覆盖在立体平面上。墙面的颜色不会改变,但是墙面马上就变得全新且有立体的感觉。
凹凸贴图的方式有三种。第一种方式叫做Embossing,它的作用主要是可以在材质表面上再覆盖另一层材质以增加其真实度,Embossing是凹凸贴图中最简单也最快速的方式。第二种叫做Dot Product 3(DP3),DP3凹凸贴图本身内嵌某种表达式,可以让电脑根据四周的光源来计算阴影从而实现阴影效果。第三种是环境凹凸贴图(Environment Bump Mapping),其使用在反射表面的技术,在渲染有较强光感的凹凸表面时,有明显的优势,可提供更高的拟真度。环境凹凸贴图技术也是DirextX8.1的重要技术之一。
在营造一些自然场景时,经常会出现一些湖水之类的画面,原始的Emboss技术生成的湖水看起来更像是一块阴天时没有太多光照的绸布;Dot Product 3凹凸贴图方式生成湖水较之Emboss有一些改善,但仍然不够真实,缺点主要在于波光的表现不够充分、湖水波动的渲染也不够细腻;环境凹凸贴图技术则能渲染出《泰坦尼克号》等影片中那种可以以假乱真的水面效果。
2.环境贴图(Environment Mapping)
环境贴图是一种依四周环境而改变的特定贴图技术。这种技术已经在赛车模拟游戏中被广泛运用,大型或邻近的物体(例如树木、天空甚或是其他的车辆)会反射在车体上,让车壳有一种类似合金的反射效果,画面看上去会更加真实。
3.多层材质贴图(Multitexturing)
这种技术可让游戏在一次渲染中将多层材质贴到一个多边形上,这样渲染出来的图像就会显得很充实。假设游戏景场中墙面挂着一盏聚光灯、一幅海报,那么这些灯光和海报材质就是通过多层材质贴图技术贴在砖块材质上来达到渲染效果,当然你也可以利用此技术再增加其他材质。但是关于多层材质贴图你要注意的是,增加的材质层数愈多,显示芯片的负担就愈重。因此一些显卡芯片厂商采用更为灵活的渲染方式来智能判断哪些贴图需要渲染、哪些不需要渲染来减轻显卡的工作量。如Xabre所采用的“块式减免隐面无效渲染算法”技术,就是采用块组的方式判断渲染场景中是否存在不需显示的“隐面”,并略去这部分像素的贴图、渲染工作,大大节省了显卡的运算资源。
4.置换贴图(Displacement mapping)
置换贴图是Matrox研发的技术,被微软整合进了DirectX 9,成为一个业界标准。利用此技术,设计师可以使用一层“置换贴图”来记录几何信息而不是直接使用数量庞大的多边形来制作物件,在这种贴图上有专门经过编码的记录物体几何表面的定点高度信息。不同于凹凸贴图,置换贴图技术精确地描述了物体的外形,使得其光线反射和阴影投射的效果更加真实。置换贴图可以减轻GPU、CPU的处理负担,而且因为置换的过程是静态的,因此可以刻画出更富有细节的3D效果。图5是置换贴图技术展示,首先GPU通过增加三角形数量来修饰一个由少量三角形组成的网面,然后用替换方式修饰网面的每个高点,最后对完成置换的网面进行顶点着色、纹理处理等步骤完成最终的渲染画面。因此利用置换贴图技术,GPU可以通过一张基本纹理、一张光照纹理以及一张最为重要的高程纹理来完成模型外观的构造。图6是采用了置换贴图技术的3D图像画面,比较逼真。目前支持DitectX9.0的新一代显卡都支持置换贴图功能。
贴图渲染需要像素着色引擎来支持完成,可以说贴图技术是随着DitectX的发展而发展的。随着DirectX 9的推出,对显卡的贴图渲染效果、速度提出了更高的要求,支持DirectX 9也成为了新一代显卡的标准。






