软件着色器

软件着色器实现以允许开发没有基础硬件支持的着色器。 它们支持完整的功能集。 由于它们在软件中实现,因此不会产生最佳性能。

版本 功能集 要求
vs_2_sw vs_2_x的所有功能 仅软件顶点处理和引用设备支持。
vs_3_sw vs_3_0的所有功能 仅软件顶点处理和引用设备支持。
ps_2_sw ps_2_x的所有功能 仅引用设备支持。
ps_3_sw ps_3_0的所有功能 仅引用设备支持。

 

对于软件着色器,某些验证会放宽。 这对于调试和原型制作非常有用。 以下验证是宽松的:(所有其他验证保持不变)

验证类型 放松
指令计数: 对于vs_2_sw、vs_3_sw和ps_2_sw,ps_3_sw来说,这是宽松的。 允许无限制的说明。
Float 常量计数: 对于vs_2_sw、vs_3_sw和ps_2_sw,ps_3_sw来说,这是宽松的。 最多允许 8192 个常量。
整数常量计数: 对于vs_2_sw、vs_3_sw和ps_2_sw,ps_3_sw来说,这是宽松的。 最多允许 2048 个常量。
布尔常量计数: 对于vs_2_sw、vs_3_sw和ps_2_sw,ps_3_sw来说,这是宽松的。 最多允许 2048 个常量。
从属读取深度: 这是放松的ps_2_sw。 与在vs_3_0和ps_3_0中一样,允许无限依赖读取。
流控制指令和标签数: 对于vs_2_sw来说,这是放松的。 允许无限的流控制指令和最多 2048 个标签。
循环计数/开始/步骤: 对于vs_2_sw、vs_3_sw、ps_2_sw和ps_3_sw来说,这些都是宽松的。 代表指令和循环指令的迭代开始和互作步骤大小为 32 位有符号交错器。 Interation count can be up to MAX_INT/64.
读取端口限制: vs_2_sw、vs_3_sw、ps_2_sw和ps_3_sw没有读取端口限制。
内插器数: vs_3_sw中有 16 个 寄存器 - vs_3_0 (o#)和 10 ps_3_0 寄存器 (v#) 用于ps_3_sw。

 

Asm 着色器参考