Rendering di un effetto (Direct3D 10)

Un effetto può essere usato per archiviare le informazioni o per eseguire il rendering usando un gruppo di stato. Ogni tecnica specifica vertex shader, geometry shader, pixel shader, stato dello shader, campionatore e stato della trama e altro stato della pipeline. Quindi, dopo aver organizzato lo stato in un effetto, è possibile incapsulare l'effetto di rendering risultante da tale stato creando e eseguendo il rendering dell'effetto.

Esistono alcuni passaggi per preparare un effetto per il rendering. La prima è la compilazione, che controlla HLSL come codice rispetto alla sintassi del linguaggio HLSL e alle regole del framework degli effetti. È possibile compilare un effetto dall'applicazione usando chiamate API oppure è possibile compilare un effetto offline usando l'utilità del compilatore dell'effetto. Dopo aver compilato correttamente l'effetto, crearlo chiamando un set di API diverso (ma molto simile).

Dopo aver creato l'effetto, sono necessari due passaggi rimanenti per usarlo. Innanzitutto, è necessario inizializzare i valori dello stato dell'effetto (i valori delle variabili dell'effetto) usando diversi metodi per impostare lo stato. Per alcune variabili questa operazione può essere eseguita una sola volta quando viene creato un effetto; altri devono essere aggiornati ogni volta che l'applicazione chiama il ciclo di rendering. Dopo aver impostato le variabili dell'effetto, indicare al runtime di eseguire il rendering dell'effetto applicando una tecnica. Questi argomenti sono descritti in dettaglio più avanti.

Naturalmente, esistono considerazioni sulle prestazioni per l'uso degli effetti. Queste considerazioni sono in gran parte le stesse se non si usa un effetto. Elementi come, riducendo al minimo la quantità di modifiche dello stato o organizzando le variabili che devono essere aggiornate in base alla frequenza. Queste tattiche vengono usate per ridurre al minimo la quantità di dati che devono essere inviati dalla CPU alla GPU e quindi ridurre al minimo i potenziali problemi di sincronizzazione.

Effetti (Direct3D 10)