Syntax
Hier ist die Syntax zum Aufrufen von FXC.exe, dem Effektcompilertool. Ein Beispiel finden Sie unter Offline-Kompilieren von.
Verbrauch
fxc SwitchOptions Filenames
Argumente
Trennen Sie jede Switchoption durch ein Leerzeichen oder einen Doppelpunkt.
SwitchOptions
[in ] Kompilierungsoptionen. Es gibt nur eine erforderliche Option, und viele weitere sind optional. Trennen Sie jedes durch ein Leerzeichen oder einen Doppelpunkt.
Erforderliche Option
Profil "/T <">
Shadermodell (siehe Profile).
Optionale Optionen
/?, /help
Drucken Sie die Hilfe für FXC.exe .
@<command.option.file>
Datei, die zusätzliche Kompilierungsoptionen enthält. Diese Option kann mit anderen Befehlszeilenkompilierungsoptionen kombiniert werden. "command.option.file" darf nur eine Option pro Zeile enthalten. "command.option.file" darf keine leeren Zeilen enthalten. In der Datei angegebene Optionen dürfen keine führenden oder nachgestellten Leerzeichen enthalten.
/all_resources_bound
Aktivieren Sie aggressives Abflachen in SM5.1+. Neu für Direct3D 12.
/Cc
Ausgabe der farbcodierten Assembly.
/compress
Komprimieren Sie DX10-Shader-Bytecode aus Dateien.
/D <ID-Text >=< >
Definieren Sie das Makro.
/decompress
Dekomprimieren Sie dx10 shader bytecode aus der ersten Datei. Ausgabedateien sollten in der Reihenfolge aufgeführt werden, in der sie sich während der Komprimierung befanden.
/dumpbin
Lädt eine Binärdatei, anstatt einen Shader zu kompilieren.
</E-Name>
Shadereinstiegspunkt. Wenn kein Einstiegspunkt angegeben wird, wird main als Shadereintragsname betrachtet.
/enable_unbounded_descriptor_tables
Aktiviert ungebundene Deskriptortabellen. Neu für Direct3D 12.
/extractrootsignature <-Datei>
Extrahieren Sie die Stammsignatur aus dem Shader-Bytecode. Neu für Direct3D 12.
/Fc <-Datei>
Ausgabeassemblycodeauflistungsdatei.
/Fd <-Datei>
Extrahieren Sie Die Informationen zur Shader-Programmdatenbank (PDB), und schreiben Sie in die angegebene Datei. Wenn Sie den Shader kompilieren, verwenden Sie /Fd, um eine PDB-Datei mit Shaderdebuginformationen zu generieren.
/Fe <-Datei>
Ausgeben von Warnungen und Fehlern an die angegebene Datei.
Datei "/Fh <">
Ausgabeheaderdatei mit Objektcode.
/Fl <-Datei
Ausgabe einer Bibliothek. Erfordert den D3dcompiler _47.dll oder eine höhere Version der DLL.
/Fo <-Datei>
Ausgabeobjektdatei. Häufig mit der Erweiterung " .fxc, " obwohl andere Erweiterungen verwendet werden, " z. B. " O, " OBJ oder " " " DXBC.
/Fx <-Datei>
Ausgabeassemblycode und hexadezimale Auflistungsdatei.
/Gch
Kompilieren Sie als untergeordneten Effekt für fx_4_x Profile.
Hinweis
Die Unterstützung von Legacyeffektprofilen ist veraltet.
/Bip
Deaktivieren Sie den Effektleistungsmodus.
/Gec
Aktivieren Sie den Abwärtskompatibilitätsmodus.
/Ges
Aktivieren Sie den Strict-Modus.
/getprivate <-Datei>
Speichern Sie private Daten aus dem Shaderblob (kompilierte Shaderbinärdatei) in der angegebenen Datei. Extrahiert private Daten, die zuvor durch /setprivate eingebettet wurden, aus dem Shaderblob.
Sie müssen die Option /dumpbin mit /getprivate angeben. Zum Beispiel:
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
Vermeiden Sie Flusssteuerungskonstrukte.
/Soll
Flusssteuerungskonstrukte bevorzugen.
/Js
Erzwingen Sie IEEE-Strenge.
/Gpp
Erzwingen Sie partielle Genauigkeit.
/I <include>
Zusätzlicher Includepfad.
/Lx
Gibt Hexadezimalliterale aus. Erfordert den D3dcompiler _47.dll oder eine höhere Version der DLL.
/matchUAVs
Übereinstimmung mit UAV-Slotzuordnungen für Vorlagen-Shader im aktuellen Shader. Weitere Informationen finden Sie unter Hinweise.
/mergeUAVs
Zusammenführen von UAV-Slotzuordnungen des Vorlagen-Shaders und des aktuellen Shaders. Weitere Informationen finden Sie unter Hinweise.
/Ni
Ausgabeanweisungsnummern in Assemblyauflistungen.
/Nein
Ausgabeanweisungs-Byteoffset in Assemblyauflistungen. Wenn Sie eine Assembly erstellen, verwenden Sie /No, um sie mit dem Byteoffset für jede Anweisung zu kommentieren.
/nologo
Copyrightmeldung unterdrücken
/Od
Deaktiviert Optimierungen. /Od impliziert /Sollen, obwohl die Ausgabe möglicherweise nicht identisch mit /Od /Sollen ist.
/Op
Deaktivieren Sie Präshader (veraltet).
/O0 /O1, /O2, /O3
Optimierungsebenen. O1 ist die Standardeinstellung.
- O0: Deaktiviert die Neuanordnung von Anweisungen. Dies trägt zur Reduzierung der Registerlast bei und ermöglicht eine schnellere Schleifensimulation.
- O1: Deaktiviert die Neuanordnung von Anweisungen für ps_3_0 und up.
- O2: Identisch mit O1. Für die zukünftige Verwendung reserviert.
- O3: Identisch mit O1. Für die zukünftige Verwendung reserviert.
/P <Datei>
Vorverarbeitung in Datei (muss allein verwendet werden).
/Qstrip_debug
Entfernen Von Debugdaten aus Shader-Bytecode für Profile mit mehr als 4_0.
/Qstrip_priv
Entfernen Sie die privaten Daten aus mehr als 4_0 Shader-Bytecode. Entfernt private Daten (beliebige Bytesequenz) aus dem Shaderblob (kompilierte Shaderbina), das Sie zuvor mit der Option eingebettet /setprivate <file> haben.
Sie müssen die Option /dumpbin mit /Qstrip_priv. Zum Beispiel:
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
Entfernen von Reflektionsdaten aus shader-Bytecode für Profile mit mehr als 4_0.
/Qstrip_rootsignature
Entfernt die Stammsignatur vom Shader-Bytecode. Neu für Direct3D 12.
/res_may_alias
Angenommen, UAVs/SRVs können alias für cs_5_0+ aliasen. Erfordert die D3dcompiler-47.dll _ oder eine neuere Version der DLL.
/setprivate <Datei>
Fügen Sie dem kompilierten Shaderblob private Daten in der angegebenen Datei hinzu. Bettet die gegebene Datei, die als roher Puffer behandelt wird, in das Shaderblob ein. Verwenden Sie /setprivate, um private Daten hinzuzufügen, wenn Sie einen Shader kompilieren. Oder verwenden Sie die Option /dumpbin mit /setprivate, um ein vorhandenes Shaderobjekt zu laden, und fügen Sie dann, nachdem sich das Objekt im Arbeitsspeicher befindet, das private Datenblob hinzu. Verwenden Sie beispielsweise entweder einen einzelnen Befehl mit /setprivate, um einem kompilierten Shaderblob private Daten hinzuzufügen:
fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx
/setprivate ps01.private.data
Oder verwenden Sie zwei Befehle, bei denen der zweite Befehl ein Shaderobjekt lädt und dann private Daten hinzufügt:
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 <Datei>
Fügt die Stammsignatur an Shader-Bytecode an. Neu für Direct3D 12.
/shtemplate <Datei>
Verwenden Sie die angegebenen Vorlagen-Shaderdateien zum Zusammenführen (/mergeUAVs) und übereinstimmenden Ressourcen (/matchUAVs). Weitere Informationen finden Sie unter Hinweise.
/Vd
Deaktivieren Sie die Validierung.
/verifyrootsignature <Datei>
Überprüfen Sie den Shader-Bytecode mit der Stammsignatur. Neu für Direct3D 12.
/Vi
Zeigt Details zum Includeprozess an.
/Vn <Name>
Verwenden Sie name als Variablennamen in der Headerdatei.
/WX
Warnungen als Fehler behandeln.
/ZI
Aktiviert Debuginformationen.
/Zpc
Packmatrizen in Spalten-Hauptordnung.
/Zpr
Packmatrizen in Zeilen-Hauptreihen reihenfolge.
Dateinamen
[in ] Die Dateien, die die Shader und/oder die Auswirkungen enthalten.
Hinweise
Verwenden Sie /mergeUAVs die Optionen , und , um die /matchUAVs /shtemplate UAV-Bindungsslots für eine Kette von Shadern auszurichten.
Angenommen, Sie verfügen über die Shader A.fx, B.fx und C.fx. Um die UAV-Bindungsslots für diese Kette von Shadern auszurichten, benötigen Sie zwei Kompilierungsläufe:
So richten Sie die UAV-Bindungsslots für eine Kette von Shadern aus
- Verwenden Sie /mergeUAVs, um Shader zu kompilieren, und geben Sie ein zuvor kompiliertes Shaderblob mit /shtemplate an. Zum Beispiel:
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o - Verwenden Sie /matchUAVs, um Shader zu kompilieren, und geben Sie das letzte Shaderblob aus dem ersten Durchgang mit /shtemplate an. Sie können in beliebiger Reihenfolge kompilieren. Zum Beispiel:
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
Sie müssen C.fx im zweiten Durchgang nicht erneut kompilieren.
Nachdem Sie die beiden vorherigen Kompilierungsläufe erstellt haben, können Sie A.o, B.o und C.o als endgültige Shaderblobs mit ausgerichteten UAV-Slots verwenden.
Profiles
Jedes Shadermodell ist mit einem HLSL-Profil gekennzeichnet. Um einen Shader für ein bestimmtes Shadermodell zu kompilieren, wählen Sie das entsprechende Shaderprofil aus der folgenden Tabelle aus.
| Shadertyp | Profiles |
|---|---|
| Compute-Shader |
cs_4_1 cs_5_0 cs_5_1 |
| Domain-Shader |
ds_5_1 |
| Geometrie-Shader |
gs_4_1 gs_5_0 gs_5_1 |
| HLSL-Shaderverknüpfung |
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 |
| Rumpf-Shader |
hs_5_1 |
| Pixelshader |
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 |
| Stammsignatur |
|
| Textur-Shader |
|
| Vertexshader |
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 |
Versionshinweise
Informationen zu Direct3D 12 finden Sie unter Angeben von Stammsignaturen in HLSL,Ressourcenbindung in HLSL und dynamische Indizierung mitHILFE von HLSL 5.1.
Verwenden Sie in Direct3D 10 die API, um den Scheitelpunkt, die Geometrie und das Pixelshaderprofil zu erhalten, das sich am besten für ein bestimmtes Gerät eignet, indem Sie die folgenden Funktionen aufrufen: D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfileund D3D10GetGeometryShaderProfile.
Verwenden Sie in Direct3D 9 die Methoden GetDeviceCaps oder GetDeviceCaps, um die scheitelpunkt- und pixel-shader-Profile abzurufen, die von einem Gerät unterstützt werden. Die von diesen Methoden zurückgegebene D3DCAPS9-Struktur gibt die Scheitelpunkt- und Pixelshaderprofile an, die von einem Gerät in seinen VertexShaderVersion- und PixelShaderVersion-Membern unterstützt werden.
Beispiele finden Sie unter Kompilieren mit dem aktuellen Compiler.