顶点着色器 (VS) 阶段

顶点着色器 (VS) 阶段处理顶点,通常执行诸如转换、换肤以及照明之类的操作。 顶点着色器获取一个输入顶点并生成一个输出顶点。

用途和用法

顶点着色器 (VS) 阶段用于单独的每顶点处理,例如:

  • 转换
  • 换肤
  • 变形
  • 每顶点照明

顶点着色器阶段是一个可编程着色器阶段;它在图形管道图中显示为圆块。 此着色器阶段使用着色器模型 4.0 常用着色器核心

顶点着色器 (VS) 阶段处理输入装配器中的顶点。 顶点着色器始终在单个输入顶点上运行并生成单个输出顶点。 顶点着色器阶段必须始终处于活动状态,管道才能执行。 如果不需要顶点修改或转换,则必须创建直通顶点着色器并将其设置到管道中。

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

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

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

顶点着色器可执行不需要屏幕空间派生对象的加载和纹理采样操作(使用 HLSL 内部函数:Sample (DirectX HLSL Texture Object)SampleCmpLevelZero (DirectX HLSL Texture Object)SampleGrad (DirectX HLSL Texture Object))。

输入

具有 VertexID 和 InstanceID 系统生成值的单个顶点。 每个顶点着色器输入顶点可以由 16 个 32 位矢量(每个矢量最多有 4 个分量)组成。

输出

单个顶点。 每个输出顶点可以由多达 16 个 32 位 4 分量矢量组成。

图形管道