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.

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 /mergeUAVsopzioni , /matchUAVse /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

  1. 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
    
  2. 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 shaderProfili
Compute Shader
cs_4_0
cs_4_1
cs_5_0
cs_5_1
Domain Shader
ds_5_0
ds_5_1
Geometry shader
gs_4_0
gs_4_1
gs_5_0
gs_5_1
Collegamento dello shader HLSL
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
Per altre info sul collegamento di shader, vedi ID3D11Linker e ID3D11FunctionLinkingGraph.
Hull Shader
hs_5_0
hs_5_1
Pixel shader
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
Firma radice
rootsig_1_0
Shader trama
tx_1_0
Vertex shader
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

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.