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 il codice HLSL come il 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 di effetti. Dopo aver compilato correttamente l'effetto, crearlo chiamando un set di API diverso (ma molto simile).

Dopo aver creato l'effetto, per usarlo sono necessari due passaggi rimanenti. Prima di tutto, è necessario inizializzare i valori dello stato dell'effetto (i valori delle variabili di 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 di effetto, si indica al runtime di eseguire il rendering dell'effetto applicando una tecnica. Questi argomenti sono illustrati in dettaglio più avanti.

Naturalmente ci sono considerazioni sulle prestazioni per l'uso degli effetti. Queste considerazioni sono in gran parte uguali se non si usa un effetto. Elementi come, riducendo al minimo la quantità di modifiche di 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)