Rendering di un effetto (Direct3D 10)

Un effetto può essere usato per archiviare informazioni o per eseguire il rendering usando un gruppo di stati. Ogni tecnica specifica vertex shader, shader geometry shader, pixel shader, stato dello shader, sampler 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 l'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, esistono due passaggi rimanenti per usarlo. 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 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, viene indicato al runtime di eseguire il rendering dell'effetto applicando una tecnica. Questi argomenti sono tutti illustrati in dettaglio di seguito.

Naturalmente esistono considerazioni sulle prestazioni per l'uso di effetti. Queste considerazioni sono in gran parte uguali se non si usa un effetto. Cose 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)