输入装配器 (IA) 阶段

输入装配器 (IA) 阶段向管道提供基元和邻接数据,例如三角形、线和点,包括语义 ID,以减少对尚未处理基元的处理,从而提高着色器的效率。

用途和用法

输入装配器 (IA) 阶段的目的是从用户填充缓冲区读取基元数据(点、线和三角形),并将数据装配成将被其他管道阶段使用的基元,并附加系统生成的值,以帮助提高着色器的效率。 系统生成的值是又称作语义的文本字符串。 可编程着色器阶段是从使用系统生成值(如基元 ID、实例 ID 或顶点 ID)的常用着色器核心构建的,这使得着色器阶段可以将处理减少到仅限尚未处理的基元、实例或顶点。

IA 阶段可以将顶点装配成多种不同的基元类型(如线列表、三角形带或邻接的基元)。 基元类型(如邻接的三角形列表和邻接的线列表)支持几何着色器 (GS) 阶段

邻接信息仅在几何着色器中对应用程序可见。 例如,如果用包含邻接的三角形调用几何着色器,则输入数据将包含每个三角形的 3 个顶点和每个三角形邻接数据的 3 个顶点。

当 IA 阶段被请求输出邻接数据时,输入数据必须包含邻接数据。 这可能需要提供虚拟顶点(形成退化三角形),或在某个顶点属性中标记该顶点是否存在。 这也需要由几何着色器检测和处理,虽然光栅化阶段会剔除退化几何图形。

输入

IA 阶段从内存读取数据:来自用户填充缓冲区的基元数据(点、线和/或三角形)。

输出

IA 阶段将数据装配成基元并附加系统生成的值,然后将其输出为被顶点着色器 (VS) 阶段及之后的其他管道阶段使用的基元。

本部分中的内容

主题 说明

基元拓扑

Direct3D 支持多种基元拓扑,后者定义管道(如点列表、线列表和三角形带)将如何解释和呈现顶点。

使用系统生成的值

系统生成的值由输入装配器 (IA) 阶段(基于用户提供的输入语义)生成,用于在一定程度上提高着色器运算的效率。 通过附加数据,如实例 ID(对顶点着色器 (VS) 阶段可见)、顶点 ID(对 VS 可见)或基元 ID(对几何着色器 (GS) 阶段/像素着色器 (PS) 阶段可见),后续的着色器阶段可以查找这些系统值,从而对当前阶段的处理进行优化。

 

图形管道