次の方法で共有


構文

エフェクト コンパイラ ツール FXC.exe を呼び出すための構文を次に示します。 例については、「オフライン コンパイル」を参照してください。

使用方法

fxc SwitchOptions Filenames

引数

各スイッチ オプションをスペースまたはコロンで区切ります。

SwitchOptions

[in] コンパイル オプション。 必要なオプションが 1 つだけあり、さらに多くのオプションが省略可能です。 それぞれをスペースまたはコロンで区切ります。

必須オプション

/T <profile>

シェーダー モデル (プロファイルを参照)。

省略可能なオプション

/?, /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>

マクロを定義します。

/decompress

最初のファイルから DX10 シェーダー バイトコードを展開します。 出力ファイルは、圧縮中の順序で一覧表示する必要があります。

/dumpbin

シェーダーをコンパイルするのではなく、バイナリ ファイルを読み込みます。

/E <name>

シェーダーのエントリ ポイント。 エントリ ポイントが指定されていない場合、main はシェーダー エントリ名と見なされます。

/enable_unbounded_descriptor_tables

無制限の記述子テーブルを有効にします。 Direct3D 12 の新機能。

/extractrootsignature <file>

シェーダーのバイトコードからルート署名を抽出します。 Direct3D 12 の新機能。

/Fc <file>

アセンブリ コード一覧ファイルを出力します。

/Fd <file>

シェーダー プログラム データベース (PDB) 情報を抽出し、指定されたファイルに書き込みます。シェーダーをコンパイルするときに、/Fd を使用してシェーダー デバッグ情報を含む PDB ファイルを生成します。

/Fe <file>

指定されたファイルに警告とエラーを出力します。

/Fh <file>

オブジェクト コードを含む出力ヘッダー ファイル。

/Fl <file

ライブラリを出力します。 D3dcompiler_47.dll またはそれ以降のバージョンの DLL が必要です。

/Fo <file>

出力オブジェクト ファイル。 多くの場合、拡張子は「.fxc」になりますが、「.o」、「.obj」、「.dxbc」などの他の拡張子も使用されます。

/Fx <file>

アセンブリ コードと 16 進リスト ファイルを出力します。

/Gch

fx_4_x プロファイルの子効果としてコンパイルします。

Note

従来の効果プロファイルのサポートは非推奨です。

/Gdp

効果パフォーマンス モードを無効にします。

/Gec

下位互換性モードを有効にします。

/Ges

厳格モードを有効にします。

/getprivate <file>

シェーダー BLOB (コンパイル済みシェーダー バイナリ) から特定のファイルにプライベート データを保存します。 シェーダー BLOB から、/setprivate によって以前埋め込まれたプライベート データを抽出します。

/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 スロットの割り当てを照合します。 詳しくは、解説を参照してください。

/mergeUAVs

テンプレート シェーダーと現在のシェーダーの UAV スロット割り当てをマージします。 詳しくは、解説を参照してください。

/Ni

アセンブリ リストの命令番号を出力します。

/No

アセンブリ リストの出力命令バイト オフセット。 アセンブリを生成するときは、/No を使用して、各命令のバイト オフセットで注釈を付けます。

著作権メッセージを表示しません。

/Od

最適化を無効にします。 /Od は /Gfp を暗黙的に示しますが、その出力は /Od /Gfp. と同じにならない場合があります。

/Op

事前シェーダーを無効にします (非推奨)。

/O0 /O1、/O2、/O3

最適化レベル。 O1 が既定の設定です。

  • O0 - 命令の並べ替えを無効にします。 これにより、レジスタの負荷を軽減し、ループ シミュレーションを高速化できます。
  • O1 - ps_3_0および up の命令の並べ替えを無効にします。
  • O2 - O1 と同じです。 将来の使用のために予約済み。
  • O3 - O1 と同じです。 将来の使用のために予約済み。
/P <file>

