Computer Graphics Marco Tarini Lezione 7: rasterizzazione la fabbrica dei frammenti Università dellInsubria Facoltà di Scienze MFN - Varese Corso di Laurea.

Slides:



Advertisements
Presentazioni simili
I Poligoni.
Advertisements

Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
GEOMETRIA IPERBOLICA.
Grafica Raster La grafica in 2D con coordinate intere viene detta grafica raster. In questa parte tratteremo le operazioni fondamentali per disegnare su.
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
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.
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.
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.
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.
Matrici di Proiezione Prospettica
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 - 1/40 Esercizio Rasterizzazione (risultato.
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 2006/07 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.
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.
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.
Costruzione di Interfacce Lezione 8 Rasterizzazione
Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2007/08.
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.
Seminario su clustering dei dati – Parte II
l' algoritmo di Bresenham
Scan conversione di poligoni
14 giugno 2011 Rasterizzazione Prof. Roberto Pirrone.
Determinazione delle superfici visibili
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:
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Programmazione grafica 1
Superfici nascoste Daniele Marini.
1 Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Che cosa è un insieme convesso?
Algoritmi di Ordinamento
Array (ordinamento) CORDA – Informatica A. Ferrari.
TAG e CSS Ricalcare la grgilia di impaginazione. UNA STRUTTURA PER I CONTENUTI Oltre a caratterizzare i contenuti (titoli, paragrafi, liste, collegamenti),
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
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.
Rasterizzazione Antonio Cisternino
Clipping Antonio Cisternino Parte di queste slides sono a cura del Dott. Cignoni.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 6 – Invariante.
Transcript della presentazione:

Computer Graphics Marco Tarini Lezione 7: rasterizzazione la fabbrica dei frammenti Università dellInsubria Facoltà di Scienze MFN - Varese Corso di Laurea in Informatica Anno Accademico 2006/07

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 Rasterizziamo! frammenti (candidati pixels) Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice rasterizer triangoli rasterizer segmenti rasterizer punti rasterizer triangoli rasterizer punti

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 Rasterizzazione Segmenti Produrre i frammenti il più vicino possibile alla linea ideale v0v0 v1v1 lavoriamo con coord intere. Arrotondarle prima. Attenzione agli estremi! Pensare al Line LOOP

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 Rasterizzazione di segmenti Vogliamo avere la sequenza di frammenti che –approssimi al meglio il segmento e quindi –sia il più in linea retta possibile

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 Rasterizzazione di segmenti coefficienti angolari m 1 1 frammento per colonna dx=9 dy=7 Considerando approx di segmenti di circa un pixel di spessore

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 Rasterizzazione di segmenti dx=3 dy=10 coefficienti angolari m >1 1 frammento per riga Consideriamo i due casi separatemente. Ne vediamo uno. (l'altro è simile)

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 Scrivo la retta come: Rasterizzazione di segmenti: algoritmo analitico dx=9 dy=7 m=dy/dx=7/9

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 Rasterizziamo da (x 0,y 0 ) a (x 1,y 1 ) Rasterizzazione di segmenti: algoritmo analitico P0P0 P1P1

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 Algoritmo analitico Per x che va da x 0 a x 1 x ++ y mx + B arrotondare y produrre frammento ( x, y )

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 Algoritmo analitico seleziona sempre il frammento più vicino alla linea ideale per trovarlo si devono fare: –unaddizione (un +1 intero) –una moltiplicazione (float) –un arrotondamento (da float a int)

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 Segmenti di Spessore diverso da uno es: spessore 3

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 Segmenti di Spessore diverso da uno Chiaramente è solo una approssimazione

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 Segmenti di Spessore diverso da uno void glLineWidth( width ); Non necessariamente un intero (se si usa anti-aliasing, vedi poi) In OpenGL

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 Rasterizziamo! frammenti (candidati pixels) Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice

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 Rasterizziamo triangoli Algoritmo scan-line Idea Base: 1.ordiniamo per y 2.per ogni righa da y min a y max 1.trova primo framm dentro 2.trova primo framm fuori 3.produci frammenti da da A incluso a B escluso

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 Rasterizziamo triangoli Algoritmo scan-line Idea Base: 1.ordiniamo per y 2.per ogni righa da y min a y max 1.trova primo framm dentro 2.trova primo framm fuori 3.produci frammenti da primo dentro a primo fuori (escluso)

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 Bresenham In ogni riga: –trovare il primo-dentro e primo-fuori è simile a Bresenham, ma: un caso solo (sempre per riga, sempre verso l'alto) arrotondiamo sempre per eccesso passiamo all'altro segmento quando siamo arrivati alla riga del punto in termedio sulle y

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 "Scan-Conversion" = Rasterization (Rasterizzazione) "to scan-conver" = to Rasterize "Span" = intervallo da primo-dentro a primo-fuori "Line-scan" = una riga processata "Active edges" = i 2 lati attuali "Edge table " = i 3 lati (precalcolati) Terminologie circa la rasterizzazione triangoli 3 2 Nel nostro caso (triangoli)! In generale, N e N (poligoni generici)

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 Problemi con rasterizzazione di poligoni usando scan-line I frammenti vengono prodotti uno alla volta Non adatto ad una implementazione parallela –il rasterizzatore deve produrre frammenti molto velocemente (cioè molti alla volta) se non vogliamo tenere disoccupato il processore di frammenti

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 Soluzione Produrre frammenti a gruppi –ad es, a gruppi di 2x2 o 4x4 o 4x1 o 8x1... Non necessariamente tutti i componenti di un gruppo sono frammenti interni al triangolo Testare ogni frammento: –scartare quelli interni

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 Test di appartenenza ad un triangolo Test di appartenenza ad un semipiano: SI NO p n x con TEST: retta definita da punto appartenente p e vettore ortognoale n

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 SI NO Test di appartenenza ad un triangolo Il semipiano e' definito da un lato: v 0 =(x 0, y 0 ) n v 1= (x 1, y 1 ) q funzione detta EDGE FUNCTION (Edge = Lato, Bordo) n = ( y 1 -y 0, - ( x 1 -x 0 ) ) p = (y 0, x 0 ) f(q) = nq - np

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 Test di appartenenza ad un triangolo Triangolo=interesezione di 3 semipiani v0v0 v2v2 v1v1 SI NO SI NO SI NO SI NO SI NO SI NO SI

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 Test di appartenenza ad un triangolo Triangolo=interesezione di 3 semipiani NO v0v0 SI NO SI NO v1v1 v2v2 SI NO SI NO SI NO SI Triangoli front-facing (senso anti-orario)

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 Test di appartenenza ad un triangolo Scambio v 1 con v 2 v2v2 v1v1 v0v0 Triangoli BACK-facing (senso anti-orario) SI NO SI NO SI NO SI NO SI NO SI NO

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 Test di appartenenza ad un triangolo Tre Edge Functions: (una per lato) Tutte SI (negative) : –frammento interno a triangolo front-facing Tutte NO (positive): –frammento interno a triangolo back-facing Miste: –frammento esterno (scartare sempre)

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 Esempio: rasterizzazione basata sul bounding box e edge functions 1.Trovo il bounding box del triangolo Come si trova il bounding box di un triangolo?

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 Esempio: rasterizzazione basata sul bounding box e edge functions 1.Trovo il bounding box del triangolo 1.arrotondato agli interi divisibili per 2

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 Esempio: rasterizzazione basata sul bounding box e edge functions 1.Trovo il bounding box del triangolo 1.arrotondato agli interi 2.divisibili per 2 2.Processo ogni blocco (es. 2x2) 1.Testo ogni frammento nel blocco 2.Se interno al triangolo lo mando giù nel pipeline

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 Rasterizziamo! frammenti (candidati pixels) Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice SETUP: trovo bounding box testo gruppi di frammenti (parallelizzato)

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 Clipping Clipping! Tutto fuori: CULLED ! no prob. Screen Tutto dentro: Rasterizzo ! (benissimo) Qualche vertice fuori, ma non tutto il triangolo Clipping. HAI!

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 Clipping: la vecchia scuola Clipping! Screen 1. Trovo intersezioni 2. Unisco intersezioni A B 3. Divido poligono in triangoli 4. Rasterizzo ogni triangolo A poi B

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 Clipping: la vecchia scuola Clipping! Screen 1. Trovo intersezioni 2. Unisco intersezioni 3. Divido poligono in triangoli 4. Rasterizzo ogni triangolo B C A

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 Clipping: la vecchia scuola Clipping! Screen 2. Unisco intersezioni 3. Divido poligono in triangoli 4. Rasterizzo ogni triangolo B C A D 1. Trovo intersezioni Caso pessimo molto complicato Malissimo per implementazione HW L'HW deve prevedere il caso pessimo, anche se è raro

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 Clipping: come si fa ora Clipping! Screen 1. Trovo bounding box 3. Rasterizzo nel bounding box come normale Come si interseca un bounding box con lo schermo (cioe' col rettangolo definito dal ViewPort)? 2. Interseco bounding box con schermo

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 Un momento! E il clipping contro il far e il near plane? –detti anche "far plane clipping" e "near plane clipping" left plane near plane bottom plane view frustum top plane far plane right plane Soluz: si fa testando la Z di ogni frammento prodotto dalla rasteizzazione. (TEST x 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 Rasterizzazione triangoli: Il metodo basato su bounding box e test di appartenenza (edge functions): –Vantaggi fortemente parallelizzabile –(gruppi 4x4) clipping diventa facile facile –per i planes UP, DOWN, LEFT e RIGHT –Svantaggi Overhead granding –Si testano molti frammenti inutilmente –Specialmente quando...

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 Un caso sfortunato Screen Triangoli: lunghi e stretti messi lungo la direzione diagonale Sinonimo di MALE in computer graphics : (anche per questo, ma non solo) lunghi e stretti = male molti algoritmi portano ad artefatti (come vedremo) circa equilateri = bene robusti con praticamente tutti gli algoritmi