Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 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
GLUT & OpenGL Ing. Tommaso Coviello Politecnico di Bari
Introduzione alla programmazione
Gerarchie di Oggetti Tutti i sistemi avanzati di grafica (PHIGS, OpenGL, DirectDraw, …) permettono di definire un modello come una gerarchia di oggetti.
Texture Mapping.
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.
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 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.
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.
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.
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.
Struttura dei sistemi operativi (panoramica)
Introduzione alla grafica digitale 2005,6,7,8,9,.. Matjaž Hmeljak.
Corso di Elementi di Grafica Digitale Massimo De March
Informatica giuridica Hardware e software: glossario Lucio Maggio Anno Accademico 2001/2002.
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.
Effetti fotorealistici
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.
1 Struttura di un sistema grafico e frame buffer Daniele Marini.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Display list e picking Daniele Marini Corso Di Programmazione Grafica e Laboratorio.
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 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.
Informatica e Informatica di Base
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 2006/07 Lezione 14: 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 col. vecchio con una interpolazione fra: col vecchio e col 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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:

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 –Se scarta, non si aggiorna il depth buffer –Indipendente dall'ordine delle primitive

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Texture mapping e Alpha Test In una tessitura, ogni texel può avere anche (o, solo) una componente alpha –"opacity maps", "alpha maps" "RGBA maps" Un canale alpha può essere composto di soli –1 completamente opaco –0 completamente trasparente frammenti corrispondenti cassati dall'alpha-test

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Texture mapping e Alpha Test Trucco molto utile: –es: simboli e testo sulla scena... –es: sistemi di particelle con particelle grandi

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Texture mapping e Alpha Test Trucco molto utile: –es: erba...

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Texture mapping e Alpha Test Trucco molto utile: –es: drappi, barba... by Micheal Filipowski 2004 tessitura

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Texture mapping e Alpha Test Trucco molto utile: –es: alberi

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Texture mapping e Alpha Test Trucco molto utile: –es: pelliccia tessitura (ripetuta)

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Display Lists Codice (es. in C++) che fa rendering: mix di –istruzioni openGL che mandano primitive –comandi vari (cicli, guardie...) Idea: –la prima volta, registrare tutte le primitive e i comandi in una struttura (in RAM); le volte successive mandare solo le primitive (senza comandi intermedi)

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Display Lists Esempio di codice theTorus = glGenLists (1); glNewList(theTorus, GL_COMPILE);... /* tutto il rendering dell oggetto "Torus" */ 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Display List Difetti Display List: –sono statiche –consumo di memoria. –Non risparmiano il costo di mandare le primitive alla scheda video Pregi –danno la possibilita’ ad opengl di convertire tutti i dati nel formato piu’ conveniente

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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Vertex buffer objects 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 i Vertex Buffer Objects