指定編譯器目標

當您呼叫D3DCompile、D3DCompile2D3DCompileFromFile函式時,您必須指定著色器目標 —一組著色器功能,才能進行編譯。 在這裡,我們會列出 D3DCompile* 函式和 HLSL 編譯器支援的各種設定檔目標。

Direct3D 11.0 和 11.1 功能層級

以下是 Direct3D 11.0 和 11.1 功能層級 支援的著色器目標。

目標 Description
cs_5_0 DirectCompute 5.0 (計算著色器)
ds_5_0 網域著色器
gs_5_0 幾何著色器
hs_5_0 殼層著色器
ps_5_0 像素著色器
vs_5_0 頂點著色器

 

Direct3D 10.1 功能層級

以下是 Direct3D 10.1 功能層級 支援的著色器目標。

目標 Description
cs_4_1 DirectCompute 4.1 (計算著色器) ¹
gs_4_1 幾何著色器
ps_4_1 像素著色器
vs_4_1 頂點著色器

 

Direct3D 10.0 功能層級

以下是 Direct3D 10.0 功能層級 支援的著色器目標。

目標 Description
cs_4_0 DirectCompute 4.0 (計算著色器) ¹
gs_4_0 幾何著色器
ps_4_0 像素著色器
vs_4_0 頂點著色器

 

Direct3D 9.1、9.2 和 9.3 功能層級

以下是 Direct3D 9.1、9.2 和 9.3 功能層級 支援的著色器目標。

注意

當您使用 *_4_0_level_9_x HLSL 著色器設定檔時,您會隱含地使用 著色器模型 2.x 設定檔來支援 Direct3D 9 支援的硬體。 著色器模型 2.x 設定檔支援比 著色器模型 4.x 和更新版本的設定檔更有限的流程式控制制行為。

 

目標 Description
ps_4_0_level_9_1 9.1 和 9.2 的圖元著色器 (與ps_2_0) 類似的限制
  • 64 個算術和 32 個紋理指令
  • 12 個暫存暫存器
  • 4 個層級的相依讀取
ps_4_0_level_9_3 9.3 的圖元著色器 (ps_2_x使用其他著色器功能) 的類似限制
  • 512 指示
  • 32 個暫存暫存器
  • 靜態流程式控制制 (最大深度為 4)
  • 動態流程式控制制 (最大深度為 24)
  • D3DPS20CAPS_ARBITRARYSWIZZLE
  • D3DPS20CAPS_GRADIENTINSTRUCTIONS
  • D3DPS20CAPS_PREDICATION
  • D3DPS20CAPS_NODEPENDENTREADLIMIT
  • D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT
vs_4_0_level_9_1 9.1 和 9.2 的頂點著色器 (類似vs_2_0)
  • 256 個指示
  • 12 個暫存暫存器
  • 靜態流程式控制制 (最大深度為 1)
vs_4_0_level_9_3 9.3 (的頂點著色器,類似于 vs_2_a ー,具有額外的著色器功能和實例)
  • 256 個指示
  • 32 個暫存暫存器
  • 靜態流程式控制制 (最大深度為 4)
  • D3DVS20CAPS_PREDICATION

 

舊版 Direct3D 9 著色器模型 3.0

以下是舊版 Direct3D 9 著色器模型 3.0¹ 的著色器目標。

目標 Description
ps_3_0 圖元著色器 3.0
ps_3_sw 圖元著色器 3.0 (軟體)
vs_3_0 頂點著色器 3.0
vs_3_sw 頂點著色器 3.0 (軟體)

 

舊版 Direct3D 9 著色器模型 2.0

以下是舊版 Direct3D 9 著色器模型 2.0 Android 的著色器目標。

目標 Description
ps_2_0 圖元著色器 2.0
ps_2_a 圖元著色器 2a
ps_2_b 圖元著色器 2b
ps_2_sw 圖元著色器 2.0 軟體
vs_2_0 頂點著色器 2.0
vs_2_a 頂點著色器 2a
vs_2_sw 頂點著色器 2.0 軟體

 

舊版 Direct3D 9 著色器模型 1.x

以下是舊版 Direct3D 9 著色器模型 1.x⁴的著色器目標。

目標 Description
tx_1_0 舊版 D3DX9⁵ 函式 D3DXCreateTextureShaderD3DXFillTextureTX 使用的紋理著色器設定檔
vs_1_1 頂點著色器 1.1

 

舊版效果

以下是舊版效果的效果目標。

目標 Description
fx_2_0 效果 (D3DX9 中 Direct3D 9 的 FX) ⁵
fx_4_0 D3DX10⁵中 Direct3D 10.0 的效果 (FX)
fx_4_1 D3DX10⁵中 Direct3D 10.1 的效果 (FX)
fx_5_0 Direct3D 11⁵的 FX) (效果

 

備註

以下是上述各節所參考的一些注意事項:

  1. 功能層級 10.0 和 10.1 裝置可以選擇性地支援 DirectCompute。 若要確認支援,請使用 ID3D11Device::CheckFeatureSupport 搭配 D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS
  2. 功能層級 9.3 實際上需要符合 舊版 Direct3D 9 著色器模型 3.0需求的硬體,但此功能層級不會使用vs_3_0或ps_3_0目標。
  3. 僅搭配 Direct3D 9 API 使用舊版 Direct3D 9 著色器模型。 請改用 9.x 設定檔搭配 Direct3D 10.x 和 11.x API。
  4. 目前的 HLSL 著色器 D3DCompile* 函式不支援舊版 1.x 圖元著色器。 2006 年 10 月版本的 DirectX SDK 中,支援這些目標的最後一個版本是 D3DX9。
  5. 所有版本的 D3DX 和 DirectX SDK 都已被取代。 如需詳細資訊,請參閱 DirectX SDK 的位置?

HLSL 的程式設計指南