La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


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

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

2 Blending2 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)

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

4 Blending4 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.

5 Blending5 Equazione Di Alpha Blending 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 (Rs Sr + Rd Dr, Gs Sg + Gd Dg, Bs Sb + Bd Db, As Sa + Ad Da) Il risultato sarà: (Rs As + Rd (1 - As), Gs As + Gd (1 - As), Bs As + Bs (1 - As), As As + Ad (1 - As))

6 Blending6 Blending in OpenGL – La Norma Si crea un colore con fattore Alpha usando: glColor4f(1.0f, 1.0f, 1.0f, 0.5f) Si applica lequazione 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)

7 Blending7 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)

8 Blending8 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

9 Blending9 Metodo Operativo – LOttimo Ordinare i poligoni trasparenti a seconda della profondità (Depth) e disegnarli dopo che lintera scena sia stata disegnata, col Depth Buffer attivato

10 Blending10 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).

11 Blending11 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()

12 Blending12 Blending DEMOS

13 Blending13 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

14 Blending14 Blending in Direct 3D9 II D3DRENDERSTATETYPE D3DRS_ALPHABLENDENABLE = 27 Attiva blending D3DRS_SRCBLEND = 19 Fattori per sorgente D3DRS_DESTBLEND = 20 Fattori per destinazione D3DRS_BLENDOP = 171 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)

15 Blending15 Blending Texture Grazie per lattenzione


Scaricare ppt "Blending 1 Corso di Elementi di Grafica Digitale Massimo De March."

Presentazioni simili


Annunci Google