Share via


Syntax

以下是呼叫FXC.exe效果編譯器工具的語法。 如需範例,請參閱 離線編譯

使用方式

fxcSwitchOptions Filenames

引數

以空格或冒號分隔每個參數選項。

SwitchOptions

[in]編譯選項。 只有一個必要選項,還有更多是選擇性的選項。 以空格或冒號分隔每個 。

必要選項

/T <設定檔>

著色器模型 (請參閱 設定檔) 。

選擇性的選項

/?、/help

列印 的說明 FXC.exe

@ <command.option.file>

包含其他編譯選項的檔案。 此選項可以與其他命令列編譯選項混合。 command.option.file每行只能包含一個選項。 command.option.file不能包含任何空白行。 檔案中指定的選項不得包含任何前置或尾端空格。

/all_resources_bound

在 SM5.1+ 中啟用積極壓平合併。 Direct3D 12 的新功能。

/Cc

輸出彩色編碼元件。

/壓縮

從檔案壓縮 DX10 著色器位元組程式碼。

/D <id> = <text>

定義宏。

/解 壓縮

從第一個檔案解壓縮 DX10 著色器位元組程式碼。 輸出檔案應該依照壓縮期間的順序列出。

/dumpbin

載入二進位檔案,而不是編譯著色器。

/E < 名稱>

著色器進入點。 如果未指定進入點, 則 main 會被視為著色器專案名稱。

/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 <檔案>

輸出元件程式碼和十六進位清單檔案。

/Gch

編譯為fx_4_x設定檔的子效果。

注意

舊版效果設定檔的支援已被取代。

/Gdp

停用效果效能模式。

/Gec

啟用回溯相容性模式。

/Ges

啟用 strict 模式。

/getprivate <檔案>

將著色器 Blob 中的私用資料儲存 (編譯的著色器二進位) 至指定的檔案。 從著色器 Blob 擷取先前由 /setprivate 內嵌的私人資料。

您必須使用 /getprivate 指定 /dumpbin 選項。 例如:

fxc /getprivate ps01.private.data 
    /dumpbin ps01.with.private.obj
/Gfa

避免流程式控制制建構。

/Gfp

偏好流程式控制制建構。

/Gis

強制 IEEE 嚴格。

/Gpp

強制部分有效位數。

/I <include>

其他包含路徑。

/Lx

輸出十六進位常值。 需要D3dcompiler_47.dll或更新版本的 DLL。

/matchUAV

比對目前著色器中的範本著色器 UAV 位置配置。 如需詳細資訊,請參閱

/mergeUAV

合併範本著色器和目前著色器的 UAV 位置配置。 如需詳細資訊,請參閱

/鎳

元件清單中的輸出指令編號。

/不

元件清單中的輸出指令位元組位移。 當您產生元件時,請使用 /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> 的任意位元組序列, (任意序列的) 位元組。

您必須使用 /Qstrip_priv 指定 /dumpbin 選項。 例如:

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 的單一命令,將私人資料新增至編譯的著色器 Blob:

fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx 
    /setprivate ps01.private.data

或者,使用兩個命令,其中第二個命令會載入著色器物件,然後新增私人資料:

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 的新功能。

/六

顯示包含程式的詳細資料。

/Vn <名稱>

使用 name 作為標頭檔中的變數名稱。

/WX

將警告視為錯誤。

/ZI

啟用偵錯資訊。

/Zpc

以資料行主要順序封裝矩陣。

/Zpr

以資料列主要順序封裝矩陣。

檔案名稱

[in]包含著色器的檔案 () 和/或效果 (s) 。

備註

/mergeUAVs使用 、 /matchUAVs/shtemplate 選項來對齊著色器鏈結的 UAV 系結位置。

假設您有著色器 A.fx、B.fx 和 C.fx。 若要對齊此著色器的 UAV 系結位置鏈結位置,您需要兩個編譯階段:

對齊著色器鏈結的 UAV 系結位置

  1. 使用 /mergeUAV 來編譯著色器,並使用 /shtemplate 指定先前編譯的著色器 Blob。 例如:
    fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
    
  2. 使用 /matchUAV 編譯著色器,並使用 /shtemplate 從第一個傳遞指定最後一個著色器 Blob。 您可以依任何順序編譯。 例如:
    fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
    

您不需要在第二個階段重新編譯 C.fx。

執行上述兩個編譯階段之後,您可以使用 A.o、B.o 和 C.o 作為最終著色器 Blob 搭配對齊的 UAV 位置。

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
如需著色器連結的詳細資訊,請參閱 ID3D11LinkerID3D11FunctionLinkingGraph
輪廓著色器
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 透過呼叫下列函式來取得最適合指定裝置的頂點、幾何和圖元著色器設定檔: D3D10GetVertexShaderProfileD3D10GetPixelShaderProfileD3D10GetGeometryShaderProfile

在 Direct3D 9 中,使用 GetDeviceCapsGetDeviceCaps 方法來擷取裝置支援的頂點和圖元著色器設定檔。 這些方法所傳回 的 D3DCAPS9 結構表示裝置在其 VertexShaderVersionPixelShaderVersion 成員中支援的頂點和圖元著色器設定檔。

如需範例,請參閱 使用目前的編譯器進行編譯