構文
効果コンパイラ ツールである FXC.exe を呼び出すための構文を次に示します。 例については、「 オフライン コンパイル」を参照してください。
使用
fxcSwitchOptionsファイル名
引数
各スイッチ オプションは、スペースまたはコロンで区切ります。
SwitchOptions
[入力]コンパイル オプション。 必要なオプションは 1 つだけで、さらに多くのオプションがあります。 それぞれをスペースまたはコロンで区切ります。
必須オプション
/T <プロファイル>
シェーダー モデル ( 「プロファイル」を参照)。
省略可能なオプション
/?, /help
のヘルプを印刷します FXC.exe
。
@<command.option.file>
追加のコンパイル オプションを含むファイル。 このオプションは、他のコマンド ライン コンパイル オプションと混在させることができます。 command.option.file には、1 行につき 1 つのオプションのみを含む必要があります。 command.option.file に空白行を含めることはできません。 ファイルで指定されたオプションには、先頭または末尾のスペースを含めることはできません。
/all_resources_bound
SM5.1 以降で積極的なフラット化を有効にします。 Direct3D 12の新機能。
/Cc
色分けされたアセンブリを出力します。
/compress
DX10 シェーダーのバイトコードをファイルから圧縮します。
/D <id>=<text>
マクロを定義します。
/解凍
最初のファイルから DX10 シェーダー バイトコードを展開します。 出力ファイルは、圧縮時の順序で一覧表示する必要があります。
/Dumpbin
シェーダーをコンパイルするのではなく、バイナリ ファイルを読み込みます。
/E <名>
シェーダー エントリ ポイント。 エントリ ポイントが指定されていない場合、メインはシェーダー エントリ名と見なされます。
/enable_unbounded_descriptor_tables
非連結記述子テーブルを有効にします。 Direct3D 12の新機能。
/extractrootsignature <ファイル>
シェーダーのバイトコードからルート署名を抽出します。 Direct3D 12の新機能。
/Fc <ファイル>
アセンブリ コード一覧ファイルを出力します。
/Fd <ファイル>
シェーダー プログラム データベース (PDB) 情報を抽出し、指定されたファイルに書き込みます。シェーダーをコンパイルするときは、/Fd を使用して、シェーダーのデバッグ情報を含む PDB ファイルを生成します。
/Fe <ファイル>
指定されたファイルに警告とエラーを出力します。
/Fh <ファイル>
オブジェクト コードを含む出力ヘッダー ファイル。
/Fl <ファイル
ライブラリを出力します。 D3dcompiler_47.dllまたはそれ以降のバージョンの DLL が必要です。
/Fo <ファイル>
出力オブジェクト ファイル。 拡張子 ".fxc" を指定することがよくありますが、".o"、".obj"、".dxbc" などの他の拡張機能が使用されます。
/Fx <ファイル>
アセンブリ コードと 16 進数リスト ファイルを出力します。
/Gch
fx_4_x プロファイルの子効果としてコンパイルします。
注意
レガシ効果プロファイルのサポートは非推奨となりました。
/Gdp
効果パフォーマンス モードを無効にします。
/Gec
下位互換性モードを有効にします。
/Ges
厳格モードを有効にします。
/getprivate <ファイル>
シェーダー BLOB (コンパイルされたシェーダー バイナリ) から特定のファイルにプライベート データを保存します。 /setprivate によって以前に埋め込まれたプライベート データをシェーダー BLOB から抽出します。
/dumpbin オプションは /getprivate で指定する必要があります。 次に例を示します。
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
フロー制御コンストラクトは避けてください。
/Gfp
フロー制御コンストラクトを優先します。
/Gis
IEEE の厳格さを強制します。
/Gpp
部分精度を強制します。
/I <include>
追加のインクルード パス。
/Lx
出力 16 進リテラル。 D3dcompiler_47.dllまたはそれ以降のバージョンの DLL が必要です。
/matchUAVs
現在のシェーダーのテンプレート シェーダー UAV スロット割り当てを照合します。 詳細については、「 解説」を参照してください。
/mergeUAV
テンプレート シェーダーと現在のシェーダーの UAV スロット割り当てをマージします。 詳細については、「解説」を参照してください。
/Ni
アセンブリ リストに命令番号を出力します。
/いいえ
アセンブリ リスト内の命令バイト オフセットを出力します。 アセンブリを生成するときは、/No を使用して、各命令のバイト オフセットで注釈を付けます。
/nologo
著作権メッセージを表示しません。
/Od
最適化を無効にします。 /Od は /Gfp を意味しますが、出力は /Od /Gfp と同じではない可能性があります。
/Op
プレシェードを無効にします (非推奨)。
/O0 /O1、/O2、/O3
最適化レベル。 O1 が既定の設定です。
- O0 - 命令の並べ替えを無効にします。 これにより、レジスタの負荷を軽減し、ループ シミュレーションを高速化できます。
- O1 - ps_3_0以降の命令の並べ替えを無効にします。
- O2 - O1 と同じです。 将来利用するために予約されています。
- O3 - O1 と同じです。 将来利用するために予約されています。
/P <ファイル>
ファイルへの前処理 (単独で使用する必要があります)。
/Qstrip_debug
4_0 以降のプロファイルのシェーダー バイトコードからデバッグ データを削除します。
/Qstrip_priv
4_0 以降のシェーダー バイトコードからプライベート データを削除します。 オプションで以前に埋め込んだシェーダー BLOB (コンパイル済みシェーダー バイナリ) からプライベート データ (任意のバイト シーケンス) を /setprivate <file>
削除します。
/dumpbin オプションは/Qstrip_privで指定する必要があります。 次に例を示します。
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
4_0 以降のプロファイルのシェーダー バイトコードからリフレクション データを削除します。
/Qstrip_rootsignature
シェーダーのバイトコードからルート署名を削除します。 Direct3D 12の新機能。
/res_may_alias
UAV/SRV が cs_5_0+ のエイリアスになる可能性があるとします。 D3dcompiler_47.dllまたはそれ以降のバージョンの DLL が必要です。
/setprivate <ファイル>
指定されたファイル内のプライベート データをコンパイル済みシェーダー BLOB に追加します。 生バッファーとして扱われる特定のファイルをシェーダー BLOB に埋め込みます。 シェーダーをコンパイルするときにプライベート データを追加するには、/setprivate を使用します。 または、/dumpbin オプションを /setprivate と共に使用して既存のシェーダー オブジェクトを読み込み、オブジェクトがメモリ内にある後にプライベート データ BLOB を追加します。 たとえば、/setprivate で 1 つのコマンドを使用して、コンパイルされたシェーダー BLOB にプライベート データを追加します。
fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx
/setprivate ps01.private.data
または、2 つ目のコマンドでシェーダー オブジェクトを読み込み、プライベート データを追加する 2 つのコマンドを使用します。
fxc /T ps_4_0 /Fo ps01.no.private.obj ps01.fx
fxc /dumpbin /Fo ps01.with.private.obj ps01.no.private.obj
/setprivate ps01.private.data
/setrootsignature <ファイル>
ルート署名をシェーダーのバイトコードに添付します。 Direct3D 12の新機能。
/shtemplate <ファイル>
特定のテンプレート シェーダー ファイルを使用して、リソースのマージ (/mergeUAV) と照合 (/matchUAV) を行います。 詳細については、「 解説」を参照してください。
/Vd
検証を無効にします。
/verifyrootsignature <ファイル>
ルート署名に対してシェーダー バイトコードを確認します。 Direct3D 12の新機能。
/Vi
インクルード プロセスに関する詳細を表示します。
/Vn <名>
ヘッダー ファイルで変数名として name を使用します。
/WX
警告をエラーとして扱います。
/ZI
デバッグ情報を有効にします。
/Zpc
マトリックスを列メジャー順にパックします。
/Zpr
行列を行メジャー順にパックします。
ファイル名
[入力]シェーダーや効果を含むファイル。
注釈
、、および /shtemplate
オプションを/mergeUAVs
/matchUAVs
使用して、シェーダーのチェーンの UAV バインド スロットを配置します。
シェーダー A.fx、B.fx、C.fx があるとします。 このシェーダー チェーンの UAV バインド スロットを揃えるには、次の 2 つのコンパイル パスが必要です。
シェーダーのチェーンの UAV バインド スロットを整列するには
- /mergeUAV を使用してシェーダーをコンパイルし、以前にコンパイルしたシェーダー BLOB を /shtemplate で指定します。 次に例を示します。
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- /matchUAV を使用してシェーダーをコンパイルし、最初のパスの最後のシェーダー BLOB を /shtemplate で指定します。 任意の順序でコンパイルできます。 次に例を示します。
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
2 番目のパスで C.fx を再コンパイルする必要はありません。
上記の 2 つのコンパイル パスを実行した後、A.o、B.o、C.o を、配置された UAV スロットを持つ最終的なシェーダー BLOB として使用できます。
Profiles
各シェーダー モデルには HLSL プロファイルのラベルが付けられます。 特定のシェーダー モデルに対してシェーダーをコンパイルするには、次の表から適切なシェーダー プロファイルを選択します。
シェーダーの種類 | Profiles |
---|---|
計算シェーダー |
cs_4_1 cs_5_0 cs_5_1 |
ドメイン シェーダー |
ds_5_1 |
ジオメトリ シェーダー |
gs_4_1 gs_5_0 gs_5_1 |
HLSL シェーダーのリンク |
lib_4_1 lib_4_0_level_9_1 lib_4_0_level_9_1_vs_only lib_4_0_level_9_1_ps_only lib_4_0_level_9_3 lib_4_0_level_9_3_vs_only lib_4_0_level_9_3_ps_only lib_5_0 |
ハル シェーダー |
hs_5_1 |
ピクセル シェーダー |
ps_2_a ps_2_b ps_2_sw ps_3_0 ps_3_sw ps_4_0 ps_4_0_level_9_0 ps_4_0_level_9_1 ps_4_0_level_9_3 ps_4_1 ps_5_0 ps_5_1 |
ルート署名 |
|
テクスチャ シェーダー |
|
頂点シェーダー |
vs_2_0 vs_2_a vs_2_sw vs_3_0 vs_3_sw vs_4_0 vs_4_0_level_9_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_4_1 vs_5_0 vs_5_1 |
バージョンに関するメモ
Direct3D 12については、「HLSL でのルート署名の指定」、「HLSL でのリソース バインド」、「HLSL5.1 を使用した動的インデックス作成」を参照してください。
Direct3D 10 では、API を使用して、D3D10GetVertexShaderProfile、D3D10GetPixelShaderProfile、D3D10GetGeometryShaderProfile の各関数を呼び出すことで、特定のデバイスに最適な頂点、ジオメトリ、ピクセル シェーダー プロファイルを取得します。
Direct3D 9 では 、GetDeviceCaps メソッドまたは GetDeviceCaps メソッドを使用して、デバイスでサポートされている頂点およびピクセル シェーダー プロファイルを取得します。 これらのメソッドによって返される D3DCAPS9 構造体は、 VertexShaderVersion メンバーと PixelShaderVersion メンバーのデバイスでサポートされている頂点およびピクセル シェーダー プロファイル を 示します。
例については、「現在の コンパイラを使用したコンパイル」を参照してください。
関連トピック
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示