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 將它加上每個指令的位元組位移。
/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>
的任意位元組序列, (任意序列的) 位元組。
您必須使用 /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 系結位置
- 使用 /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 作為最終著色器 Blob 搭配對齊的 UAV 位置。
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 中的資源系結 , 以及使用 HLSL 5.1 的動態索引。
在 Direct3D 10 中,使用 API 透過呼叫下列函式來取得最適合指定裝置的頂點、幾何和圖元著色器設定檔: D3D10GetVertexShaderProfile、 D3D10GetPixelShaderProfile和 D3D10GetGeometryShaderProfile。
在 Direct3D 9 中,使用 GetDeviceCaps 或 GetDeviceCaps 方法來擷取裝置支援的頂點和圖元著色器設定檔。 這些方法所傳回 的 D3DCAPS9 結構表示裝置在其 VertexShaderVersion 和 PixelShaderVersion 成員中支援的頂點和圖元著色器設定檔。
如需範例,請參閱 使用目前的編譯器進行編譯。
相關主題
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應