コンパイラ ターゲットの指定

D3DCompile、D3DCompile2、または D3DCompileFromFile 関数を呼び出すときにコンパイルするには、シェーダー ターゲット (シェーダー機能のセット) を指定する必要があります。 ここでは、D3DCompile* 関数と HLSL コンパイラがサポートするさまざまなプロファイルのターゲットを示します。

Direct3D 11.0 および 11.1 の機能レベル

Direct3D 11.0 と 11.1 の機能レベル でサポートされるシェーダー ターゲットを次に示します。

移行先 説明
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 機能レベル でサポートされるシェーダー ターゲットを次に示します。

移行先 説明
cs_4_1 DirectCompute 4.1 (コンピューティング シェーダー
gs_4_1 ジオメトリ シェーダー
ps_4_1 ピクセル シェーダー
vs_4_1 頂点シェーダー

 

Direct3D 10.0 機能レベル

Direct3D 10.0 機能レベル でサポートされているシェーダー ターゲットを次に示します。

移行先 説明
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 以降のプロファイルよりも制限されたフロー制御動作がサポートされています。

 

移行先 説明
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 のシェーダー ターゲットを次に示します。

移行先 説明
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 ² のシェーダー ターゲットを次に示します。

移行先 説明
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⁴ のシェーダー ターゲットを次に示します。

移行先 説明
tx_1_0 従来の D3DX9⁵ 関数 D3DXCreateTextureShaderD3DXFillTextureTX が使用するテクスチャ シェーダー プロファイル
vs_1_1 頂点シェーダー 1.1

 

従来の効果

レガシ効果の効果ターゲットを次に示します。

移行先 説明
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 with 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 シェーダー モデルのみを使用します。 代わりに、Direct3D 10.x および 11.x API で 9.x プロファイルを使用します。
  4. 現在の HLSL シェーダー D3DCompile* 関数では、従来の 1.x ピクセル シェーダーはサポートされていません。 これらのターゲットをサポートする HLSL の最後のバージョンは、DirectX SDK の 2006 年 10 月リリースの D3DX9 でした。
  5. D3DX と DirectX SDK のすべてのバージョンは非推奨です。 詳細については、「 DirectX SDK はどこにありますか?」を参照してください。

HLSL 用プログラミング ガイド