革命性DX11架构!GTX480470权威评测

2010-04-06 18:01  出处:PConline原创  作者:佚名   责任编辑:zhengwanglun 

第二章 DX11中最有价值的技术:Tessellation的妙用

  NVIDIA认为,DX11当中最有价值的技术就是Tessellation,因为其它所有的技术用DX10指令集都可以实现,只不过速度慢一些而已,唯独Tessellation无可替代,它以较小的性能损失大幅改善了游戏画面,将程序员多年来的梦想变为现实,因此好评如潮。

  但是,Tessellation是一项由竞争对手ATI所倡导,经过多年的改进与完善而来的技术,那么在Tessellation被纳入DX11范畴之后,NVIDIA会不会比ATI做得更好呢?

第二章/第一节 Tessellation是ATI原创的技术,但孤掌难鸣

  Tessellation一词相信大家并不陌生,早在DX9C时代,微软XBOX360游戏主机中由ATI设计的Xeno显示芯片就支持;从DX10时代到DX10.1时代,ATI HD2000/3000/4000系列显卡全都整合了一个叫做Tessellator的模块,虽然当时没有任何游戏能够支持该技术,但ATI通过几个演示Demo展现了Tessellation技术的魅力。

  事实上,在更早的DX8时代,ATI就已经和微软联手开发了TruForm(N-Patch)技术,也就是Tessellation的前身,并被纳入DX8.1的范畴。但由于该技术有一些不可控制的BUG,因此被DX9和DX10无情的抛弃了。

  Tessellation之所以未成气候,就是因为此前的技术还不够完善,另外GPU处理能力不足也是一大因素,因此ATI即便有微软的鼎力相助,也未能将该技术发扬光大。到了DX10时代,ATI虽然在全线GPU当中整合了Tessellator模块,无奈孤掌难鸣,并没有得到游戏开发商的支持。

  直到DX11时代,GPU自身的性能有了长足的进步,硬件上真正具备了细分曲面的实力,再加上微软重新改写API渲染流程,专为Tessellation开辟了新的着色器,这才让Tessellation技术得以重见天日。

第二章/第二节 Tessellation技术实现的原理

  Tessellation这个英文单词直译为“镶嵌”,也就是在顶点与顶点之间自动嵌入新的顶点。Tessellation经常被意译为“细分曲面”,因为在自动插入大量新的顶点之后,模型的曲面会被分得非常细腻,看上去更加平滑致密。下面这张图形象的反映出Tessellation技术的原理和所实现的效果:

  通过上面这张示意图,我们就可以更容易理解Tessellation技术是怎么回事了,它是一种能够在图形芯片内部自动创造顶点,使模型细化,从而获得更好画面效果的技术。Tessellation能自动创造出数百倍与原始模型的顶点,这些不是虚拟的顶点,而是实实在在的顶点,效果是等同于建模的时候直接设计出来的。

  Tessellation技术是完全可编程的,它提供了多种插值顶点位置的方法来创造各种曲面:
 
1. N-Patch曲面,就是和当年TruForm技术一样,根据基础三角形顶点的法线决定曲面;
2. 贝塞尔曲面,根据贝塞尔曲线的公式计算顶点的位置;
3. B-Spline、NURBs、NUBs曲线(这三种曲线均为CAD领域常用曲线,在Maya中均有相应工具可以生成)
4. 通过递归算法接近Catmull-Clark极限曲面。

  Tessellation技术最初主要被用以“细分曲面”,随着该技术被纳入DX11范畴,得到大范围推广之后,插值顶点的算法也越来越多,因此用途也越来越广,产生了很多非常有创意的应用,在本章后面几节当中笔者会为大家做更详细的介绍。

  Tessellation技术还经常与Displacement Maps(贴图置换)技术搭配使用,从而将平面纹理贴图改造成为具有立体感的几何图形,大大增强3D模型或场景的真实性。

  除了大幅提升模型细节和画质外,Tessellation最吸引程序员的地方就是:他们无需手动设计上百万个三角形的复杂模型,只需简单勾绘一个轮廓,剩下的就可以交给Tessellation技术自动镶嵌,大大提高开发效率;而且简单的模型在GPU处理时也能大幅节约显存开销,同时大幅提升渲染速度!

第二章/第三节 DX11版Tessellation的改进

  前面笔者提到过,ATI的HD2000以上级别显卡其实都具备Tessellation的功能,但它们却无法与DX11中的Tessellation技术相兼容。这是因为微软并没有原封未动的将R600的Tessellation技术抄到DX11之中,而是对其进行了优化,使之能与渲染流程完美的结合在一起,可以更高效率的细分出更多的多边形和曲面。

  与DX9C/DX10时代孤零零的Tessellator模块不同,在DX11当中,微软加入了两种全新着色器来全力配合Tessellator的工作,分别位于镶嵌器的前后。

  其中Hull Shader(外壳着色器)用来控制自动生成顶点的数量和算法,也就是Tessellator的细分级别,然后交给Tesselator进行镶嵌处理,最后由Domain Shader(域着色器)按照程序要求生成所需曲面,并自动进行法线平移、置换贴图,产生新的模型。

  与DX9/10中的Tessellation技术相比,DX11新增的两种着色器都受统一渲染架构支配,因此处理能力非常富裕,DX11版Tessellation不仅效率更高、而且细分级别更丰富。但是,更高的细分等级对Tessellator模块本身的处理能力提出了苛刻要求,这需要芯片厂商在设计之初就考虑周全,在本文架构解析部分,笔者会详细分析ATI和NVIDIA两者的设计思路。

  下面,我们就通过大量生动的实际案例,来感受Tessellation技术的魅力,来说明游戏厂商和芯片厂商为什么如此重视这项技术。

