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.

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

  1. 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
    
  2. 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.

ShadertypProfiles
Compute-Shader
cs_4_0
cs_4_1
cs_5_0
cs_5_1
Domain-Shader
ds_5_0
ds_5_1
Geometrie-Shader
gs_4_0
gs_4_1
gs_5_0
gs_5_1
HLSL-Shaderverknüpfung
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
Weitere Informationen zur Shaderverknüpfung finden Sie unter ID3D11Linker und ID3D11FunctionLinkingGraph.
Rumpf-Shader
hs_5_0
hs_5_1
Pixelshader
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
Stammsignatur
rootsig_1_0
Textur-Shader
tx_1_0
Vertexshader
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

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.