シェーダー モデルとシェーダー プロファイル
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 では、effect-framework プロファイル fx_4_0が導入されました。
- Direct3D 10.1 では、effect-framework プロファイル fx_4_1が導入されました。
- Direct3D 11 では、effect-framework プロファイル fx_5_0が導入されました。
注意
これらのレガシ効果プロファイルは非推奨です。