Sintassi
Ecco la sintassi per chiamare FXC.exe, lo strumento del compilatore di effetti. Per un esempio, vedere Compilazione offline.
Utilizzo
fxc SwitchOptions Filenames
Argomenti
Separare ogni opzione switch con uno spazio o due punti.
SwitchOptions
[in] Opzioni di compilazione. È disponibile una sola opzione obbligatoria e molte altre opzioni facoltative. Separare ognuno con uno spazio o due punti.
Opzione obbligatoria
Profilo /T <>
Modello shader (vedere Profili).
Opzioni facoltative
/?, /help
Stampare la Guida per FXC.exe
.
@<command.option.file>
File contenente opzioni di compilazione aggiuntive. Questa opzione può essere combinata con altre opzioni di compilazione della riga di comando. Il file command.option.file deve contenere una sola opzione per riga. Command.option.file non può contenere righe vuote. Le opzioni specificate nel file non devono contenere spazi iniziali o finali.
/all_resources_bound
Abilitare l'appiattimento aggressivo in SM5.1+. Novità per Direct3D 12.
/Cc
Assembly codificato a colori di output.
/compress
Comprimere il bytecode dello shader DX10 dai file.
/D <id>=<text>
Definire la macro.
/decomprimere
Decomprimere il bytecode dello shader DX10 dal primo file. I file di output devono essere elencati nell'ordine in cui si trovavano durante la compressione.
/dumpbin
Carica un file binario anziché compilare uno shader.
/E <name>
Punto di ingresso shader. Se non viene specificato alcun punto di ingresso, main viene considerato il nome della voce dello shader.
/enable_unbounded_descriptor_tables
Abilita le tabelle del descrittore non associato. Novità per Direct3D 12.
/extractrootsignature <file>
Estrarre la firma radice dal bytecode dello shader. Novità per Direct3D 12.
/Fc <file>
File di listato di codice dell'assembly di output.
/Fd <file>
Estrarre le informazioni sul database del programma shader (PDB) e scrivere nel file specificato. Quando si compila lo shader, usare /Fd per generare un file PDB con informazioni di debug dello shader.
/Fe <file>
Genera avvisi ed errori nel file specificato.
File /Fh <>
File di intestazione di output contenente il codice oggetto.
/Fl <file
Generare un output di una libreria. Richiede il D3dcompiler_47.dll o una versione successiva della DLL.
File /Fo <>
File oggetto di output. Spesso dato l'estensione ".fxc", anche se vengono usate altre estensioni, ad esempio ".o", ".obj" o ".dxbc".
File /Fx <>
Codice assembly di output e file di elenco esadecimale.
/Gch
Compilare come effetto figlio per i profili fx_4_x.
Nota
Il supporto per i profili effetti legacy è deprecato.
/PIL
Disabilitare la modalità di prestazioni dell'effetto.
/Gec
Abilitare la modalità di compatibilità con le versioni precedenti.
/Ges
Abilitare la modalità strict.
/getprivate <file>
Salvare i dati privati dal BLOB dello shader (file binario dello shader compilato) nel file specificato. Estrae dati privati, precedentemente incorporati da /setprivate, dal BLOB dello shader.
È necessario specificare l'opzione /dumpbin con /getprivate. Ad esempio:
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
Evitare costrutti di controllo del flusso.
/Gfp
Preferisce costrutti di controllo del flusso.
/Sistema informativo geografico
Forzare la rigidità IEEE.
/Gpp
Forzare la precisione parziale.
/I <include>
Percorso di inclusione aggiuntivo.
/Lx
Output di valori letterali esadecimali. Richiede il D3dcompiler_47.dll o una versione successiva della DLL.
/matchUAV
Trova la corrispondenza con le allocazioni di slot UAV del modello nello shader corrente. Per altre info, vedi Osservazioni.
/mergeUAV
Unire le allocazioni di slot UAV dello shader del modello e dello shader corrente. Per altre info, vedi Osservazioni.
/Ni
Numeri di istruzioni di output negli elenchi di assembly.
/No
Offset dei byte delle istruzioni di output negli elenchi di assembly. Quando si produce assembly, usare /No per annotarlo con l'offset di byte per ogni istruzione.
/nologo
Non visualizza le informazioni sul copyright.
/Od
Disabilita le ottimizzazioni. /Od implica /Gfp, anche se l'output potrebbe non essere identico a /Od /Gfp.
/Op
Disabilitare i preshader (deprecati).
/O0 /O1, /O2, /O3
Livelli di ottimizzazione. O1 è l'impostazione predefinita.
- O0: disabilita il riordinamento delle istruzioni. Ciò consente di ridurre il carico di registrazione e di abilitare una simulazione di cicli più veloce.
- O1: disabilita il riordinamento delle istruzioni per ps_3_0 e versioni iniziali.
- O2 : uguale a O1. Riservato a un uso futuro.
- O3: uguale a O1. Riservato a un uso futuro.
File /P <>
Pre-elaborazione nel file (deve essere usata da sola).
/Qstrip_debug
Rimuovere i dati di debug dal bytecode shader per i profili 4_0+.
/Qstrip_priv
Rimuovere i dati privati dal bytecode dello shader 4_0+. Rimuove i dati privati (sequenza arbitraria di byte) dal BLOB dello shader (binario dello shader compilato) in precedenza incorporato con l'opzione /setprivate <file>
.
È necessario specificare l'opzione /dumpbin con /Qstrip_priv. Ad esempio:
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
Rimuovere i dati di reflection dal bytecode shader per i profili 4_0+.
/Qstrip_rootsignature
Rimuovere la firma radice dal bytecode dello shader. Novità per Direct3D 12.
/res_may_alias
Si supponga che le UAV/SRV possano eseguire l'alias per cs_5_0+. Richiede il D3dcompiler_47.dll o una versione successiva della DLL.
/setprivate <file>
Aggiungere dati privati nel file specificato al BLOB dello shader compilato. Incorpora il file specificato, che viene considerato come buffer non elaborato, nel BLOB dello shader. Usare /setprivate per aggiungere dati privati durante la compilazione di uno shader. In alternativa, usare l'opzione /dumpbin con /setprivate per caricare un oggetto shader esistente e quindi dopo che l'oggetto è in memoria, per aggiungere il BLOB di dati privato. Ad esempio, usare un singolo comando con /setprivate per aggiungere dati privati a un BLOB shader compilato:
fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx
/setprivate ps01.private.data
In alternativa, usare due comandi in cui il secondo comando carica un oggetto shader e quindi aggiunge dati privati:
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 <file>
Associa la firma radice al bytecode dello shader. Novità per Direct3D 12.
File /shtemplate <>
Usare il file di shader modello specificato per unire (/mergeUAV) e le risorse corrispondenti (/matchUAV). Per altre info, vedi Osservazioni.
/Vd
Disabilitare la convalida.
/verifyrootsignature <file>
Verificare il bytecode dello shader rispetto alla firma radice. Novità per Direct3D 12.
/Vi
Visualizzare i dettagli sul processo di inclusione.
/Vn <name>
Usare il nome come nome della variabile nel file di intestazione.
/WX
Considerare gli avvisi come errori.
/Zi
Abilita le informazioni di debug.
/Zpc
Comprimere le matrici nell'ordine principale della colonna.
/Zpr
Matrici di tipo pack nell'ordine principale delle righe.
Nomi di file
[in] File che contengono gli shader e/o gli effetti.
Osservazioni:
Usare le /mergeUAVs
opzioni , /matchUAVs
e /shtemplate
per allineare gli slot di associazione UAV per una catena di shader.
Si supponga di avere shader A.fx, B.fx e C.fx. Per allineare gli slot di associazione UAV per questa catena di shader, sono necessari due passaggi di compilazione:
Per allineare gli slot di associazione UAV per una catena di shader
- Usare /mergeUAV per compilare shader e specificare un BLOB shader compilato in precedenza con /shtemplate. Ad esempio:
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- Usare /matchUAV per compilare gli shader e specificare l'ultimo BLOB shader dal primo passaggio con /shtemplate. È possibile compilare in qualsiasi ordine. Ad esempio:
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
Non è necessario ricompilare C.fx nel secondo passaggio.
Dopo aver eseguito i due passaggi di compilazione precedenti, è possibile usare A.o, B.o e C.o come BLOB shader finali con slot UAV allineati.
Profili
Ogni modello di shader viene etichettato con un profilo HLSL. Per compilare uno shader in base a un modello di shader specifico, scegliere il profilo dello shader appropriato nella tabella seguente.
Tipo shader | Profili |
---|---|
Compute Shader |
cs_4_1 cs_5_0 cs_5_1 |
Domain Shader |
ds_5_1 |
Geometry shader |
gs_4_1 gs_5_0 gs_5_1 |
Collegamento dello shader 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 |
Hull Shader |
hs_5_1 |
Pixel shader |
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 |
Firma radice |
|
Shader trama |
|
Vertex shader |
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 |
Note sulla versione
Per Direct3D 12 fare riferimento a Specifica delle firme radice in HLSL, associazione di risorse in HLSL e indicizzazione dinamica tramite HLSL 5.1.
In Direct3D 10 usare l'API per ottenere il profilo vertex, geometry e pixel-shader più adatto a un determinato dispositivo chiamando queste funzioni: D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfile e D3D10GetGeometryShaderProfile.
In Direct3D 9 usare i metodi GetDeviceCaps o GetDeviceCaps per recuperare i profili vertice e pixel shader supportati da un dispositivo. La struttura D3DCAPS9 restituita da questi metodi indica i profili vertice e pixel shader supportati da un dispositivo nei relativi membri VertexShaderVersion e PixelShaderVersion.
Per esempi, vedere Compilazione con il compilatore corrente.