vs_3_0
可编程顶点着色器由一组对顶点数据进行操作的指令组成。 注册传入和传出 ALU 的数据。 可以应用其他控制来修改指令、结果或写出的数据。
顶点着色器版本 vs_3_0 扩展了 vs_2_x 支持的功能集。 vs_2_X中需要设置上限的每个功能在 vs_3_0 中均可用,无需上限。
- 说明 - vs_3_0 包含可用说明的列表。
- 寄存器 - vs_3_0 列出了顶点着色器 ALU 使用的不同类型的寄存器。
- 顶点着色器寄存器修饰符 用于修改指令的工作方式。
- 顶点着色器源寄存器修饰符 在指令运行之前更改源寄存器数据。
- 源寄存器重排 提供对读取、复制或写入的寄存器组件的额外控制。
- 目标寄存器掩码 确定写入目标寄存器的哪些组件。
新功能
以下各节列出了顶点着色器版本vs_3_0的新功能。
索引寄存器
在早期的着色器模型中,只能为常量寄存器库编制索引。 在此模型中,可以使用循环计数器寄存器 (aL) 为以下寄存器库编制索引:
- 输入寄存器 (v#)
- 输出寄存器 (o#)
顶点纹理
此着色器模型支持使用 texldl 在顶点着色器中查找纹理。 顶点引擎有四个纹理采样器阶段, (不同于位移贴图采样器和像素引擎) 中的纹理采样器,可用于对这些阶段设置的纹理进行采样。 请参阅 vs_3_0 (DirectX HLSL) 中的顶点纹理 。
顶点流频率
此功能允许以不同于每个顶点一次的速率初始化输入寄存器的子集。 请参阅 绘制非索引几何图形。
着色器输出
与vs_2_0类似,着色器的输出可能因静态流控制而异。 请注意动态分支,因为这样可能会导致着色器输出因顶点而异。 这将在不同的硬件上产生不可预知的结果。
动态流控制
支持所有动态流控制指令。 允许的最大嵌套深度值为 24。 (有关详细信息,请参阅 流控制嵌套限制 。)
临时寄存器
总共支持 32 个临时寄存器 (r#) 。
静态流控制
循环与代表- vs/ vs 的最大嵌套深度为 4。 call - vscallnz bool - vs//callnz pred - vs callnz pred - vs 的最大嵌套深度为 4。 对于 bool - vs,则允许的最大嵌套深度值为 24。 (有关详细信息,请参阅 流控制嵌套限制 。)
预测
支持指令预测。 使用 setp_comp - vs 设置谓词寄存器。
指令计数
每个顶点着色器在 D3DCAPS9 中的 MaxVertexShader30InstructionSlots 中允许使用从 512 个到槽数的任何位置。 由于循环/代表支持,运行的指令数可能要高得多;但是,这由 D3DCAPS9 中的 MaxVShaderInstructionsExecuted 限制,这至少应0xFFFF。
设备上限
如果支持顶点着色器 3_0,则硬件 (至少) 支持以下上限:
笔帽 | 功能 |
---|---|
着色器帽 |
|
GuardBandLeft、GuardBandTop、GuardBandRight、GuardBandBottom | 8K |
VertexShaderVersion | 3_0 |
MaxVertexShaderConst | 256 |
MaxVertexShader30InstructionSlots | 512 |
迷雾支持 | D3DPRASTERCAPS_FOGVERTEX |
VertexTextureFilterCaps | |
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET | 顶点声明中的顶点元素可以共享相同的流偏移量。 |
顶点格式 |
|
相关主题