Flag D3DXSHADER

I flag D3DXSHADER vengono usati per l'analisi, la compilazione o l'assemblaggio degli shader.

Flag del parser

I flag di tempo di analisi vengono usati solo dal sistema di effetti (prima della compilazione degli effetti) quando si crea un compilatore di effetti. Ad esempio, è possibile creare un oggetto del compilatore con D3DXSHADER_PACKMATRIX_COLUMNMAJOR e quindi usare ripetutamente tale oggetto del compilatore con flag del compilatore diversi per generare codice specializzato.

Costante Descrizione
D3DXSHADER_PACKMATRIX_COLUMNMAJOR
/Zpc
A meno che non venga specificato in modo esplicito, le matrici verranno compresse in ordine principale di colonna (ogni vettore si troverà in una singola colonna) quando viene passato da e verso lo shader. Ciò è in genere più efficiente perché consente l'esecuzione della moltiplicazione a matrice vettoriale usando una serie di prodotti con punti.
D3DXSHADER_PACKMATRIX_ROWMAJOR
/Zpr
A meno che non venga specificato in modo esplicito, le matrici verranno compresse in ordine principale di riga (ogni vettore si troverà in una singola riga) quando viene passato a o dallo shader.

Flag del compilatore

Il compilatore DirectX 10 HLSL è ora il compilatore predefinito. Per informazioni dettagliate, vedere Strumento del compilatore di effetti .

La tabella seguente illustra in dettaglio i flag disponibili in Direct3D 9 e Direct3D 10. Il valore per il flag è l'opzione fxc equivalente.

Costante/valore Descrizione
D3DXSHADER_AVOID_FLOW_CONTROL
/Gfa
Si tratta di un suggerimento per il compilatore per evitare di usare le istruzioni di controllo del flusso.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_DEBUG
/Zi
Inserire le informazioni sul nome file di debug, sui numeri di riga e sul tipo e sui simboli durante la compilazione dello shader.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY
/Gec
Compilare gli shader ps_1_x come ps_2_0. Gli effetti che specificano ps_1_x destinazioni verranno invece compilati in ps_2_0 destinazioni perché si tratta della versione minima dello shader supportata dalla versione del compilatore shader fornita con DirectX 10. Questo flag non ha alcun effetto se usato con destinazioni di compilazione di livello superiore.
Direct3D 9 - No
Direct3D 10 - Sì
D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
N/D
Forzare la compilazione del compilatore in base alla destinazione software più elevata disponibile successiva per i pixel shader. Questo flag attiva anche le ottimizzazioni e il debug.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
N/D
Forzare la compilazione del compilatore rispetto alla destinazione software più elevata disponibile successiva per i vertex shader. Questo flag attiva anche le ottimizzazioni e il debug.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_IEEE_STRICTNESS
/Gis
Disabilitare le ottimizzazioni che potrebbero causare la differenza tra l'output di un programma shader compilato e l'output di un programma compilato con il compilatore shader DirectX 9 a causa di piccole precisioni nei calcoli matematici a virgola mobile.
Direct3D 9 - No
Direct3D 10 - Sì
D3DXSHADER_NO_PRESHADER
/Op
Disabilita gli preshader. Il compilatore non estrae le espressioni statiche per la valutazione nella CPU host. Inoltre, il compilatore non eseguirà alcuna espressione durante la compilazione di funzioni autonome.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_OPTIMIZATION_LEVEL0
/O0
Livello di ottimizzazione minimo. Può produrre codice più lento, ma lo farà più rapidamente. Ciò può essere utile in un ciclo di sviluppo dello shader altamente iterativo.
Direct3D 9 - No
Direct3D 10 - Sì
D3DXSHADER_OPTIMIZATION_LEVEL1
/O1
Secondo livello di ottimizzazione più basso.
Direct3D 9 - No
Direct3D 10 - Sì
D3DXSHADER_OPTIMIZATION_LEVEL2
/O2
Secondo livello di ottimizzazione più alto.
Direct3D 9 - No
Direct3D 10 - Sì
D3DXSHADER_OPTIMIZATION_LEVEL3
/O3
Massimo livello di ottimizzazione. Produrrà il codice migliore possibile, ma potrebbe richiedere molto più tempo per farlo. Ciò sarà utile per le compilazioni finali di un'applicazione in cui le prestazioni sono il fattore più importante.
Direct3D 9 - No
Direct3D 10 - Sì
D3DXSHADER_PARTIALPRECISION
/Gpp
Forzare tutti i calcoli nello shader risultante in modo che si verifichino con precisione parziale. Ciò può comportare una valutazione più rapida degli shader in alcuni hardware.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_PREFER_FLOW_CONTROL
/Gfp
Si tratta di un suggerimento per il compilatore per preferire l'uso delle istruzioni di controllo del flusso.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_SKIPOPTIMIZATION
/Od
Indicare al compilatore di ignorare i passaggi di ottimizzazione durante la generazione di codice. A meno che non si stia tentando di isolare un problema nel codice e si sospetta che il compilatore usi questa opzione non sia consigliata.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_SKIPVALIDATION
/Vd
Non convalidare il codice generato rispetto a funzionalità e vincoli noti. Questa opzione è consigliata solo quando si compilano shader noti per il funzionamento, ovvero shader compilati prima senza questa opzione. Gli shader vengono sempre convalidati dal runtime prima che vengano impostati sul dispositivo.
Direct3D 9 - Sì
Direct3D 10 - Sì
D3DXSHADER_USE_LEGACY_D3DX9_31_DLL
/LD
Abilitare l'uso del compilatore Direct3D 9 HLSL originale. OCT2006_d3dx9_31_x86.cab o OCT2006_d3dx9_31_x64.cab devono essere inclusi come parte del ridistribuitore delle applicazioni. Questo flag è necessario per compilare ps_1_x shader senza usare il flag di promozione per ps_2_0. Se si specifica questo flag quando si ottiene un'interfaccia ID3DXEffectCompiler , le chiamate successive a CompileEffect e CompileShader tramite questo oggetto per l'uso del compilatore legacy.
Direct3D 9 - Sì
Direct3D 10 - no

