What is Fermi?(6)

 

全新的PolyMorph引擎

DX11当中的重大改进莫过于Tessellation(曲面细分)技术了,而转换到GF100核心上之后,就是PolyMorph Engine(多形体引擎)。NVIDIA的PolyMorph引擎的作用有些类似于ATI HD5870显卡当中的Graphics Engine(图形引擎),两者之间的区别在于HD5870显卡上仅有一组Graphics Engine(图形引擎)来进行曲面细分,而GF100当中,每个SM阵列当中均有一组PolyMorph引擎,且每四个PolyMorph引擎还拥有一组Raster Engine(光栅引擎)。

在我们介绍PolyMorph引擎之前,我们有必要先来了解一下GPU在几何运算方面近年来的进展以及PolyMorph引擎与Raster引擎之间的关系。

 

DX11大幅提升几何性能

在DX11之前,GPU几乎很少有对几何处理能力大幅提升的产品,即使从NVIDIA的GeForce FX 5系列产品说起,到GeForce GTX280,GPU的几何性能增长不过3倍。而从GTX280到GTX480,NVIDIA表示将会获得8倍的性能提升。这其中,DX11最新提出的Tessellation技术就是让几何性能成倍增长的关键所在。

Imp

Tessellation技术能够允许GPU自行生成三 角形(在一定的条件下),并且部分情况下能够让三角形的密度比普通情况高出数十倍,以达到精细画面的情况。与此同时,光栅化单元的工作压力也就会随之而来,为此NVIDIA特意重新着手GPU整体的设计思路。NVIDIA为了提升Tessellation的效能,避免Tessellation成为整个图形运算的平静,为每组SM阵列当中均加入了一个PolyMorph引擎,同时为了保证光栅单元的效能,在每个GPC中均设有一个光栅引擎(也就是四组PolyMorph引擎共用)。

 

PolyMorph引擎

PolyMorph Engine(多形体引擎)当中包括了五个主要部分,分别为:Vertex Fetch(顶点获取)、Tessellator、Viewport Transform(视口转换)、Attribute Setup(属性设定)以及Stream Output(流输出)。

PolyMorph

PolyMorph引擎执行步骤:

1.从一个全局顶点缓冲区中获取顶点,随后发送至SM,以进行顶点着色以及外壳着色。将每个顶点从物体空间转变成了世界空间(本页第一幅图片最左边的形态),而且还算出了Tessellation所需的参数(例如Tessellation系数,简单理解就是:将一个三角形重新划分为多少个三角形)。Tessellation系数(或LOD)被发送至Tessellator。
2.PolyMorph引擎重新在SM当中读取Tessellation系数。Tessellator将修补面(控制点网格所定义的光滑表面)分成三角形并输出许多顶点。修补(u、v)值定义了网格以及形成网格的连接方式。全新的顶点再次发送至SM,域着色器(Domain Shader,简称DS)与几何着色器(Geometry Shader,简称GS)均在这里执行。DS能够根据外壳着色器(Hull Shader,简称HS)与Tessellator的输入来运算每个顶点的最终位置(本页第一幅图片中间的形态)。在本阶段中,通常会附上一个Displacement Mapping(贴图置换)以提升修补面的细节表现。几何着色器能够执行任何后期处理、按需增加或删除顶点以及基元。
3.PolyMorph引擎会执行视口转换以及视角校正。
4.接下来就是属性设置,把后期观察口顶点属性转变成了平面方程,以进行高效的着色器评估。
5.将顶点“流出”至存储器,使其能够用于更多处理。

PolyMorph引擎的执行大致分为这五个阶段,并且每一个步骤完成之后,都会交由SM进行处理,处理完毕,结果将自动进PolyMorph引擎的入下一个流程处理,当五个步骤全部执行完毕,就会交给下面的Raster引擎。

posted @ 2010-04-22 15:46  芈希有  阅读(263)  评论(0编辑  收藏  举报