无论DX11何时上位,微软以及AMD对于tessellation(分块处理功能)的热情似乎都不会减退。AMD很久之间就开始使用tessellation技术了,而现在,这种技术也许对于像XBox 360类似的主机游戏平台才有意义。通过新增固定功能硬件,迅速有效的处理一些可能提升显存占用率的任务方法,对于常常在客厅上网的朋友而言具有很大的优势。到目前为止,我们依然没有说服相关方面在台式PC中加入tessellator技术,但是有谁去争论这样做到底是不是一种进步呢?
或者说,tessellation技术是不是真的很先进、是不是一种进步呢?我们知道,tessellator本身是一种固定功能模块,而不具备可编程性。tessellator的输入和输出从一定程度上讲也可以通过Hull Shader以及Domain Shader模块来操作。Geometry Shader(GS,几何着色渲染)是管线中一种可编程性模块,尽管这种管线不仅兼具tessellation功能,而且还具备其他功能,但是GS却不能在任何一个有用的范围内执行tessellation操作。在渲染管线中大举向可编程性进军基本上已经成为业界的前进方向,而现在我们却后退了一步,为什么会这样呢?
固定功能硬件与可编程硬件之间的争论,一直主要是性能对特性以及性能对实用性孰重孰轻的问题。起初,固定功能模块对于硬件性能的高低至关重要。随着时间的推移,人们开始认识到在绘图芯片中植入固定功能模块根本不切实际。比如说,如果开发者不能编出一套能充分挖掘硬件性能的程序的话,在这种硬件中加入再多的晶体管也是徒劳的。这就促使开发者们设法在核心架构上做文章,让这种架构不断扩展运算源,这种运算源可以被共享,而且可以被大量不同的任务采用,但是这并不意味着固定功能硬件就失去了存在的意义。
现在我们依然面临着一个问题:除非开发者能够尽可能的挖掘硬件的潜力,否则在tessellator中加入晶体管是没有用的。但是让其有意义的理由是:如果开发者可以充分利用硬件的话,ROI(投资回报比)是非常高的:这样可以轻松的从一种固定功能硬件tessellator中获得巨大的tessellation性能,这样做要比把必要的资源加入几何渲染单元以便获得同样的可编程tessellation性能要来得容易。当然了,这并不意味着我们将会看到固定功能模块可以在绘图硬件中出现“文艺复兴”的状况,因为这一先进的特性如果要继续向前发展的话,这一特性早期应用就得以牺牲可编程性能为代价。目前,绝大部任务将会继续以灵活的编程性途径处理,而且在不久的将来,我们可能看到tessellator将会加入越来越多特性,直到tessellator具备完全的可编程性。
以上所有这些关于固定功能tessellation的技术性评价并不代表我们就对tessellator的优势漠不关心。现在让我们来了解一下tessellator的优势。目前,美工需要做的就是为某一物体的不同LOD(Level of Detail,随着物体或近或远的移动,物体的复杂性降低或者增加)制作不同的图像,而每个LOD里通过纹理渲染的几何模拟由像素着色器负责。这样的话,对于美工和编程人员而言就有了额外的工作要做,而且会在性能方面下很多功夫。
Tessellation是创造更多纹理细节、阴影以及平滑边缘的几何图形的最佳途径之一。而且,高级几何图形同时也需要真正的、完美的位移贴图。当前,大部分几何图形都是通过纹理渲染和某些诸如凹凸贴图、视差贴图之类的技术模拟实现的。即便是高质量几何图形,我们还是想用大量的普通贴图技术,以便可以利用光学算法,但是这样的话,使最终画面出现裂缝、爆炸、山脊等效果就变得不那么难了。这是一种快速、有效的方案,而且还可以产生非常细微的图像效果,并解放像素着色器资源以供他用。在tessellation技术的帮助下,美工便可以创造出一个细分表面图像,这种细分表面图像具有一个动态的LOD;将一个简单的hull shader单元以及一个移位贴图应用到domain shader单元的话,不仅可以减轻相关的工作负担,而且还可以提升画面的质量,促进性能提升。
如果开发者们采用tessellation技术的话,我们可以看到非常酷的效果,而且随着DX11标准的临近,NVIDIA以及AMD最终将会从tessellation技术中获益。但是,渴望开发者们立即开始采用tessellation技术(或者CS技术)是不现实的,因为DirectX 11将会在低一等级的硬件上运行,而且DX11发布之后,市场上将会存在大量可支持DX11子集(DX10.1以下)的硬件产品,将来首款DX11游戏完全可能在DX10上硬件运行。