顶点着色器阶段

顶点着色器 (VS) 阶段处理输入汇编程序的顶点,执行每个顶点运算,例如转换、外观、变形和每顶点照明。 顶点着色器始终在单个输入顶点上运行并生成单个输出顶点。 顶点着色器阶段必须始终处于活动状态,管道才能执行。 如果不需要顶点修改或转换,则必须创建直通顶点着色器并将其设置到管道中。

顶点着色器

每个顶点着色器输入顶点最多可以由 16 个 32 位矢量 (每个) 最多 4 个分量组成,每个输出顶点可以由多达 16 个 32 位 4 分量向量组成。 所有顶点着色器必须至少具有一个输入和一个输出,这可以是一个标量值。

顶点着色器阶段可以使用输入汇编程序中的两个系统生成的值:VertexID 和 InstanceID (请参阅 系统值语义) 。 由于 VertexID 和 InstanceID 在顶点级别都有意义,由硬件生成的 ID 只能馈送到了解这些 ID 的第一个阶段中,这些 ID 值只能馈送到顶点着色器阶段中。

顶点着色器始终在所有顶点上运行,包括带邻近度的输入基元拓扑中的相邻顶点。 可以使用 VSInvocations 管道统计信息从 CPU 查询已执行的顶点着色器的次数。

顶点着色器可以执行加载和纹理采样操作,其中 (使用 HLSL 内部函数不需要屏幕空间导数: 示例 (DirectX HLSL 纹理对象) SampleCmpLevelZero (DirectX HLSL 纹理对象) SampleGrad (DirectX HLSL 纹理对象) ) 。