用的明白!探索DX11游戏画质提升根本
DX11什么功能带来更细腻画质?
每一代DirectX API的升级或者游戏引擎的升级都会带来游戏画质提升,而其中DirectX API的升级会具有更广的应用性。而在DirectX 11 API上除了前文介绍的HDAO技术外,我们还应该了解另外两个技术,它们分别是Tessellation和Order-Independent Transparency,中文字面意译就是镶嵌细面曲分技术和顺序无关半透明技术。
那么二者又有何作用呢?
● Tessellation镶嵌细面曲分技术
我们知道,3D渲染简单来说就是一个建立三角形的过程,三角形越多越小渲染出来的结果就会越细致,人眼识别起来就更真实。不过在现有人力和硬件资源上,并不能为了获得更细致的画面而过分损耗编程人员和硬件资源,所以一种能够自动处理并且相对以前硬件架构有质的改变才能有效实现更高画质的梦想。
Tessellation带来更细腻的画质
Tessellation就这样应运而生,首先图形核心架构从原来像素、顶点等Shader转变为统一架构的流处理器,这样就能够最大化应用图形核心的并行计算能力优势;而Tessellation能够在编程人员仅勾勒出简单轮廓后,自动镶嵌细化三角形模型。上图就能让我们最直观的感受Tessellation的优势。
下面我们就以目前仅有的DirectX 11 API测试软件《Heaven Benchmark》截图为例,视觉区别一下启用Tessellation的画质提升。
《Heaven Benchimark》开启Tessellation
《Heaven Benchimark》关闭Tessellation
上面两副图中,也许缩略图不能一下分别出差距,笔者建议点击放大后观察较为容易。其实如果仔细看,龙的身体和房屋的瓦片开启Tessellation前后差距最为明显。
《Heaven Benchimark》开启Tessellation
《Heaven Benchimark》关闭Tessellation
上面两副图的效果差异非常明显,石路和石桥上的石块凹凸感明显是在开启Tessellation后更具立体感。
DirectX 11提供的Tessellator单元本身不具备可编程性,因此DirectX11向Tessellator单元输入或者从中输出的过程是通过两个传统的管线阶段完成的:Hull Shader (HS,外壳着色器)和Domain Shader (DS,域着色器)。Hull Shader负责接收琐碎的图形数据和资料,而control points将会基于如何配置Tessellator来产生数据。可以说,Tessellator就是一个固定功能模块,用来处理一些基于一定参数的输入数据。最后Domain Shader将会接收由Tessellator产生出的点,并依照终点控制(control points)置换贴图将这些点形成一个合适的几何图形。
● 什么是HDAO?和SSAO有何关系?
在HDAO和SSAO中,"AO"为Amblent Occlusionde的缩写,中文译为环境光遮蔽。在DirectX 10.1 API推出后,Amblent Occlusionde升级为SSAO;而在微软推出DirectX 11 API后,SSAO升级至HDAO。
其实现有采用统一架构的图形核心都能实现环境光遮蔽效果,仅是SSAO在DirectX 10.1引入后,得到了更优的代码/函数能够更有效的实现环境光遮蔽效果,例如支持DirectX 10.1的图形核心和仅支持DirectX 10的图形核心在处理同一画面,前者较后者有10%以上的效能提升。而DirectX 11引入的HDAO,相较SSAO和AO又有了效能提升。了解了AO、SSAO、HDAO之间的关系后,让我们看一下实际有效效果。
1:1细节对比(每组对比 左侧为AO开启 右侧为AO关闭)
首先,也许很多网友对比完图片后感觉并没有明显区别,笔者需要提醒大家本页图片最好点击放大后对比;其次,也许很多网友点击放大后确实发现了区别,不过还会有很多反对的声音,例如“升级显卡为了这么一点提升不值”,但是笔者需要说的是每一代产品、每一代API的升级画质都是一个循序渐进的过程,这种积少成多的画质量变才能引起画质的质变。a