Tessellation技术

传统的虚拟3D技术回顾

    在了解TessellATIon技术之前,我们是有必要了解一下一些技术背景的,这一节,我们会介绍一些在TessellATIon技术之前的图形图像学的技术。

    前面我们已经详细介绍了一个3D程序是如何被创作出来的,是如何被一个图形芯片运算并且显示出来的。但是,在图形图像学发展的过程中,最大的矛盾还是性能 和效果的矛盾,也就是说如果3D程序设计师需要创作出非常逼真的画面的时候,就必须使用更加复杂的3D模型,而这就需要图形芯片具备更高的性能,这当然也 是显卡和显示芯片行业发展的最大的动力所在。

    但是随着时间的推移,随着显示芯片技术的发展,我们却看到了另外一些情况,这就是3D图形设计师在开发程序的时候,不得不考虑他们的软件的通用性是不是够高,因为如果设计的游戏只有R600或者G80能够运行的东的话,可能他们的软件或者游戏根本就卖不出去了。还有一个因素是设计更加复杂的3D模型无疑会给游戏开发带来更大的成本问题。

    在这样的背景下,图形芯片厂商以及微软,早就开始算计这件事情了,他们想出了各种各样的方法来让3D模型保持简练的同时来获得更加逼真的效果。

通过纹理贴图获得“质感”

    在3D图形诞生的第一天可能就有的技术就是通过最普通的贴图做这件事情。我们知道,绝大多数表面都是有凹凸的质感的,图形学最初的解决方法其实就是利用纹理贴图的处理来让模型看起来更真实。

    例如一个砖墙的墙面的纹理贴图,游戏开发者会在做贴图处理的时候就通过将处于阴影位置的变暗,将迎光面做亮等手段来表现一个表面凹凸的情况。

    当然,这种做法是最原始的,也是效果最差的,因为游戏开发商做的都是具备交互功能的3D游戏程序,而不是静态的画面,所以一旦玩家面向贴图面的视角改变,就丝毫体会不出立体的效果来了。所以这种技术甚至可以不算是虚拟3D技术的范畴。
位移贴图(displacement mapping)

    图形图像学的专家们和图形芯片的厂商其实早就看到了 前面几种技术的局限性,早就在考虑用什么方法能够获得真正的更加细腻的效果了。

    当然最传统的想法就是增加模型的细节了,电影走的就是这个道路。随着电影中用到3D虚拟形象的增加,电影中的模型的细节程度也在不断的增加。从早期的《玩具总动员》到最新的《蜘蛛侠3》《金刚》等等影片,我们可以看到他们的区别。

完美DX10!ATI新王者HD2900XT权威评测  完美DX10!ATI新王者HD2900XT权威评测
电影中的3D效果也在有着突飞猛进的提升

    但是这种“解决方案”就是没有解决问题,因为电影公司可以用成百上千台工作站做长达数个月的渲染。而我们需要的是能够互动的实时运算。

完美DX10!ATI新王者HD2900XT权威评测  完美DX10!ATI新王者HD2900XT权威评测
电影中的3D模型通常都非常复杂

    我们知道,如果3D模型需要做的更细腻,就需要用更多的多边形,也就是需要有更多的顶点来描述一个模型。更多的顶点带来的问题就是运算量的增加,和数据传输的瓶颈效应。

完美DX10!ATI新王者HD2900XT权威评测
海量的顶点数据需要大量的带宽的支持

    我们知道,早期的图形芯片只能处理象素信息,后来才能够处理顶点的几何位置变换。但是顶点的信息全都需要从CPU传输到显卡上,几年前,还是AGP时代的 时候,过于复杂的模型的顶点势必会和纹理数据抢带宽。因为我们所运行的不是静态画面,而是动态的3D程序,里面的每个顶点都会发生位移,每个时刻都有海量 的顶点位置信息需要产生,需要去传回CPU做游戏逻辑和物理模型的处理。

    鉴于这种情况,显示芯片厂商早就想出了一种非常巧妙的解决方法,这就是位移贴图(Displacement Mapping)。位移贴图的核心就是在显示芯片内部创建新的顶点,使之具备更高的细节。而这些顶点的创建完全是显卡完成的,它们的位置也是已有的模型的 顶点决定的。

    位移贴图(Displacement Mapping)的原理是这样的:

    首先游戏开发者会提前准备一个高度图(height map),这个高度图的意义有点类似于法线图,但是它表示的是一个平面上各个凹凸的点距离基础平面的高度情况。高度图通常是一张黑白的图,用灰度来表示高度的值。

    当这个模型被读到显卡里面以后,首先需要进行的是对网格进行细分,细分的结果就是创建了很多新的顶点,显示芯片然后根据高度图将这些顶点的位置重新定位,顶点的位置坐标正是由高度图所决定的。

