Questo sito non è in nessun modo collegato a Microsoft.
I punti di vista ed i commenti inseriti nei blog degli utenti sono personali e non necessariamente coincidenti con i nostri.
La nostra direzione non è responsabile per il contenuto di siti internet esterni.
10.3. Scorrimento linea di separazione
Posted Ven, 16/04/2010 - 18:39 by Koder4Fun
5
Il tuo voto: NessunoMedia: 5(1 vote)
L'effetto presenta l'animazione di una linea verticale immaginaria che, spostandosi sa sinistra verso destra, render visibile all'utente l'immagine destinazione; caratteristica particolare è che le due immagini non subiscono uno scorrimento.
1 // Sampler dell'immagine sorgente 2 sampler2D sourceSampler; 3 sampler2D destSampler; 4 5 // Inverso della dimensione del viewport 6 uniform float2 invViewSize; 7 8 // Posizione della transizione 0.0 ... 1.0 9 uniform float transition; 10 11 float4ps_main(float2 TexCoords :TEXCOORD0) :COLOR0 12 { 13 // Recupero le informazioni dai render-targets per il pixel corrente 14 float4 srcColor =tex2D(sourceSampler, TexCoords); 15 float4 destColor =tex2D(destSampler, TexCoords); 16 17 // Le coordinate di texture vanno da 0.0 a 1.0 quindi possiamo 18 // determinare quale texture renderizzare confrontandole con 19 // la posizione della transizione che ha lo stesso range. 20 if(TexCoords.x >= transition) 21 return srcColor; 22 else 23 return destColor; 24 }
Come visibile dal codice l'effetto è ottenuto tramite il blocco condizionale (linee 20...23) che, in base al valore della variabile transition e alle coordinate di texture del pixel corrente, seleziona l'immagine sorgente o destinazione. Il confronto tra la variabile e le coordinate di texture è coerente perchè entrambi hanno range 0.0 ... 1.0.
È interessante notare che, modificando semplicemente la componente delle coordinate di texture che viene coinvolta nel confronto, è possibile realizzare sia una linea verticale che una orizzontale. Utilizzando 1.0-transition come termine di confronto, è possibile invertire la direzione di movimento.