語法
以下是呼叫FXC.exe效果編譯程式工具的語法。 如需範例,請參閱 脫機編譯。
使用方式
fxc SwitchOptions Filenames
引數
使用空格或冒號分隔每個參數選項。
SwitchOptions
[in]編譯選項。 只有一個必要選項,還有更多是選擇性的選項。 使用空白或冒號分隔每個 。
必要選項
/T <配置檔>
著色器模型(請參閱 配置檔)。
選擇性的選項
/?、/help
列印的說明 FXC.exe
。
@<command.option.file>
包含其他編譯選項的檔案。 此選項可以與其他命令行編譯選項混合。 command.option.file 每行只能包含一個選項。 command.option.file 不能包含任何空白行。 檔案中指定的選項不得包含任何前置或尾端空格。
/all_resources_bound
在SM5.1+ 中啟用積極扁平化。 Direct3D 12 的新功能。
/Cc
輸出色彩編碼元件。
/compress
從檔案壓縮 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,以每個指令的位元組位移來標註它。
/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+ 著色器位元組程式代碼移除私人數據。 從您先前使用 /setprivate <file>
選項內嵌的著色器 Blob 中移除私用數據(任意位元組序列)。已編譯的著色器二進位檔。
您必須使用 /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 來新增私人數據。 或者,搭配 /setprivate 使用 /dumpbin 選項來載入現有的著色器對象,然後在對象位於記憶體中之後,新增私人數據 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]包含著色器/或效果的檔案。
備註
/mergeUAVs
使用、 /matchUAVs
和 /shtemplate
選項來對齊著色器鏈結的 UAV 系結位置。
假設您有著色器 A.fx、B.fx 和 C.fx。 若要對齊這個著色器鏈結的 UAV 系結位置,您需要兩次編譯階段:
對齊著色器鏈結的UAV系結位置
- 使用 /mergeUAV 編譯著色器,並使用 /shtemplate 指定先前編譯的著色器 Blob。 例如:
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- 使用 /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 作為具有對齊 UAV 位置的最終著色器 Blob。
設定檔
每個著色器模型都會加上 HLSL 配置檔的標籤。 若要針對特定著色器模型編譯著色器,請從下表選擇適當的著色器配置檔。
著色器類型 | 設定檔 |
---|---|
計算著色器 |
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 中的資源系結,以及使用 HLSL 5.1 的動態索引編製。
在 Direct3D 10 中,呼叫下列函式來取得最適合指定裝置的頂點、幾何和像素著色器配置檔:D3D10GetVertexShaderProfile、D3D10GetPixelShaderProfile 和 D3D10GetGeometryShaderProfile。
在 Direct3D 9 中,使用 GetDeviceCaps 或 GetDeviceCaps 方法來擷取裝置支援的頂點和像素著色器配置檔。 這些方法所傳回的D3DCAPS9結構表示裝置在其 VertexShaderVersion 和 PixelShaderVersion 成員中支援的頂點和像素著色器配置檔。
如需範例,請參閱 使用目前的編譯程式進行編譯。