著色器模型與著色器設定檔

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 (雖然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 的參考