当厂商以及用户开始神话曲面细分的时候,可能它自己都没想到能有这样出人头地的一天。实际上曲面细分也是DX11收编的“散兵游勇”。
曲面细分最早出现在专业领域,在蛰伏了多年后,终于被AMD引入到PC图形技术中,通过R600系列的发布,见诸于桌面图形市场。但由于没有微软给予的官方身份,专属性太强,无论是其它图形核心生产厂商,还是游戏开发商,都很难也不愿意去跟进这样的技术。幸好AMD为微软打造的XBOX360图形核心Xenos采用了它,由于主机市场的封闭性,所以XBOX360的大量游戏中都采用了曲面细分技术,微软亲自体验到了它的好处,并终于在DX11中收编,通过自己的标准强势推广,否则还真不知道它要在边缘徘徊多久。
实际上,我们所说的曲面细分的作用,只是机械的为一个多边形模型增加更多的多边形数量,这就是其核心内容,如果不加前后期控制,这样的技术对于提升图形效果起不到任何作用,对于性能反而还会起到负面影响。
之所以在DX11中,曲面细分会有改善画质的作用,我们通过一张DX11流水线图的观察就能发现其原因。在增加了Tessellator外,流水线前面还多出了Hull Shader后面还增加了Domain Shader两个模块,也就是说要想通过曲面细分获得图形效果提升,必须在曲面细分前后加以人工控制,不能任由其发挥。
对于Hull Shader、Tessellator、Domain Shader这三个新加入的单元的作用,上面这张图给予了较为明确的回答。Hull Shader主要负责定义细分等级(LOD)和相关控制点在细分中的“形变”趋势,这里的形变之所以加引号,是要说明这种形变仅仅是类似于曲率改变等小幅度的变化,而非大幅度的多边形位移;Tessellator则负责根据HS传输下来的信息,通过暴力增加多边形去实现HS的要求;Domain Shader负责的最重要的功能就是通过贴图控制的方式,实现模型的形变,也就是我们大家在DX11的细分曲面中看到的高细节画面。
通过上述的分析,大家应该可以得出一个结论,实际上细分曲面负责的仅仅是为后续的提升画质的运算提供物质基础,无论是置换贴图和平滑效果,都需要有大量多边形的存在才能实现。试想,如果开发者想在一个三角形上通过置换贴图实现一座城市的地貌效果,空有精美的置换贴图,区区三个顶点如何形变拉伸?巧妇难为无米之炊,但如果给你100000个顶点呢,事情就容易多了。
实际上,从用户的角度讲,这一段的内容并不重要,从曲面细分上获得什么样的快乐才是他们关心的,而非原理。