完美DX10!ATI新王者HD2900XT权威评测
第五小节 位移贴图(displacement mapping)
图形图像学的专家们和图形芯片的厂商其实早就看到了 前面几种技术的局限性,早就在考虑用什么方法能够获得真正的更加细腻的效果了。
当然最传统的想法就是增加模型的细节了,电影走的就是这个道路。随着电影中用到3D虚拟形象的增加,电影中的模型的细节程度也在不断的增加。从早期的《玩具总动员》到最新的《蜘蛛侠3》《金刚》等等影片,我们可以看到他们的区别。
但是这种“解决方案”就是没有解决问题,因为电影公司可以用成百上千台工作站做长达数个月的渲染。而我们需要的是能够互动的实时运算。
我们知道,如果3D模型需要做的更细腻,就需要用更多的多边形,也就是需要有更多的顶点来描述一个模型。更多的顶点带来的问题就是运算量的增加,和数据传输的瓶颈效应。
我们知道,早期的图形芯片只能处理象素信息,后来才能够处理顶点的几何位置变换。但是顶点的信息全都需要从CPU传输到显卡上,几年前,还是AGP时代的时候,过于复杂的模型的顶点势必会和纹理数据抢带宽。因为我们所运行的不是静态画面,而是动态的3D程序,里面的每个顶点都会发生位移,每个时刻都有海量的顶点位置信息需要产生,需要去传回CPU做游戏逻辑和物理模型的处理。
鉴于这种情况,显示芯片厂商早就想出了一种非常巧妙的解决方法,这就是位移贴图(Displacement Mapping)。位移贴图的核心就是在显示芯片内部创建新的顶点,使之具备更高的细节。而这些顶点的创建完全是显卡完成的,它们的位置也是已有的模型的顶点决定的。
位移贴图(Displacement Mapping)的原理是这样的:
首先游戏开发者会提前准备一个高度图(height map),这个高度图的意义有点类似于法线图,但是它表示的是一个平面上各个凹凸的点距离基础平面的高度情况。高度图通常是一张黑白的图,用灰度来表示高度的值。
当这个模型被读到显卡里面以后,首先需要进行的是对网格进行细分,细分的结果就是创建了很多新的顶点,显示芯片然后根据高度图将这些顶点的位置重新定位,顶点的位置坐标正是由高度图所决定的。
这样的好处是,这些诞生的顶点是真实存在的,但是并不会牵涉到大量的数据传输的需求,每个时刻这些顶点都是重新诞生的。而从效果而言,这样达到的效果和使用更复杂的效果是完全一致的,所以位移贴图达到的效果是前面的技术望尘莫及的。
位移贴图的优缺点
位移贴图的有点就是效果是最好的,它产生的顶点都是真实存在的,而且比单纯的增加模型的复杂程度的方法来的要好,要节约一定的运算资源。
但是毕竟位移贴图需要大量的顶点运算工作需要做,所以效率并不是很高,这一概念截至目前只有一些演示程序能够使用这一技术,游戏开发商还是不愿意将鸡蛋放到这个篮子里。
位移贴图需要和大家说明的是,虽然顶点的创建和显示全是在显示芯片中完成的,但是处理器在这个过程中仍然要做不小的运算。这在微软的DX10提出之前都是必须要做的。