绕开各种水坑
文字写到这里,相信大家应该明白,曲面细分技术确实可以帮助用户获得更好的画面质量,简单的说是个有用实用的好技术,但是很多好技术,由于在实际运用中遇到了种种问题,最后也是无疾而终。曲面细分是否也会遇到同样的问题而夭折呢?特别是对于游戏开发商而言,一个技术是否容易被使用才是他们更关心的。容易使用和好效果之间,开发商往往选择前者,特别是PC游戏开发商,大部分都是在工期+预算的双重压力下赶工,好用可能是他们评价一种新技术的唯一标准,因为你不能指望到处都是暴雪,到处都是山内一典的《GT5》。
前文我们明确了曲面细分能带给来的两种提升画质的方式,在下面的章节中我们将分开阐述这两种方式中可能遇到的问题,以及曲面细分能否解决或者如何解决。
从容易使用的角度看,曲面细分自动生成大量的多边形数量去实现模型的圆滑效果,这个对于开发人员而言应该是非常容易使用的,所以开发商接受起来并不难。
但是这里产生了一个很有趣的问题,由于产生多边形是自动的,可以说产生圆滑效果也是自动的,如何控制哪里不产生圆滑效果反而是开发人员需要考量的问题,看似可笑,实际上这样的问题确实存在,并且扼杀过一些曲面细分的早期版本。
如果是对于显卡发展比较了解的用户可能会记得AMD在RADEON 8500时代推出的Truform技术。实际上这也是一种曲面细分技术,只不过它仅仅是只能自动生成多边形而已,缺乏相对应的控制手段。在AMD的演示中,Truform确实可以把一些看起来见棱见角的模型进行优良的圆滑处理,但在实际游戏中,这种“地毯式”的圆滑处理就暴露出了问题。
当时最知名的Truform BUG就是在《英雄萨姆》中,将本开线条硬朗的机枪“圆滑”了,使得我们的英雄端着一把很有喜感的圆肚冲锋枪周旋于满屏幕的怪物中。也正是由于这个原因,Truform失败了。
而DX11中的细分曲面技术,在开发阶段就已经看到了前人翻船的水坑,最大限度的避免同类问题发生。这也就是在DX11渲染管线中不仅仅增加了Tessellator单元,还在之前加入了Hull Shader的作用。Hull Shader作为一个控制器,可以根据开发者的意图,去判断哪里需要增加多边形达到圆滑的效果。
这种判断实际上也并不困难。在细分曲面出现前,一个多边形数量不高但又需要圆滑效果的模型,一般都是用软边(Soft Edge)、硬边(Hard Edge)的方式去实现。实际上,也就是通过对发现的操作达到圆滑显示的效果。
我们可以通过上图去说明这是如何实现的。同样的一个模型,多边形数量并不多,左侧的模型进行了软边处理,使得模型看上去圆滑了很多;右边的是原始的,或者说是硬边处理的模型,能清楚的看到模型上的棱角。
在很早以前,游戏中就已经采用了这种技术,而软边和硬边的操作在法线上是不同的,而Hull Shader就可以根据程序员的指令去判断这种差异,并告知Tessellator该为哪个模型或者模型的哪个部分去进行曲面细分,从而达到可控圆滑模型的效果。可控性成为了DX11曲面细分胜于之前同类技术的关键。
模拟逼真自然场景
细分曲面另外一种提升画质的方式是通过置换贴图实现的,而这里就需要大量的后期控制,也就是说在大量顶点生成后,通过什么方式去控制这些新增加的顶点形变,以期达到我们想要的增加模型细节的目的。
实际上,控制新增加顶点形变的手段并不只有置换贴图一种方式,只不过它是被用到最多也相对来说比较容易的,所以我们在前文中一直是用“置换贴图”来表述形变控制。大体而言,形变控制除了用置换贴图外,还可以使用程序控制的方式。
由于通过细分曲面新产生的大量新顶点都是实际存在的,也就是都有三维空间坐标。通过一定程序的制定,就可以控制这些坐标进行位移。如果说通过贴图控制是静态的,那通过程序控制就是动态的,因为在程序中我们可以加入很多种变量,让顶点呈现不断的变化,比如说水面或者飘动的旗帜。
通过Ocean Demo这个演示程序可以非常明显第观察到,打开曲面细分技术,并且调节细分级数的不同,海面将呈现出明显不同的变化,特别是当级数提升后,海面的细节就变得极为丰富逼真。实际上去控制海面变化效果的程序代码是一样的,但是由于可控制顶点数量的不同,所以呈现出来的效果也就出现了不同,这就是曲面细分在这里发挥的作用。
实际上,在DX11曲面细分技术出现之前,这类效果就已经开始被使用了。在目前依然顶着最强画质头衔的《Crysis》中,Crytek引擎就采用了一种叫做Screen-Space Tessellation的技术,实际上就是通过程序去控制大量的曲面细分顶点制造出逼真的海洋效果,再配合游戏本身出众的光影技术,使得效果更佳逼真。
AMD在演示HD5000系列的曲面细分效果时,展示了一个经过曲面细分处理后的旗帜拥有了更自然顺畅的飘动效果。这就是当顶点数量增加后,通过重力、风等物理程序控制的效果更佳连贯的结果。
《起源》总算是为《真·三国无双》这个ip做出了试探性尝试的第一步。
《街头篮球》这款游戏实在承包了很多玩家的青春。
好久没看到这么直白的文字了。