第二章/第四节 Tessellation的妙用:虚假贴图终结者

  首款DX11测试程序——Heaven Benchmark中,几乎所有的场景都是由Tessellation技术动态生成的,其中最有代表性的场景就是地图中央的飞龙,但最具震撼力的是周围凹凸不平的砖墙、石阶和瓦片:

  开启Tessellation后,翼龙身体上的“斑点”变成了“尖刺”,虽然只是一座雕像而已,但怪物明显变威猛了许多。身体各部位包括尖刺的平滑过渡都十分自然,让人找不出任何模型设计的缺点,看来Tessellation自动插入顶点并细分曲面在实际应用中相当智能。

  在这幅图中,大家注意观察左侧的墙壁(以及凸出石块的阴影)、右侧的台阶和下方的鹅卵石路,关闭Tessellation时,石块间的缝隙使用传统的视差映射贴图技术渲染而成,也有一定的立体效果,但不够明显,而且缝隙间不存在真正的阴影。视角拉的很近的话,立体效果就会消失,因为那只是欺骗人眼的贴图而已。

  而Tessellation技术生成的是实实在在的顶点和曲面,所有的岩石、台阶和石块都是独立存在,而不再是平面上的虚拟贴图而已。一经对比,视觉反差十分强烈!

  传统的屋顶瓦片就是“纸糊”的,类似与生活中用于糊墙的“砖纹、木纹”墙纸,远看还行近看一点立体感都没有,连小孩子都骗不了。经过Tessellation技术处理后,凹凸不平、错落有致的瓦片震撼登场!

  在以往的游戏中,多是以高精度的纹理贴图来欺骗玩家的眼睛,使得周围环境看上去更真实一点。只有以《孤岛危机》、《狂野西部》、《潜行者》为代表的次世代游戏才使用了“虚拟位移贴图”或“视察映射贴图”这种高级特效,生成有一定立体感的砖墙或缝隙。

  而Tessellation技术的出现,则终结了一切虚假贴图,达到了完全真实的凹凸效果,让游戏朝着虚拟现实方向迈进了一大步!

第二章/第五节 Tessellation的妙用:布料旗帜

  随风飘扬的衣物和旗帜一直都是3D渲染的难题,此前想要达到逼真的布料效果,必须使用物理加速技术。虽然物理引擎可以达到和谐自然的动态效果,但衣物本身的细节还不够丰富,原因是游戏不可能将一块小小的布料做得太过复杂,这样会消耗太多的资源,得不偿失。

  有了Tessellation技术之后,可以一定程度上代替物理引擎,不仅可以大幅加强布料本身的细节、实现动态逼真的效果、而且消耗资源很少,可谓是一举三得。

  在DX11代表作《科林麦克雷:尘埃2》中,就大量使用了Tessellation技术,虽然细分级别并不高,但其魅力已经显露无疑。

  在线框模式下我们可以看到,原本由屈指可数的曲线勾勒出来的旗帜,已经被细分得密密麻麻,此时旗帜的运动细节变得更加丰富,在外力作用下可以产生更逼真的摆动效果。

第二章/第五节 Tessellation的妙用:波澜壮阔的水面

  《尘埃2》中,除了旗帜之外,还有一个很有创意的应用,就是用Tessellation构建动态水面:

  《尘埃2》是专为ATI显卡优化的游戏,其中虽然大量使用了Tessellation技术,但都是轻量级的。看完下面这款NVIDIA的演示Demo之后,大家将会对Tessellation技术刮目相看:

  这款Demo的名称叫做Island11,在后文中Demo解析部分,将会有更多精美截图供大家赏析。

第二章/第六节 Tessellation的妙用:不可思议的长发

    不管墙壁、旗帜还是水面,Tessellation都是被用来“细分曲面”,因此无需太多介绍大家都很容易理解其工作原理。那么看了下面的截图之后,不知道您会做何感想?

  这是款NVIDIA专为GF100开发的演示Demo,名字叫做Hair,在后文中将会详细介绍这款Demo,通过更多的截图分析其工作原理。

● 本章小结:DEMO抛砖引玉,Tessellation前景光明

  通过实例分析介绍可以发现,Tessellation技术所实现的功能并没有局限在“细分曲面”的范围内,随着DX11逐渐走向普及,开发商和程序员基于新的API开发游戏时,更多有创意的应用将会呈现在大家面前,目前的这些SDK和DEMO都只是起到抛砖引玉的作用。

键盘也能翻页,试试“← →”键