dcl_input vGSInstanceID (sm5 - asm)

启用几何着色器实例化。

dcl_input vGSInstanceID、instanceCount
说明
vGSInstanceID
[in]实例 ID。
instanceCount
[in]实例计数。

备注

声明的 instanceCount 参数指定几何着色器应为每个输入基元执行的实例数。 instanceCount 的最大值为 32。

通过 dcl_maxOutputVertexCount 为输出声明的最大顶点数单独应用于每个实例。

此声明中的实例计数乘以每个实例通过 dcl_maxOutputVertexCount 的最大顶点计数必须为 <= 1024。

给定几何图形着色器实例可以发出的数据量最大为 1024 个标量,通过对为输入声明的所有标量进行计数并乘以声明的输出顶点计数进行验证。

使用几何着色器实例可以有效地增加每个输入基元可以发出的数据总量。 单个实例的 1024 标量在单个输入基元的所有几何着色器实例中生成最多 1024*32 个标量输出数据。 但是,实例越多,每个实例可以发出的顶点就越少。 单个实例 (实例) 无法发出 1024 个顶点。 如果声明 *32 个实例,则意味着每个实例只能输出 1024/32 = 32 个顶点。

几何着色器实例化声明使程序可以使用独立的 32 位整数输入寄存器 vGSInstanceID。 每个几何着色器实例由 vGSInstanceID [0,1,2...] 中包含的值标识。

vGSInstanceID 不是几何图形着色器输入顶点数组的一部分, (例如,在) 输入三角形时有 3 个顶点。 vGSInstanceID 寄存器是其自身的,类似于 vPrimitiveID。

当每个几何图形着色器实例结束时,输出拓扑中有一个隐式剪切,因此连续的实例不相互依赖。

尽管硬件可以并行执行每个几何着色器实例,但最后所有实例的输出都会序列化,就像所有实例化几何着色器调用在循环中按顺序运行一样,循环访问 vGSInstanceID 从 0 到 instanceCount-1,每个实例的末尾会隐式输出拓扑剪切。

此指令适用于以下着色器阶段:

顶点 外壳 Geometry 像素 计算
X

最小着色器模型

以下着色器模型中支持此指令:

着色器模型 支持
着色器模型 5
着色器模型 4.1
着色器模型 4
着色器模型 3 (DirectX HLSL)
着色器模型 2 (DirectX HLSL)
着色器模型 1 (DirectX HLSL)

着色器模型 5 程序集 (DirectX HLSL)