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

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

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

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

着色器配置文件

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

着色器模型 着色器配置文件
着色器模型 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(尽管gs_4_0、gs_4_1、ps_4_0、ps_4_1、vs_4_0和vs_4_1在着色器模型 4.0 中引入,着色器模型 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 引入了效果框架配置文件fx_4_0。
  • Direct3D 10.1 引入了效果框架配置文件fx_4_1。
  • Direct3D 11 引入了效果框架配置文件fx_5_0。

注意

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

HLSL 参考