码迷,mamicode.com
首页 > 移动开发 > 详细

Tessellation (曲面细分) Displacement Mapping (贴图置换)

时间:2016-03-13 10:00:44      阅读:636      评论:0      收藏:0      [点我收藏+]

标签:

DirectX 11 Tessellation (曲面细分)—什么是 Tessellation (曲面细分) ?

它为什么可以起到如此关键的数据?

随着近期人们对 DirectX 11 的议论纷纷,你可能已经听说了有关 DirectX 11 最大新特性 Tessellation (曲面细分) 的大量介绍。作为一个概念。 Tessellation (曲面细分) 非常直截了当,就是处理一个多边形分成诸多小碎片。

可是为什么这种处理方式可以备受瞩目呢?

它是怎样帮助提升游戏画质的呢?本文中,我们将分析 Tessellation (曲面细分) 之所以可以为 PC 3D 图形带来深刻变革的原因,并阐释一下 NVIDIA® GeForce® GTX 400 系列 GPU 怎样提供突破性的 Tessellation (曲面细分) 性能。

从本质上来讲, Tessellation (曲面细分) 是一种将多边形分解成更加细小的碎片以提升几何逼真度的方法。

比如,假设处理一个正方形并将其沿对角线切开,那么实际上就是将这一正方形“曲面细分”成为两个三角形。就其本身而言, Tessellation (曲面细分) 并不能提升半点逼真度。

比如,在游戏中。一个正方形被渲染成为两个三角形还是两千个三角形都是无关紧要的。

仅仅有在使用新三角形来描写叙述新信息时, Tessellation (曲面细分) 才干提升逼真度。

技术分享技术分享
当一个置换贴图 (左) 应用到平面上时,所生成的表面 (右) 就会表现出置换贴图中所编码的高度信息。

运用新三角形最简单、最流行的方式就是有“ Displacement Mapping (贴图置换) ”之称的技术。置换的贴图就是一个存储高度信息的纹理。当应用到某一表面上时,该贴图让这一表面的顶点可以依据高度信息调高或调低。 比如,使用一块大理石板,图形艺术家可以通过“置换”顶点的方法打造雕刻效果。还有一种流行技术是将置换的贴图应用到地形上,以雕琢出弹坑、峡谷以及山峰。

正如 Tessellation (曲面细分) 一样。 Displacement Mapping (贴图置换) 已经存在非常长一段时间了。可是直到近期,它才真正流行起来。

究其原因,是由于想要让 Displacement Mapping (贴图置换) 有效。表面必须由大量顶点构成才行。以大理石雕刻为例。假设大理石块由八个顶点构成。那么在它们之间便没有可以生成龙形浮雕的相对置换量了。仅仅有在基础网格中具备足够多的顶点用以描绘新形状时才可以生成仔细的浮雕。

从本质上来讲, Displacement Mapping (贴图置换) 须要 Tessellation (曲面细分) 。反之亦然。

随着 DirectX 11 的问世。 Tessellation (曲面细分) 与 Displacement Mapping (贴图置换) 最终实现了珠联璧合。广大开发商已经增加到这一阵营其中。

像《Alien vs. Predator》以及《地铁2033》这种流行游戏均採用了 Tessellation (曲面细分) 来生成外观平滑的模型,而开发商Valve公司与 id Software 已经完毕了一些前景看好的工作,将这些技术应用到其现有的游戏人物身上。

技术分享
当一个粗糙的模型 (左) 经过 Tessellation (曲面细分) 处理后,就会生成平滑的模型 (中间)。当应用了贴图置换之后 (右)。游戏人物便接近电影般的逼真度了。 © Kenneth Scott、id Software版权全部。2008

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

完美凹凸贴图

技术分享

从本质上来讲,Displacement Mapping (贴图置换) 可被用作现有凹凸贴图技术的暂时替代技术。比如法线贴图等当前的技术通过更佳的像素渲染,可以创造出凹凸表面的假象。全部这些技术都仅仅在特定情况下有效,而且在其起效时并非全都那么逼真。以下以凹凸贴图中较为先进的视差遮蔽贴图为例进行说明。

尽管它可以生成重叠的几何假象,可是它仅仅能在平面上以及物体内部起作用 (见上图)。真正的 Displacement Mapping (贴图置换) 不存在这些问题,可以从全部视角生成精确的结果。

更加平滑的人物

技术分享
无需艺术家手工输入,PN-Triangles 可实现游戏人物的自己主动平滑。几何与光照逼真度均可以得到提升。

