着色器模型与着色器配置文件

DirectX 的高级着色语言实现了一系列着色器模型。 使用 HLSL,可以创建用于 Direct3D 管道的类似于 C 的可编程着色器。 每个着色器模型都基于模型之前的功能构建,实现更多功能且限制更少。

着色器模型 1 从 DirectX 8 开始,包含程序集级别和类似 C 的说明。 此模型有许多由早期可编程着色器硬件引起的限制。 着色器模型 2 和 3 在指令数量上大大扩展了着色器可以使用的常量。 它们比着色器模型 1 强大得多,但仍具有第一个着色器模型的一些现有限制。

从 Windows Vista 开始,着色器模型 4 是完全重新设计的。 它允许在计算机) 的硬件约束内 (无限的指令和常量,具有模板化对象,使纹理采样更简洁、更高效,并且具有任何着色器模型最少的限制。 但是,它需要仅在 Windows Vista (或更高版本) 操作系统上可用的 Windows 驱动程序模型。

着色器配置文件

着色器配置文件是编译着色器的目标;下表列出了每个着色器模型支持的着色器配置文件。

着色器模型 着色器配置文件
着色器模型 1 vs_1_1
着色器模型 2 ps_2_0、ps_2_x、vs_2_0、vs_2_x、ps_4_0_level_9_0、ps_4_0_level_9_1、ps_4_0_level_9_3、vs_4_0_level_9_0、vs_4_0_level_9_1、vs_4_0_level_9_3、lib_4_0_level_9_1、lib_4_0_level_9_3
着色器模型 3 ps_3_0、vs_3_0
着色器模型 4 cs_4_0、gs_4_0、ps_4_0、vs_4_0、cs_4_1、gs_4_1、ps_4_1、vs_4_1、lib_4_0、lib_4_1
着色器模型 5 cs_5_0、ds_5_0、gs_5_0、hs_5_0、ps_5_0、vs_5_0、lib_5_0 (尽管着色器模型 4.0 中引入了gs_4_0、gs_4_1、ps_4_0、ps_4_1、vs_4_0和vs_4_1,但着色器模型 5 为结构化缓冲区和字节地址缓冲区添加了对这些着色器配置文件的支持。)
着色器模型 6 cs_6_0、ds_6_0、gs_6_0、hs_6_0、ps_6_0、vs_6_0、lib_6_0

Direct3D 9 与 Direct3D 10 之间的差异:

  • Direct3D 9 引入了着色器模型 1、2 和 3。
  • Direct3D 10 引入了着色器模型 4。
  • Direct3D 10.1 引入了着色器模型 4.1。

效果配置文件

效果配置文件是编译效果/着色器的目标;下表列出了每个 Direct3D 版本支持的效果配置文件。

Direct3D 9 与 Direct3D 10 之间的差异:

  • Direct3D 9 引入了效果框架配置文件fx_1_0和fx_2_0。
  • Direct3D 10 引入了 effect-framework 配置文件fx_4_0。
  • Direct3D 10.1 引入了 effect-framework 配置文件fx_4_1。
  • Direct3D 11 引入了 effect-framework profile fx_5_0。

注意

这些旧版效果配置文件已弃用。

HLSL 参考