曲面细分有必要?谈DX11对画质的影响
不知你是否还记得《大话西游》中紫霞仙子的本尊是什么?她和她的姐姐正是如来佛祖面前油灯中的两根灯芯,生生世世纠缠在一起,彼此脱离不了缠绕的命运,愈挣扎捆绑的愈紧,这就是宿命。正如游戏与DirectX的关系一样,相伴相生。
farcry中著名的DX9C HDR效果
在crysis中成名的DX10体积光
在过去的数年中,我们经历了数次具有革命性意义的DirectX版本升级,每一次的变换都带给我们更绚烂的游戏画面,都让我们更接近渲染真实的终极目标。特别是从DX9C开始,几乎每一次的版本升级,都会带来一个或几个让玩家牢记心中的核心级的技术进步,比如DX9C带来的HDR效果,DX10带来的体积光。玩家们甚至可以说,出现了HDR效果的就是DX9C游戏,出现了体积光的则是DX10游戏。
即使放在DX11快速普及的今天,DX9C和DX10依然被众多游戏开发厂商所采用,而且作品依然被大量玩家接受,上述这些图形技术核心亮点绝对是居功至伟的功臣。而现在以及未来相当一段时间内的绝对主角DX11能提供给我们什么有价值的图形核心技术,让我们有理由去认可它接受它,让游戏开发厂商对其不离不弃?
如同DirectX与游戏相生相伴一样,自DX11问世后,就有一个名词与其形影不离——Tessellation,或者我们更熟悉它的中文名:称曲面细分。应该说,在DX11的图形更新中最为重点的变革就是曲面细分技术的引用,套用之前DX版本与游戏的关系,凡出现了曲面细分效果的游戏,就是DX11游戏,反过来说,只有DX11标志性的曲面细分技术加持的游戏,才能称作真DX11游戏,否则只能说是套着DX11光环的滥竽充数之作。而这样的情况在之前也不少出现,如同样是DX10游戏,《Crysis》达到的画面效果才是真正的DX10,而大量号称DX10技术但画面质量甚至不如DX9C的作品,只能说是“伪”DX10。
正式由于曲面细分对于DX11和用户游戏体验的重要性,所以围绕着它产生了不少的口水与是非。但对于我们大量的普通用户和玩家而言,可能只看到吐沫横飞,隔空对骂,甚至还没弄明白曲面细分是个什么东西。或者说,用户对于一种技术到底是什么也没什么兴趣,更关心的是我升级到了DX11显卡,运行了DX11游戏,到底能从曲面细分技术上获得怎样的画质提升。简单的说,曲面细分是一种可以让游戏画面细节更丰富逼真,模型更圆滑真实的技术,而且其应用并不复杂,在DX11软件的开发中,很容易就可以使用,结合好效果+出众的画质提升能力,自然会成为真DX11游戏的核心标准。
实际上,我们所说的曲面细分的作用,只是机械的为一个多边形模型增加更多的多边形数量,这就是其核心内容,如果不加前后期控制,这样的技术对于提升图形效果起不到任何作用,对于性能反而还会起到负面影响。
之所以在DX11中,曲面细分会有改善画质的作用,我们通过一张DX11流水线图的观察就能发现其原因。在增加了Tessellator外,流水线前面还多出了Hull Shader后面还增加了Domain Shader两个模块,也就是说要想通过曲面细分获得图形效果提升,必须在曲面细分前后加以人工控制,不能任由其发挥。
对于Hull Shader、Tessellator、Domain Shader这三个新加入的单元的作用,上面这张图给予了较为明确的回答。Hull Shader主要负责定义细分等级(LOD)和相关控制点在细分中的“形变”趋势,这里的形变之所以加引号,是要说明这种形变仅仅是类似于曲率改变等小幅度的变化,而非大幅度的多边形位移;Tessellator则负责根据HS传输下来的信息,通过暴力增加多边形去实现HS的要求;Domain Shader负责的最重要的功能就是通过贴图控制的方式,实现模型的形变,也就是我们大家在DX11的细分曲面中看到的高细节画面。
通过上述的分析,大家应该可以得出一个结论,实际上细分曲面负责的仅仅是为后续的提升画质的运算提供物质基础,无论是置换贴图和平滑效果,都需要有大量多边形的存在才能实现。试想,如果开发者想在一个三角形上通过置换贴图实现一座城市的地貌效果,空有精美的置换贴图,区区三个顶点如何形变拉伸?巧妇难为无米之炊,但如果给你100000个顶点呢,事情就容易多了。
我们已经知道,曲面细分的作用是在原有模型上,将多边形数量大幅增加。一个原来只有100个三角形构成的模型,突然间被赋予了100000个三角形,游戏开发人员能如何利用这些多出来的免费资源?或者说,玩家如何看出100000个多边形的模型和100个多边形模型的区别?由于现在桌面级图形技术都是基于多边形建模原理,所以无论是四边形、三角形、圆形,还是任意形状,都是由数量有限的三角形构成的。这就导致我们经常会发现物体,特别是本应圆滑的物体出现生硬的边缘,即使粗看下是圆滑的边缘,在放大观察的情况下,也是由一条条直线连接而成,这都是因为多边形数量不足造成的。如果想要获得能欺骗视觉的圆滑效果,就必须将多边形数量提升到一定程度。
举个例子,现在不再火热但却更加风情万种的劳拉小姐,在《古墓丽影》第一代中出现的时候,全身都是“硬朗”风格的直线条,号称肌肉美女。但并不是游戏开发人员希望把劳拉变成史泰龙,而是在当时图形运算能力极为有限的情况下,多边形数量必须严格控制,否则游戏速度就不能得到保证。而在最新的《古墓丽影》版本中,由于硬件机能的极大提升,多边形已经不是游戏开发者值得顾虑的问题,劳拉又回归了最初设定的性感丰满,只是玩家的热情和游戏的素质不再了。
还有,当年最红的FPS游戏《Quake III Arena》,当我们把几何细节开到最高的时候,包括门洞等模型都将呈现出比较圆滑的过度,而当几何细节降低后,依然是丑陋的三角边。虽然id software给这种技术其了很拉风的名字,但实际内容还是通过更多的多边形去近似描绘圆滑表面。
DX11游戏大作《S.T.A.L.K.E.R:Call of Prypiat》中就充分了利用了曲面细分的这一特质,有效提升了游戏画质。
以上的几个例子都说明了一个问题,当多边形数量提升后,我们将会获得更平滑圆润的模型,而曲面细分正式能相当轻松的提供给游戏开发者数量极为庞大的多边形去使用,结果自然是让100个三角形的简陋模型变成了100000个三角形的圆润模型。玩家看到的图形效果也就获得了提高,这正是细分曲面提升画质的第一重作用。
同样还是那个由100个三角形组成的模型,同样还是免费的将它升级到100000个三角形,但是这个模型从劳拉变成了怪兽,我们不再需要圆滑,而是丰富可信的细节,这100000个多边形能有什么作用?很多用户都知道凹凸贴图(Bump Mapping)、法线贴图(Normal Mapping)等技术,可以通过贴图的方式提升模型的细节。但是这些贴图技术只是通过欺骗肉眼的方式模拟出细节,而且不能进行深度较大的视角偏移或者拉近观看,否则很容易看出破绽,因为它们都不能对模型本身做任何处理,可以说是光影的欺骗术。
而通过曲面细分技术产生的数量巨大的多边形,就给了模型一个“重生”的机会,以为更多的顶点可以通过人工控制的方式实现真实的顶点位移,直接对模型的外形产生影响,让模型具备真实可信的细节。而利用这大量免费多边形产生模型顶点位移的技术就被称作置换贴图(Displacement Mapping)。
置换贴图是通过一张深度贴图(实际上可以理解为一张黑白贴图,通过黑白深浅的不同来确定对应的顶点的偏移量),来控制通过曲面细分产生的大量顶点,制造出实际的模型位移,使得模型的细节大幅提升,明显改善画面质量。从实际的意义和效果上说,这将远比简单的平滑模型来的更重要,对于画面的改善效果也更明显。
举个例子来说明更容易理解。以目前被广泛使用的DX11测试软件《Heaven》而言,在开启曲面细分后(实际上是开启了曲面细分+置换贴图的组合),画面的细节程度被极大的提升了,无论是地砖的沟槽还是红龙身上的褶皱骨骼细节,都被细致的描绘了出来,而且由于是通过对模型顶点的位移操作,这些多出来的细节还能产生真实的阴影等效果。反观在关闭曲面细分选项后,一切归于平静,城市不再华丽,红龙也不再威严。
在另一款标杆性DX11游戏《Stone Giant》中,通过曲面细分+置换贴图达到了的画质提升同样非常显著,整个场景的细节程度获得大幅加强,让画面更加逼真。
置换贴图由于需要大量的顶点去进行位移,所以需要模型具备足够数量的多边形,而曲面细分做的事情也正是如此,这也就成为了它提升画面质量的第二重作用。
细分曲面另外一种提升画质的方式是通过置换贴图实现的,而这里就需要大量的后期控制,也就是说在大量顶点生成后,通过什么方式去控制这些新增加的顶点形变,以期达到我们想要的增加模型细节的目的。实际上,控制新增加顶点形变的手段并不只有置换贴图一种方式,只不过它是被用到最多也相对来说比较容易的,所以我们在前文中一直是用“置换贴图”来表述形变控制。大体而言,形变控制除了用置换贴图外,还可以使用程序控制的方式。
由于通过细分曲面新产生的大量新顶点都是实际存在的,也就是都有三维空间坐标,通过一定程序的制定,就可以控制这些坐标进行位移,如果说通过贴图控制是静态的,那通过程序控制就是动态的,因为在程序中我们可以加入很多种变量,让顶点呈现不断的变化,比如说水面或者飘动的旗帜。
通过Occean technology demo这个测试可以非常明显的观察到,打开曲面细分技术,并且调节细分级数的不同,海面将呈现出明显不同的变化。特别是当级数提升后,海面的细节就变得极为丰富逼真。实际上去控制海面变化效果的程序代码是一样的,但是由于可控制顶点数量的不同,所以呈现出来的效果也就出现了不同,这就是曲面细分在这里发挥的作用。
实际上,在DX11曲面细分技术出现之前,这类效果就已经开始被使用了。在目前依然顶着最强画质头衔的《Crysis》中,Crytek2引擎就采用了一种叫做Screen-Space Tessellation的技术,实际上就是通过程序去控制大量的曲面细分顶点制造出逼真的海洋效果,再配合游戏本身出众的光影技术,使得效果更佳逼真。
与流体表面相类似,通过曲面细分技术,我们还可以得到更加真实的其它物理运算效果。以上两张图分别表现了一个经过曲面细分处理后的旗帜和人类头发的效果,它们都拥有了更自然顺畅的飘动效果。这就是当顶点数量增加后,通过重力场、风场等物理程序控制的效果更佳连贯的结果。
虽然通过程序控制顶点形变效率很高,但是这种效果只能适用于无序、大面积的场景中,比如像海洋这样的自然地貌。如果需要针对特定的模型,进行特定的控制,比如说游戏人物,我们还是要动用前面说过的置换贴图技术。而置换贴图本身实际上又可以分为两种不同的方式去操作。所谓的两种方式,实际上是指用以置换的贴图获得方式的不同,这对于用户而言是不可见的差别,但对于游戏开发商而言,就存在难以的差别。
第一种方式,实际上在早前的一些游戏引擎的介绍中,已经讲述过很多次,只不过当时我们谈论的不是置换贴图,而是法线贴图。就是在游戏开发的前期,模型师就建立一套高细节的模型,然后通过“烘焙(BAKE)”的方式将这些细节信息保存成一张置换贴图,然后在游戏中通过这张贴图的信息去控制曲面细分出来的数量众多的顶点。实际结果就是一个低多边形模型通过曲面细分+置换贴图达到了与高细节模型相同的效果。
这种方式可以获得效果非常好的的置换贴图,但开发商要在前期建立一个高细节模型,其开发成本实际上并没有太多的降低。不过随着像ZBrush这类建模软件的成熟,制作一个高细节模型也并不是什么太复杂的事情了。以上是《虚幻3》中的法线贴图制作流程,实际上和置换贴图的制作过程一样。
第二种方式,就让游戏开发商非常省心省力了,因为根本就不用制作专门的置换贴图,这样就节省了大量的开发成本和开发周期。
我们都知道一般模型至少会有一张色彩贴图,而色彩贴图中的Alpha通道所包含的信息,就可以直接当作置换贴图使用,当然如果利用凹凸贴图去做效果会更好一些。上图就是利用专业图形软件MAYA去简单展示的利用色彩贴图中Alpha通道信息去控制顶点的效果。
当然,这种贴图本身所包含的信息并不是针对顶点位移控制建立的,所以在精度上不是很高,用来对人物模型使用可能并不合适。但对于场景,比如像《Heaven》中的地砖、墙壁等部位使用就非常合适了,其效果与专用的置换贴图相差无几。
在热门空战游戏《HAWX2》中,大范围的地形细节变化也充分体现了通过贴图控制曲面细分达到良好置换贴图的效果。我们在如上两张游戏运行对比图中可以清晰的看出,在开启与关闭曲面细分状态下,画质呈现的巨大差异。我们曾经抱怨空战游戏只能远观不可亵玩,除了飞机本身精致外,其它场景都只是简陋的贴图,而当曲面细分技术加入后,空战游戏将因此发生巨大呃画质飞跃。
我们选择两款目前流行度很高的DX11游戏对曲面细分在游戏中的作用和速度进行了简单的对比分析。《Lost Planet2》是一款具有光荣传统的游戏大作,在DX10时代就以率先支持DX10技术而著称,在DX11时代已然延续了对技术快速提供支持的风格,率先利用了DX11及曲面细分效果,使得游戏画面再次获得提升。
首先我们通过一个简单的GIF动画来对比DX9C和DX11(曲面细分)模式下游戏的不同画质。同帧的切换非常直观,在DX11模式下,画面细节得到了惊人的展现,这也充分展示了曲面细分增强画质的能力。而DX9C模式下整体画面也算不错,但和DX11模式比较高下立判。
DX11(曲面细分)对于画质的提升作用在真实游戏中得到验证,但酣畅淋漓的游戏体验除了速度外更需要速度加以保证。我们首先基于NVIDIA GTX480显卡在DX9C和DX11模式下的帧速曲线进行对比。通过对比可以看到,在开启DX11模式后,游戏整体帧速受到一定影响,但还在流畅级以上。最重要的是,曲线的波动性是发生了根本性的变化,在DX11模式下,帧速曲线波动明显受到DX11特效(曲面细分)使用多寡产生了几个明显波峰波谷,波峰处说明特效使用较少,波谷处则较多。而我们知道,游戏的流畅度与平均速度和最低帧速都有关系,当DX11曲面细分特效使用较多时,极有可能出现游戏的最低帧速情况,这就考验显卡的DX11曲面细分能力是否给力,而NVIDIA显卡在这方面一直有业界最顶尖的性能水准。
单单一款显卡的比较不足以说明问题,我们还拉来了AMD HD5870显卡进行对比。我们对比的是在DX9C和DX11两种模式下两款显卡的性能差异。从柱状图中可以看出,如果在DX9C模式下,HD5870与GTX480的性能差距并不大,可以说两者旗鼓相当,但换作DX11模式下,GTX480的领先幅度迅速拉大。
另一款DX11新进大作《HAWX2》,也同样可以说明在DX11模式下,NVIDIA真DX11架构显卡拥有更出众的效能表现,更能适应DX11模式下的游戏运行需求。
从数据对比中可以得出结论,NVIDIA当前的DX11图形架构,对于包括曲面细分在内的DX11图形特性更有针对性的进行了设计,所以更适合与DX11游戏的运行,是全新的DX11架构产品,而不仅仅是一张在DX9C上简单加入了DX11支持的显卡。对于用户而言,买DX11显卡,当然是为了玩爽DX11游戏,而不是当作一张DX9C显卡获得数年前的游戏效果。
通过过往的大量测试,我们已经证明了在这场DX11大战中,或者说曲面细分大战中,NVIDIA显卡拥有同代产品中最为优秀的曲面细分性能,而且是大幅度超出,在诸如《Stone Giant》、《Heaven》、《Lost Planet2》、《HAWX2》等真DX11游戏或测试中取得了明显超越对手的性能表现。也正是由于NVIDIA在DX11曲面细分的出色表现,使得竞争对手再次推出了新一代GPU产品,其最大最为重要的改进就是加强硬件曲面细分技能,力求在越来越多的DX11游戏中获得更良好的表现。但NVIDIA GeForce400及500系列在核心架构上先天的优势,即使面对对手新一代产品竞争,依然保持DX11性能的领先。
通过这篇文章,我们尽量希望通过简单的语言描述,为大家去讲解DX11中曲面细分的作用和意义,以及对于用户而言可以获得哪些实际的画面提升感受,并针对这些技术是否容易被开发商采用而广泛的出现在更多的游戏作品中。
相信大部分读者已经认同,曲面细分是一项很优秀的技术,但是曲面细分实际上只是一个中间过程,并非我们最后看到的结果。曲面细分产生的大量多边形,在人为控制下产生的各种形变才是改善画面质量的根本因素,这是一个相辅相成的过程。
对于开发商而言,一款好技术如果不容易使用,也会被抛弃。而在我们分析的几种情况下,曲面细分实际上都还算是容易使用的,而且在之前开发商通过其它同类相关技术已经积累了不少经验,相信在未来的游戏中我们会越来越多的看到由曲面细分技术为我们带来的惊艳视觉效果。
大家来找茬
真DX11曲面细分游戏效果
无DX11曲面细分游戏效果