La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corso di Elementi di Grafica Digitale Massimo De March

Presentazioni simili


Presentazione sul tema: "Corso di Elementi di Grafica Digitale Massimo De March"— Transcript della presentazione:

1 Corso di Elementi di Grafica Digitale Massimo De March
Blending Corso di Elementi di Grafica Digitale Massimo De March Blending

2 Introduzione È usato per unire il colore di un dato pixel che sta per essere disegnato con il pixel che è già sullo schermo Esistono vari tipi di blending Additivo (Pixel Finale=PixelLayer1+PixelLayer2) Sottrattivo (Pixel Finale=PixelLayer1-PixelLayer2) Modulativo (Pixel Finale=PixelLayer1*PixelLayer2) Blending

3 Alpha Blending È un caso particolare di blending
Si usa per gestire la trasparenza È il caso più usato e che esporrò Si basa sull’uso della componente Alpha del colore Blending

4 Alpha È il quarto componente del colore, specificato solitamente per ultimo GL_RGB viene usato per specificare il colore con 3 componenti GL_RGBA può essere usato per specificare anche l'alfa Si può usare glColor4f() anziché glColor3f() La maggior parte della gente pensa ad Alpha come all'indice di opacità del materiale 0.0 materiale completamente trasparente 1.0 materiale completamente opaco. Blending

5 Equazione Di Alpha Blending
(Rs Sr + Rd Dr, Gs Sg + Gd Dg, Bs Sb + Bd Db, As Sa + Ad Da) r ed s specificano i pixel sorgenti e di destinazione Le componenti di D ed S sono i fattori di blending I valori più comuni per la S e la D sono (As, As, As, As) (cioè Alpha source) per la S e (1, 1, 1, 1) - (As, As, As, As) (cioè Alpha meno uno) per D Il risultato sarà: (Rs As + Rd (1 - As), Gs As + Gd (1 - As), Bs As + Bs (1 - As), As As + Ad (1 - As)) Blending

6 Blending in OpenGL – La Norma
Si crea un colore con fattore Alpha usando: glColor4f(1.0f, 1.0f, 1.0f, 0.5f) Si applica l’equazione per il calcolo del colore: glBlendFunc(sfactor, dfactor) specifica i fattori moltiplicativi che devono essere utilizzati dalla funzione di blending. sfactor: specifica come devono essere considerate le componenti Red, Green, Blue e Alpha dei pixels sorgenti dfactor: specifica come devono essere considerate le componenti Red, Green, Blue e Alpha dei pixels di destinazione Si disattiva il depth buffer in quanto gli oggetti dietro la figura trasparente si devono vedere glDisable(GL_DEPTH_TEST) Si attiva il blending glEnable(GL_BLEND) Blending

7 Metodo Operativo Disegnare tutti i poligoni trasparenti (con Alpha < 1.0) dopo aver disegnato l' intera scena Disegnare nell' ordine di profondità inverso (l'oggetto più lontano per primo) Blending

8 Metodo Operativo - Dettagli
Eseguendo il blending su due poligoni (1 e 2) in ordine differente, fornisce risultati differenti Ipotizzando che il poligono 1 è più vicino all'osservatore, il modo corretto dovrebbe disegnare prima il poligono 2 e poi il poligono 1 La luce che arriva da dietro questi due poligoni deve passare prima attraverso il poligono 2, quindi attraverso il poligono 1, prima di arrivare all'occhio dell'osservatore Blending

9 Metodo Operativo – L’Ottimo
Ordinare i poligoni trasparenti a seconda della profondità (Depth) e disegnarli dopo che l’intera scena sia stata disegnata, col Depth Buffer attivato Blending

10 Blending & Texture Map Nel texture mode modulato, ogni pixel texturizzato è moltiplicato per il colore corrente. Se il colore che deve essere disegnato è (0.5, 0.6, 0.4), lo si moltiplica tante volte per il colore ottenendo (0.5, 0.6, 0.4, 0.2) (alpha si assume che sia 1.0 se non specificata). Blending

11 Blending & Texture Map II
Il valore di Alpha che viene usato per la trasparenza può essere letto da texture map proprio come il colore. Basta inserire il componente colore Alpha nell' immagine da caricare e quindi usare GL_RGBA per il formato di colore nelle chiamate a glTexImage2D() Blending

12 Blending DEMOS Blending

13 IDirect3DDevice9, SetRenderState, State, Value
Blending in Direct 3D9 Il metodo Operativo rimane lo stesso, cambiano solo le funzione per abilitare tale funzione Tutti i parametri sono impostabili tramite il metodo SetRenderState IDirect3DDevice9, SetRenderState, State, Value State: variabile da impostare (D3DRENDERSTATETYPE) Value: valore da assegnare alla variabile Blending

14 Blending in Direct 3D9 II D3DRENDERSTATETYPE D3DRS_ALPHABLENDENABLE
D3DRS_ALPHABLENDENABLE = 27 Attiva blending D3DRS_SRCBLEND = 19 Fattori per sorgente D3DRS_DESTBLEND = 20 Fattori per destinazione D3DRS_BLENDOP = Operazione di blending D3DRS_ALPHABLENDENABLE FALSE = 0 Disabilita il blending TRUE = 1 Abilita il blending D3DRS_SRCBLEND e D3DRS_DESTBLEND D3DBLEND_ZERO = 1 (0, 0, 0, 0) D3DBLEND_ONE = 2 (1, 1, 1, 1) D3DBLEND_SRCCOLOR = 3 (As, Rs, Gs, Bs) D3DBLEND_INVSRCCOLOR = 4 (1-As, 1-Rs, 1-Gs, 1-Bs) D3DBLEND_SRCALPHA = 5 (As, As, As, As) D3DBLEND_INVSRCALPHA = 6 (1-As, 1-As, 1-As, 1-As) D3DBLEND_DESTALPHA = 7 (Ad, Ad, Ad, Ad) D3DBLEND_INVDESTALPHA = 8 (1-Ad, 1-Ad, 1-Ad, 1-Ad) D3DBLEND_DESTCOLOR = 9 (Ad, Rd, Gd, Bd) D3DBLEND_INVDESTCOLOR = 10 (1-Ad, 1-Rd, 1-Gd, 1-Bd) D3DRS_BLENDOP D3DBLENDOP_ADD = 1 Somma D3DBLENDOP_SUBTRACT = 2 Sottrae D3DBLENDOP_REVSUBTRACT = 3 Sottrae fattori con ordine inverso (Dst - Src) D3DBLENDOP_MIN = 4 Min (Src, Dst) D3DBLENDOP_MAX = 5 Max (Src, Dst) Blending

15 Grazie per l’attenzione
Blending Texture Grazie per l’attenzione Blending


Scaricare ppt "Corso di Elementi di Grafica Digitale Massimo De March"

Presentazioni simili


Annunci Google