● 框架,脚手架,骨架,随便你怎么叫它
作为流水线的起点,多边形的生成是整个图形过程的起点。当顶点信息被送入流水线之后,硬件需要根据需求将顶点“连起来”变成多边形。完成这个工作的,就是我们所说的几何处理单元或者说几何引擎。生成顶点的工作一般都是由CPU来完成的,所以当固定数量的顶点被泵送到流水线之后,决定整个图形渲染效率的第一关就出现了,那就是几何引擎的效率。
相比于后面我们要面对的环节来说,几何引擎的意义描述以及其效率的衡量标准要简单很多。更多的多边形有助于模型细节的细腻表现,而在顶点数一定的前提下,谁能够在单位周期内将更多的顶点绘制成多边形,谁的效率就更高。虽然伴随着着色器的发展,几何引擎中出现了诸如Domain Shader、Geometry Shader甚至是Hull Shader之类的单元,但是本质上来讲几何引擎依旧是以输出多边形为最根本任务的。
GPU经过十余年的发展,其本身的处理能力有了飞跃式的进步。但作为整个GPU最前端的单元,几何引擎的发展却一直不如GPU的其他部分来的迅猛。究其原因其实非常简单——作为图形过程的起点,构成多边形的顶点是由CPU生成的。
相比于GPU爆炸式的规模增长,CPU的发展明显更加缓慢。受限于频率压力、单位流水线效率压力以及摩尔定律导致的规模压力,CPU在过去几年里不得不向并行化方向去发展。但是长久以来一致困扰数学界的任务的无损拆解和网格化又成了限制CPU向并行化方向发展的重要因素。来自材料学,逻辑电路设计甚至是纯数学领域的压力使得CPU的发展举步维艰。
“得益”于“上级单位”的缓慢,长期以来GPU的几何引擎部分压力都不是很大,甚至自支持DirectX 10的GPU开始,几何引擎的多边形输出能力相对于CPU能够输出的顶点来说竟然已经到了绝对过剩的地步。因此在DirectX 11出现之前,不论是AMD还是NVIDIA,大家的几何引擎都没有值得大书特书的能够产生对效率起决定性影响的设计差异。