10.2. Dissolvenza incrociata (cross-fading)

5
Il tuo voto: Nessuno Media: 5 (1 vote)

Questo effetto prevede che in ingresso siano presenti due immagini, una sorgente ed una destinazione; il mix tra queste immagini è controllato, esattamente come per l'effetto precedente, dalla funzione lerp.

  1 // Sampler delle immagini sorgente e destinazione
  2 sampler2D sourceSampler;
  3 sampler2D destSampler;
  4 
  5 // Posizione della transizione 0.0 ... 1.0
  6 uniform float transition;
  7 
  8 float4 ps_main(float2 TexCoords : TEXCOORD0) : COLOR0
  9 {
 10     // Recupero le informazioni dai render-targets per il pixel corrente
 11     float4 srcColor = tex2D(sourceSampler, TexCoords);
 12     float4 destColor = tex2D(destSampler, TexCoords);
 13 
 14     // Interpolazione tra le due immagini
 15     return lerp(srcColor, destColor, transition);
 16 }

Visualizzazione dell'effetto:

Data la sua natura non sempre è possibile continuare a renderizzare entrambe le scene, visualizzate durante l'effetto, ottenendo simultaneamente anche due animazioni indipendenti per la complessità e la pesantezza che ne deriverebbero. In questi casi si sceglie di animare la scena che verrà visualizzata nella texture destinazione e lasciare la texture sorgente invariata.