细化算法是 Tessellation (曲面细分) 的还有一个自然搭档。细化算法可处理粗糙模型,借助于 Tessellation (曲面细分) 。该算法可创建外观更加平滑的模型。PN-Triangles (也称作N-patches) 就是一个流行的实例。PN-Triangles算法可以将低分辨率模型转化为弯曲表面,该表面然后可以被又一次绘制成由“高精曲面细分”的三角形所组成的网格。在当今游戏中,我们觉得理所当然的大量视觉假象都可以借助此类算法来消除。这些视觉假象包含人物关节处呈现块状图案、汽车轮子呈多边形外观以及面部特征粗糙。比如,《Stalker: Call of Pripyat》中就使用了 PN-Triangles 来生成外表更平滑、更自然的人物。

无缝的精细度

在具有大型、开放式环境的游戏其中。用户可能会注意到,远处的物体常常会时而出现、时而消失无。这是由于游戏引擎正在不同精细度 (LOD) 之间进行切换,以限制几何工作负荷。由于须要为同一模型或环境保存多个版本号的数据。所以直到那个时候,都还没有一种简单的方法可以连续改变精细度。

动态 Tessellation (曲面细分) 通过即时改变精细度。攻克了这一问题。比如。当远处的建筑物首次映入眼帘时,或许仅使用10个三角形来渲染它。随着用户视野的拉近,该建筑物的显著特征開始浮现,很多其它三角形则被用来描绘窗子和屋顶等细节。当你最终到达门口时,单单旧式铜质门把手一项就动用了一千个三角形来进行渲染;Displacement Mapping (贴图置换) 仔细地雕刻出了每一道凹槽。

由于消除了动态 Tessellation (曲面细分) 对象的时隐时现。因此游戏环境如今可以扩展至差点儿无限的几何精细度。

收放自如的艺术品

对开发商来说, Tessellation (曲面细分) 大幅提升了其内容创作流水线的效率。

在描写叙述其使用 Tessellation (曲面细分) 的动机时。Valve 公司的 Jason Mitchell 表示:“我们对可以编辑游戏内容这一点非常感兴趣,由于这样就让我们可以实现缩放了。

也就是说。我们想要仅仅制作一次模型,然后便可以将其提升至电影画质…反之。我们想要可以自然地减少游戏内容的画质,以满足在特定系统上实现实时渲染的须要。

”这种仅创建一次模型便可在各种平台上使用的能力意味着缩短了开发时间。对PC游戏玩家来说,这意味着在其GPU上可以实现最高的图像画质。

GeForce® GTX 400 GPU(图形处理器)怎样处理 Tessellation (曲面细分)

传统的GPU(图形处理器)设计採用单个几何引擎来运行 Tessellation (曲面细分) 任务。这个方案是相似早期的GPU设计,此类设计均使用利用单个像素流水线来运行像素着色。

在认识到像素流水线是怎样从一个单元发展为多个并行单元以及这一进展是怎样在3D逼真度方面大放异彩之后,我们便从一開始就设计了自己的并行 Tessellation (曲面细分) 架构。

GeForce® GTX 400 GPU (图形处理器) 拥有最多15个 Tessellation (曲面细分) 单元,每个单元都具备针对顶点拾取、 Tessellation (曲面细分) 以及坐标变换的专用硬件。

它们利用4个并行光栅引擎来进行运算,这些引擎可将新近曲面细分的三角形转换成精细像素流以便用于着色。这样一来, Tessellation (曲面细分) 的性能便实现了巨大突破。持久性能达每秒16亿三角形以上。与最快的同类产品相比,GeForce® GTX 480 的速度最高可达7.8倍。

这一数据由独立站点Bjorn3D所測得。

结语

经过多年的重复试验, Tessellation (曲面细分) 最终在PC上获得了成功。

《地铁 2033》等优秀游戏已经展现了 Tessellation (曲面细分) 的潜力。最终, Tessellation (曲面细分) 将成为同像素着色一样关键、一样不可缺少的技术。

由于意识到了 Tessellation (曲面细分) 的重要性。NVIDIA® 公司从一開始便打造并行 Tessellation (曲面细分) 架构,推动这一进程。

成果就是 GeForce® GTX 400 系列 GPU (图形处理器)—几何逼真度与 Tessellation (曲面细分) 性能的真正突破。

Tessellation (曲面细分) Displacement Mapping (贴图置换)

标签:

原文地址:http://www.cnblogs.com/gcczhongduan/p/5271230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!