Flag di assembler

I flag di assembler vengono usati dal sistema di effetto per ottimizzare shader ed effetto del codice assembly.

Costante Descrizione
D3DXSHADER_DEBUG
Inserire i nomi di file di debug, i numeri di riga e le informazioni sui simboli durante la compilazione dello shader.
D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
Forzare la compilazione del compilatore rispetto alla destinazione software più elevata disponibile successiva per pixel shader. Questo flag attiva anche ottimizzazioni e debug.
D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
Forzare la compilazione del compilatore rispetto alla destinazione software più elevata disponibile successiva per i vertex shader. Questo flag attiva anche ottimizzazioni e debug.
D3DXSHADER_SKIPVALIDATION
Non convalidare il codice generato rispetto a funzionalità e vincoli noti. Questa opzione è consigliata solo quando si compilano shader noti per il funzionamento, ovvero shader compilati prima senza questa opzione. Gli shader vengono sempre convalidati dal runtime prima che vengano impostati sul dispositivo.

Commenti

Il sistema dell'effetto userà i flag di parser quando viene chiamato dalle funzioni seguenti:

Il sistema di effetto userà i flag del compilatore quando viene chiamato dalle funzioni seguenti:

È inoltre possibile usare i flag del compilatore durante la creazione di un effetto chiamando D3DXCreateEffect (o D3DXCreateEffectFromFile o D3DXCreateEffectFromResource).

  • Se si passa un file con estensione fx non compilato, il sistema di effetto userà il parametro di input del flag durante la compilazione.
  • Se si passa un effetto compilato, il sistema dell'effetto ignora i flag del compilatore perché non sono necessari per caricare l'effetto.

Il sistema di effetto userà i flag di assembler quando viene chiamato dalle funzioni seguenti:

L'applicazione di flag del compilatore o flag di assembler all'API non corretta avrà esito negativo. Controllare il valore restituito dal codice di errore Direct3D dalla funzione con lo strumento ricerca errori DirectX (DXErr.exe) per tenere traccia di questo errore. È possibile ottenere DXErr.exe e scoprirlo da DirectX SDK. Per informazioni su DirectX SDK, vedere Dove è DirectX SDK?.

Requisiti

Requisito Valore
Intestazione
D3dx9shader.h

Vedi anche

Costanti D3DX