曲面细分有必要?谈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个顶点呢,事情就容易多了。