完美DX10!ATI新王者HD2900XT权威评测
位移贴图的原理

    这样的好处是,这些诞生的顶点是真实存在的,但是并不会牵涉到大量的数据传输的需求,每个时刻这些顶点都是重新诞生的。而从效果而言,这样达到的效果和使用更复杂的效果是完全一致的,所以位移贴图达到的效果是前面的技术望尘莫及的。

位移贴图的优缺点

    位移贴图的有点就是效果是最好的,它产生的顶点都是真实存在的,而且比单纯的增加模型的复杂程度的方法来的要好,要节约一定的运算资源。

    但是毕竟位移贴图需要大量的顶点运算工作需要做,所以效率并不是很高,这一概念截至目前只有一些演示程序能够使用这一技术,游戏开发商还是不愿意将鸡蛋放到这个篮子里。

    位移贴图需要和大家说明的是,虽然顶点的创建和显示全是在显示芯片中完成的,但是处理器在这个过程中仍然要做不小的运算。这在微软的DX10提出之前都是必须要做的。

神奇的小数点——细分网格算法中小数位的意义

    在前面介绍的三种算法中,后两种算法采用的参数都是浮点数,为什么要这样呢?难道只是简单的区别是否在中心部分继续细分么?小数部分的数值究竟起什么作用呢?

    大家注意观察上图,资深的发烧友就会很容易发现在TessellATIon技术中的细分网格操作中,R600利用一个小小的参数非常巧妙的解决了“效果跳跃”的现象。具体怎么回事儿,还请您往下看:
    首先,我们知道,在一个游戏中的模型,会有远有近,为了节省系统资源,将近处的我们需要仔细观察的模型做TessellATIon技术才是有意义的,AMD在设计R600的时候早就想到了这一点。
    那么,R600就设计成了动态的进行TessellATIon技术的操作的模式,模型随着远近和大小不断的改变细节程度,这样就能保证了很好的效率。
    如果一个模型的细节变化的过程被看出来,其实就是一件失败的事情。但是如果R600使用了传统的离散形式的细分网格算法,那么就很容易被看到这个变化的过 程。不过这还不算什么,因为模型在经过TessellATIon技术之后还需要各种其他的处理,所以在模型表面所做的光照等效果发生“突变”就会更加明 显。R600巧妙的使用了浮点数作为参数,这样就能避免这种现象。
完美DX10!ATI新王者HD2900XT权威评测

    在R600的TessellATIon技术中,参数的小数部分表示的是第二次网格细分的位置。如果参数是1.1,那么第一次细分就是在两个顶点中心,第二 次细分就是在距离中心全长的1/40处,如果是1.5,第二次细分就是在距离中点全长的5/40处。如果参数达到了2.0,就正好是做了两次等分。

TessellATIon技术的应用

    大家都知道,AMD的R600这颗芯片是由Xbox360上的那颗进化而来的,所以在Xbox360上也是支持TessellATIon技术的,而且目前已经有采用TessellATIon技术的游戏了。这就是Viva Pinata。
完美DX10!ATI新王者HD2900XT权威评测
    这是一款面向于儿童的游戏,游戏画面相当的不错,里面所有模型的表面都是类似于纸片的材质。
总结:
    TessellATIon技术最重要的是在保证了非常好的视觉效果的前提下节约了性能,让一个程序的运行速度能够保证在很好的水平,下面我们就来对比一下TessellATIon技术和使用高细节模型的性能对比。
完美DX10!ATI新王者HD2900XT权威评测
    讲到这里,我想大家对TessellATIon技术应该有了一个初步的了解了,不过一项技术能不能发扬光大,需要的不仅仅是R600这颗芯片的支持,更重要的是需要游戏开发商对其支持。目前对于TessellATIon技术有个非常令人高兴的消息。
纳入规范
    在GDC2007上,微软展示了他们下一代DirectX标准的一些细节,非常令人高兴的是,在DX10.1中,微软将很有可能会把TessellATIon技术纳入规范之中。
完美DX10!ATI新王者HD2900XT权威评测
   
DX10.1的架构(来自于GDC2007)
    这令我们想到了当年的3Dc技术,当年3Dc技术也是ATI自主研发的一种对发现贴图进行压缩的算法,后来被微软纳入了DX9.0C的规范之中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值