DirectX 11

技术

最近,DirectX 11的推出在市面了引起了强烈的关注,而您听到的关于它的最大的一个新功能就是曲面细分。 从概念上说,曲面细分是相当简单的,即将一个多边形切成小块。 但这有什么了不起的呢? 它又能如何让游戏从中受益? 在本文中,我们将讨论曲面细分为何将对PC上的3D显卡产生深刻的影响,以及英伟达™精视™(NVIDIA® GeForce®)GTX 400系列GPU何以能提供突破性的曲面细分性能。

从本质上说,曲面细分是一种对多边形进行分解的方法,而新产生的三角形将用于描绘新信息。

要这些新三角形投入使用,一种最简单、最常用的方法就是贴图置换技术。 贴图置换(displacement map)是一种用于存储高度信息的纹理。 当纹理应用于表面时,它允许表面顶点根据高度信息向上或向下转移。 例如,艺术家可以在一块大理石板上通过顶点移位来创建雕刻品。 另一种流行的技术是在地形上应用贴图置换来刻画陨石坑、峡谷和山峰。

在平面上应用贴图置换(左)时,最终形成的平面(右)会传达贴图置换中的高度信息。

类似于曲面细分,贴图置换已经存在了很长一段时间,但直到最近才开始真正流行起来。 其原因在于,表面必须由大量顶点构成才能让贴图置换生效。 以大理石雕刻为例,如果大理石块由八个顶点构成,那么它们之间的相对位移量不足以创建一个真实的龙雕。 只当基础模型中存在足够的顶点时,才能够创建一个精细的雕刻。 从本质上说,贴图置换需要 曲面细分,反之亦然。

借助DirectX 11,曲面细分和贴图置换最终完美地融为一体,并且开发人员已经开始顺应这一趋势。 类似的流行游戏《Alien vs. Predator》《地铁2033》会通过曲面细分创建平滑的模型,并且Valve和id Software的开发人员已经预见性地在他们的已有游戏角色上应用了这些技术。

一个粗糙模型(左)在经过曲面细分之后产生了一个平滑的模型(中)。 应用贴图置换之后(右),游戏角色具有了电影般的逼真度。 © Kenneth Scott, id Software 2008

由于DirectX 11曲面细分流水线是可编程的,因此它可以用于解决大量的图形问题。 让我们来看看四个例子。

完美的凹凸贴图

从本质上说,贴图置换可以作为现有凹凸贴图技术的替代方案。 现有的普通映射等技术会通过更好的像素着色来创建凹凸不平的表面。 所有这些技术只适用于一些特定的情况,并且其效果只能说是差强人意。

基础模型

凹凸贴图

贴图置换

我们以视差遮蔽映射为例,它是一种非常先进的凹凸贴图形式。 它可以产生几何体重叠的视觉效果,但仅适用于平面和物体内部。 真正的贴图置换技术不存在这些问题,并且在任何角度上都可以产生精确的结果。

Smoother Characters

与曲面细分结合使用的另一项技术是细化算法。 在曲面细分的帮助下,细化算法可以将一个粗糙模型打造成一个更加平滑的模型。 一个常见的例子是PN-Triangles(或称作N-Patches)。 PN-Triangles算法可以将低分辨率模型转换为曲面,而这些曲面随后又通过曲面细分形成更加精细的三角形。 在这些算法的帮助下,如今游戏中的角色、多边形车轮和粗糙表面的视觉假象都将得到消除。 例如,《Stalker: Call of Pripyat 》使用PN-Triangles创建了更加平滑真实的角色。

无需艺术家输入,PN-Triangles便会自动为角色赋予平滑效果。 几何和照明的逼真度都大为改善。

无缝细节水平

在使用大型开放环境的游戏中,您可能会注意到远处的物体经常忽隐忽现。 这是因为游戏引擎在不同细节水平(LOD)之间来回切换以控制几何负载所致。 目前为止,还没有一种简单的方法可持续改变细节水平,因为这需要为相同模型或环境维持许多不同的版本。 动态曲面细分可以动态地改变细节水平,从而解决了这一问题。 例如,当远处的建筑物第一次映入眼帘时,可能只会呈现十个三角形。 当您走近建筑物时,其主要特点会随之出现,并且系统需要使用更多的三角形来绘制细节,比如窗户口和屋顶。 当您最终走到门口时,仅仅呈现一个铜制把手就需要使用一千个三角形,其中每个槽都是通过贴图置换严谨地雕刻而成。 动态曲面细分可消除物体闪动,并且游戏环境可以几近无限地扩展几何细节。

可扩展艺术品

对于开发人员来说,曲面细分可显著提高其内容创作流水线的效率。 在描述自己使用曲面细分的动机时,Valve的Jason Mitchell表示:“我们感兴趣的地方是设计可上下伸缩的的物体的能力。 也就是说,我们仅需建立一个模型,然后它便可以扩展到与电影相当的质量...相反,我们希望能够自然伸缩物体的质量,以满足在特定系统中实时渲染的需求。”由于只需创建一个模型便可在各种不同的平台中使用它,因此这种能力就意味着开发时间更短,并且可帮助PC游戏玩家在其GPU上实现最高的图像质量。

英伟达精视(GeForce) GTX 400 GPU如何实现曲面细分

传统的GPU设计采用单一几何图形引擎来执行曲面细分运算。 这种方式类似早期GPU采用单一像素流水线来执行像素着色的设计。 像素流水线从早期的单个单元发展至后来的多个并行单元,对3D逼真度产生了非常积极的影响。借鉴这一经验,我们从一开始便设计了自己的并行曲面细分架构。

英伟达精视(GeForce) GTX 400 GPU采用多达十五个曲面细分单元,每个单元都使用专用硬件实现顶点提取、曲面细分和坐标转换。 4个并行光栅引擎能够将刚刚经过曲面细分的三角形转化为非常细致的像素流以进行着色。 如此一来,便实现了突破性的Tessellation(曲面细分)性能,每秒最多可处理16亿个三角形。 独立网站Bjorn3D的测量结果显示,与最快的同类产品相比,英伟达精视(GeForce) GTX 480最高速度可达7.8倍

结论

经过多年反复试验,曲面细分终于在PC上得以实现。 《地铁2033》等游戏大作已经展示出了曲面细分的惊人潜力。 随着时间的推移,曲面细分必将成为素着色所必不可少的重要因素。 认识到其重要性之后,英伟达™(NVIDIA®)已经开始着手建立平行曲面细分架构。 其成果便是英伟达精视(GeForce) GTX 400系列GPU——该产品在几何图形逼真度和曲面细分性能上取得了真正的突破。