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 (贴图置换)的更多相关文章

  1. tessellation 曲面细分 on Android

    Mac OS X 10.8 (OpenGL 3.2), MacOSX 10.9 (OpenGL 3.2 to 4.1) Windows with NVIDIA since 2006 (GeForce ...

  2. 【ZZ】 移位贴图 Displacement Mapping

    http://blog.csdn.net/huazai434/article/details/5650629 说明:该技术需要VS3.0的支持!!! 一,移位贴图类似于地形渲染.不过由于移位纹理可以做 ...

  3. Unity3d 使用DX11的曲面细分

    Unity3d surface Shaderswith DX11 Tessellation Unity3d surface shader 在DX11上的曲面细分 I write this articl ...

  4. 置换贴图 Displacement Mapping

    视差贴图和法线贴图都是使用特定的手段来达到欺骗视觉的目的,让人以为物体的表面是凹凸起伏的.而置换贴图却是真的将模型的顶点进行偏移,在原本的平面上创造出凹凸的效果.既然是对顶点进行偏移,那么就需要模型有 ...

  5. DirectX11 With Windows SDK--33 曲面细分阶段(Tessellation)

    前言 曲面细分是Direct3D 11带来的其中一项重要的新功能.它引入了两个可编程着色器阶段以及一个固定的镶嵌处理过程.简单来说,曲面细分技术可以将几何体细分为更小的三角形,并以某种方式把这些新生成 ...

  6. 【ZZ】 DShader之位移贴图(Displacement Mapping)

    http://www.myexception.cn/other/1397638.html DShader之位移贴图(Displacement Mapping) www.MyException.Cn   ...

  7. 3DShader之移位贴图(Displacement Mapping)

    我们知道法线贴图是只是改了物体的法线属性,用来计算光照,但是并没有改变物体本身的网格.但是移位贴图就不一样了,它会移动物体的顶点.我用移位贴图做了个海洋,好了,上了图再讲: 注意看海的边缘的顶点,已经 ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段 代码工程地址: https://github. ...

  9. Displacement Mapping

    [Displacement Mapping] Displacement Mapping(移位贴图). Normal maps的另一个应用是displacement mapping,在这个应用中,细节的 ...

随机推荐

  1. [git 学习篇]删除文件

    1 现在本地文件管理器删除了readme.txt(这个readme.txt已经在创库存在的) rm -rf readme.txt 2 此时git status查看 $ git status # On ...

  2. [git 学习篇]git管理的是修改,并非文件

    你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git管理的 ...

  3. 【Luogu】P1486郁闷的出纳员(Splay)

    题目链接 名副其实的调了一下午…… 每做一道题都是对我那不规范的Splay代码的刀刻斧凿一般的修正啊…… Splay.如果有一批员工不干了,那就找还能干的薪水最少的员工,把它splay到根,删除它的左 ...

  4. 如何在c#代码中执行带GO语句的SQL文件

      需要在C#代码中执行一个SQL文件的内容.遇到了两个问题: 1. 因为SQL文件中有"GO"语句,执行时报错"Incorrect syntax near 'GO'.& ...

  5. HDU——1982Kaitou Kid - The Phantom Thief (1)(坑爹string题)

    Kaitou Kid - The Phantom Thief (1) Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/327 ...

  6. 刷题总结——(一道很妙的题)Resistance(ssoj 欧几里得 )

    题解: 题目背景 151006 T1 题目描述 Picks 喜欢电路.这天他在研究元电路的时候,需要一个阻值为 (p/q)Ω 的电阻,然而他家中只有一大堆电阻为 1Ω 电阻.由于技术问题,Picks  ...

  7. 反射+注解:excel2module

    package test.excelTest; import java.io.File; import java.io.FileInputStream; import java.lang.reflec ...

  8. [转] Makefile 基础 (10) —— Makefile 后序

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...

  9. 挑战程序设计2 KD树

    Range Query - Range Search (kD Tree) Time Limit : 1 sec, Memory Limit : 262144 KB Japanese version i ...

  10. 古代猪文 BZOJ 1951

    古代猪文 [问题描述] “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...