Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.

Slides:



Advertisements
Presentazioni simili
Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Advertisements

Laboratorio di Linguaggi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica.
Algoritmi e Programmazione
Fondamenti di Informatica Prof. Cantone
Gerarchie di Oggetti Tutti i sistemi avanzati di grafica (PHIGS, OpenGL, DirectDraw, …) permettono di definire un modello come una gerarchia di oggetti.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IV: tipi definiti dallutente Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IX Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione VIII B: Puntatori e Pasticci Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IX: Dentro le Librerie Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Lezione 7: rasterizzazione la fabbrica dei frammenti Università dellInsubria Facoltà di Scienze MFN - Varese Corso di Laurea.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Laboratorio di Linguaggi lezione III: tipi base, espressioni, type-cast Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione III Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
2 Dicembre 2002Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 23 Scene Graphs, Object Loading
Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2007/08.
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Introduzione alla grafica digitale 2005,6,7,8,9,.. Matjaž Hmeljak.
Corso di Elementi di Grafica Digitale Massimo De March
Snake 2D Snake 2D Esame: Elementi Grafica Digitale Anno accademico: 2005/06 Studente: Gianluca Racano Docente: Matjaž Hmeljak.
1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
1 Scan conversione di poligoni Daniele Marini. 2 Test interno-esterno Scan conversione di un poligono = decidere se pixel interno Test di intersezione:
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
UNIVERSITÀ DI PISA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI CORSO DI LAUREA IN INFORMATICA Realizzazione completa di un’interfaccia grafica in.
Ingegneria del software Modulo 2 -Il software come prodotto Unità didattica 2 -I costi del software Ernesto Damiani Università degli Studi di Milano Lezione.
1 Struttura di un sistema grafico e frame buffer Daniele Marini.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Ottimizzazione pipe-line Daniele Marini Da: Akinen-Möller Corso Di Programmazione Grafica.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Sistemi Multimediali II Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Laboratorio di Linguaggi lezione XI Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Transcript della presentazione:

Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione 12: pillole di CG Alpha Blending Display Lists

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 2/40 Semitrasparenze: come? Un vecchio trucco di imaging 2D: Quando scrivo un colore nello screen buffer, invece di: –sovrascrivere il colore vecchio con quello nuovo eseguo: –mischio il colore vecchio con quello nuovo –(sovrascrivo il colore vecchio con una interpolazione fra quello vecchio e quello nuovo)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 3/40 Semitrasparenze: come? x 0.5 x= x 0.75 x= x 0.25 x=

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 4/40 Semitrasparenze: come? +  x (1-  ) x= +  x(1-  ) x= +  x(1-  ) x= vecchia: (già sul buffer) nuova: che sovrascrivo  = 0.25  = 0.5  = 0.75 risultato  = livello di trasparenza

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 5/40 Alpha Blending Semitrasparenze Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice computazioni per frammento

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 6/40 Alpha Blending I colori hanno 4 componenti: –R,G,B,  Quando arriva un frammento –(che sopravvive al depth test) invece di sovrascriverlo, uso la formula Frammenti & attributi interpolati Screen buffer computazioni per frammento "alpha blending"

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 7/40 Alpha Blending Comodo avere una la trasparenza come un canale del colore! Ad esempio, posso giocare con lighting + alpha blending Frammenti & attributi interpolati Screen buffer computazioni per frammento –utile in molte situazioni, tipo: rendering di oggetti di vetro –come?

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 8/40 Alpha Blending Nota: l'alpha blending e' una operazione di read-write su memoria condivisa (come il depth test) cautela da parte di chi la implementa in HW... Frammenti & attributi interpolati computazioni per frammento Screen buffer

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 9/40 Alpha Blending Problema + grave: alpha blending e z-buffer bisticciano Per oggetti semi-trasparenti, l'ordine di rendering torna ad essere determinante (Perche?) Frammenti & attributi interpolati computazioni per frammento Screen buffer

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 10/40 Screen buffer Alpha Blending Posso avere 4 componenti anche nello screen buffer –nel caso, posso usare l'alpha dello screen buffer invece-che / oltre-a quello del frammento Frammenti & attributi interpolati componenti R G B componente  computazioni per frammento alpha dello screen buffer = "alpha di destinazione" alpha del frammento = "alpha sorgente"

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 11/40 Alpha Blending con OpenGL Per prima cosa, attivare l'alpha blending: glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) Determinare la funzione di blending: ad esempio significa proprio:

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 12/40 Alpha Blending con OpenGL Ma ci sono molte altre compinazioni possibili! glBlendFunc( source_factor, dest_factor ) GL_ZERO, GL_ONE, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR,

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 13/40 Infine: "alpha test" Se un frammento é troppo trasparente, scartiamolo: if ( frammento.alpha < k) then scarta frammento Nota: –E' un test facile facile –Non e' read-write in memoria condivisa –Può essere fatto immediatamente! –Test molto efficiente

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 14/40 Infine: "alpha test" glAlphaFunc(GL_GREATER, 0.01) glEnable(GL_ALPHA_TEST); frammento passa il test se più opaco dell'1% frammenti più trasparenti dell'1% vengono scartati Solita musica: abilitare...

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 15/40

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 16/40 Colli di bottiglia... Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice computazioni per frammento

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 17/40 Puo' essere anche la comunicazione! Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice computazioni per frammento

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 18/40 Display Lists Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice computazioni per frammento memoria per le DISPLAY LIST

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 19/40 Display Lists Esempio di codice theTorus = glGenLists (1); glNewList(theTorus, GL_COMPILE);... /* tutto il rendering dell oggetto */ glEndList(); /* quando la voglio richiamare: */ glCallList(theTorus);

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 20/40 Display List Difetti Display List: –sono statiche –gli oggetti vengono tenuti in memoria due volte. –Se non entrano nella memoria della scheda video possono non essere molto efficienti Pregi –danno la possibilita’ ad opengl di convertire tutti i dati nel formato piu’ conveniente