構文

効果コンパイラ ツールである 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 を使用して、各命令のバイト オフセットで注釈を付けます。

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

/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 バインド スロットを整列するには

  1. /mergeUAV を使用してシェーダーをコンパイルし、以前にコンパイルしたシェーダー BLOB を /shtemplate で指定します。 次に例を示します。
    fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
    
  2. /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_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 でのリソース バインド」、「HLSL5.1 を使用した動的インデックス作成」を参照してください。

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

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

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