ファイルへの前処理 (単独で使用する必要があります)。

/Qstrip_debug

4_0 以降のプロファイルのシェーダー バイトコードからデバッグ データを削除します。

/Qstrip_priv

4_0 以降のシェーダー バイトコードからプライベート データを削除します。 /setprivate <file> オプションで以前に埋め込んだシェーダー BLOB (コンパイル済みシェーダー バイナリ) からプライベート データ (任意のバイト シーケンス) を削除します。

/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 <file>

指定されたファイル内のプライベート データをコンパイル済みシェーダー 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 <file>

ルート署名をシェーダーのバイトコードに添付します。 Direct3D 12 の新機能。

/shtemplate <file>

特定のテンプレート シェーダー ファイルを使用して、リソースのマージ (/mergeUAV) と照合 (/matchUAV) を行います。 詳しくは、解説を参照してください。

/Vd

検証を無効にします。

/verifyrootsignature <file>

ルート署名に対してシェーダー のバイトコードを確認します。 Direct3D 12 の新機能。

/Vi

インクルード プロセスの詳細を表示します。

/Vn <name>

ヘッダー ファイルで変数名として名前を使用します。

/WX

警告をエラーとして扱います。

/Zi

デバッグ情報を有効にします。

/Zpc

行列を列優先順にパックします。

/Zpr

行列を行優先順にパックします。

ファイル名

[in] シェーダーまたはエフェクトを含むファイル。

解説

/mergeUAVs/matchUAVs、および /shtemplate オプションを使用して、シェーダー チェーンの UAV バインド スロットを整列します。

シェーダー A.fx、B.fx、C.fx があるとします。 このシェーダー チェーンの UAV バインド スロットを整列するには、次の 2 つのコンパイル パスが必要です。

シェーダーチェーンの UAV バインド スロットを整列するには

  1. /mergeUAV を使用してシェーダーをコンパイルし、以前にコンパイルしたシェーダー BLOB を /shtemplate で指定します。 例:
    fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
    
  2. /matchUAVs を使用してシェーダーをコンパイルし、/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 として使用できます。

プロファイル

各シェーダー モデルには HLSL プロファイルのラベルが付けられます。 特定のシェーダー モデルに対してシェーダーをコンパイルするには、次の表から適切なシェーダー プロファイルを選択します。

シェーダーの種類プロファイル
計算シェーダー
cs_4_0
cs_4_1
cs_5_0
cs_5_1
ドメイン シェーダー
ds_5_0
ds_5_1
ジオメトリ シェーダー
gs_4_0
gs_4_1
gs_5_0
gs_5_1
HLSL シェーダーのリンク
lib_4_0
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
シェーダー リンクの詳細については、「ID3D11Linker」および「ID3D11FunctionLinkingGraph」を参照してください。
ハル シェーダー
hs_5_0
hs_5_1
ピクセル シェーダー
ps_2_0
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
ルート署名
rootsig_1_0
テクスチャ シェーダー
tx_1_0
頂点シェーダー
vs_1_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 でのリソース バインド」、および「HLSL 5.1 を使用した動的インデックス作成」を参照してください。

Direct3D 10 では、API を使用して、D3D10GetVertexShaderProfileD3D10GetPixelShaderProfile、および D3D10GetGeometryShaderProfile 関数を呼び出すことによって、特定のデバイスに最適な頂点、ジオメトリ、ピクセル シェーダー プロファイルを取得します。

Direct3D 9 では、GetDeviceCaps または GetDeviceCaps メソッドを使用して、デバイスでサポートされている頂点プロファイルおよびピクセル シェーダー プロファイルを取得します。 これらのメソッドによって返される D3DCAPS9 構造体は、 VertexShaderVersion および PixelShaderVersion メンバー内のデバイスでサポートされる頂点プロファイルおよびピクセル シェーダー プロファイルを示します。

例については、「現在のコンパイラを使用したコンパイル」を参照してください。