computer graphics marco tarini lezione 7: rasterizzazione la fabbrica dei frammenti università...

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

Upload: jovanni-meli

Post on 01-May-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

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

Computer Graphics

Marco Tarini

Lezione 7: rasterizzazione la fabbrica dei frammenti

Università dell’Insubria

Facoltà di Scienze MFN - Varese

Corso di Laurea in Informatica

Anno Accademico 2006/07

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

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

Rasterizziamo!

fram

men

ti(c

andid

ati

pix

els

)

Vert

ici

(punti

in R

3)

pixelfinali

(nello screen-buffer)

Vert

ici

pro

iett

ati

(punti

in R

2)

Z

rasterizer

triangoli

com

puta

zioni

per

fram

mento

set-up

rasterizer

segmenti

set-up

rasterizer

punti

set-up

com

puta

zioni

per

vert

ice

rasterizer

triangolirasterizer

segmenti

rasterizer

puntirasterize

r triangoli

rasterizer

punti

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

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 ‧ 2 0 0 6 / 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

v0

v1

lavoriamo con coord intere.Arrotondarle prima.

Attenzione agli estremi!Pensare al Line LOOP

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

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 ‧ 2 0 0 6 / 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

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

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 ‧ 2 0 0 6 / 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 m1

→1 frammento per

colonna

dx=9

dy=

7

Considerando approx di segmentidi circa un pixel di spessore

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

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 ‧ 2 0 0 6 / 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 casiseparatemente.Ne vediamo uno.(l'altro è simile)

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

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 ‧ 2 0 0 6 / 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:

) 1 m (

Bm

xy

Rasterizzazione di segmenti: algoritmo analitico

dx=9

dy=

7

m=dy/dx=7/9

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

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 ‧ 2 0 0 6 / 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 (x0,y0) a (x1,y1)

Rasterizzazione di segmenti: algoritmo analitico

P0

P1

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

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 ‧ 2 0 0 6 / 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 x0 a x1

• x ++ • y ← mx + B

• arrotondare y• produrre frammento ( x ,

y )

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

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 ‧ 2 0 0 6 / 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:– un’addizione (un +1 intero)

– una moltiplicazione (float)

– un arrotondamento (da float a int)

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

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 ‧ 2 0 0 6 / 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

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

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 ‧ 2 0 0 6 / 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

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

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 ‧ 2 0 0 6 / 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 necessariamenteun intero

(se si usa anti-aliasing,vedi poi)

• In OpenGL

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

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

Rasterizziamo!

fram

men

ti(c

andid

ati

pix

els

)

Vert

ici

(punti

in R

3)

pixelfinali

(nello screen-buffer)

Vert

ici

pro

iett

ati

(punti

in R

2)

Z

rasterizer

triangoli

com

puta

zioni

per

fram

mento

set-up

rasterizer

segmenti

set-up

rasterizer

punti

set-up

com

puta

zioni

per

vert

ice

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

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 ‧ 2 0 0 6 / 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 y2. per ogni righa da ymin a

ymax

1. trova primo framm dentro

2. trova primo framm fuori

3. produci frammenti da da A incluso a B escluso

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

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 ‧ 2 0 0 6 / 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 y2. per ogni righa da ymin a

ymax

1. trova primo framm dentro

2. trova primo framm fuori

3. produci frammenti da primo dentro a primo fuori (escluso)

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

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 ‧ 2 0 0 6 / 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

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

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 ‧ 2 0 0 6 / 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)

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

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 ‧ 2 0 0 6 / 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 poligoniusando 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

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

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 ‧ 2 0 0 6 / 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

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

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 ‧ 2 0 0 6 / 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

knx

npx

0)(

npk con

TEST:

retta definita da punto appartenente pe vettore ortognoale n

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

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 ‧ 2 0 0 6 / 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:

v0=(x0, y0 )

n

v1=(x1, y1 )

q

funzione dettaEDGE

FUNCTION

(Edge = Lato, Bordo)

n = ( y1 -y0 , - ( x1 -x0 ) )p = (y0 , x0)

f(q) = n‧q - n‧p

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

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 ‧ 2 0 0 6 / 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

v0

v2

v1

SI

NO

SI

SI

SI

NO

NO

SI

SI

SI

NO

NO

SI

NO

SI

NO

NO

SI

NO

SI

SI

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

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 ‧ 2 0 0 6 / 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

v0SI

NO

SI

SI

SI

NO

v1

v2

SISI

SI

SI

NO

NO

SI

NO

NO

NO

SI

NO

SI

SI

• Triangoli front-facing (senso anti-orario)

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

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 ‧ 2 0 0 6 / 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 v1 con v2

v2

v1

v0

• Triangoli BACK-facing (senso anti-orario)

SI

NO

SI

NO

NO

NO

SINONO

NO

NO

SI

SI

NO

SI

SI

SI

NO

SI

NO

NO

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

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 ‧ 2 0 0 6 / 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)

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

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

Esempio: rasterizzazionebasata sul bounding box e edge functions

1. Trovo il bounding box del triangolo

Come si trova il bounding box

di un triangolo?

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

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

Esempio: rasterizzazionebasata sul bounding box e edge functions

1. Trovo il bounding box del triangolo1. arrotondato agli interi...2. ...divisibili per 2

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

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

Esempio: rasterizzazionebasata sul bounding box e edge functions

1. Trovo il bounding box del triangolo1. arrotondato agli interi2. divisibili per 2

2. Processo ogni blocco (es. 2x2)1. Testo ogni frammento

nel blocco2. Se interno al triangolo

lo mando giù nel pipeline

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

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

Rasterizziamo!

fram

men

ti(c

andid

ati

pix

els

)

Vert

ici

(punti

in R

3)

pixelfinali

(nello screen-buffer)

Vert

ici

pro

iett

ati

(punti

in R

2)

Z

rasterizer

triangoli

com

puta

zioni

per

fram

mento

set-up

rasterizer

segmenti

set-up

rasterizer

punti

set-up

com

puta

zioni

per

vert

ice

SETUP: trovobounding box

testo gruppi di frammenti(parallelizzato)

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

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 ‧ 2 0 0 6 / 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!

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

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 ‧ 2 0 0 6 / 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 intersezioni2. Unisco intersezioni

A

B

3. Divido poligono in triangoli4. Rasterizzo ogni triangolo

A poi B

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

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 ‧ 2 0 0 6 / 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 intersezioni2. Unisco intersezioni

3. Divido poligono in triangoli4. Rasterizzo ogni triangolo

B

C

A

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

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 ‧ 2 0 0 6 / 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 intersezioni3. Divido poligono in triangoli4. Rasterizzo ogni triangolo

B

C

A

D

1. Trovo intersezioni

Caso pessimo molto complicato

Malissimo per implementazione HW

L'HW deve prevedere ilcaso pessimo, anche se è raro

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

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 ‧ 2 0 0 6 / 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 boxcome normale

Come si interseca un bounding box

con lo schermo(cioe' col rettangolo

definito dal ViewPort)?

2. Interseco bounding box con schermo

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

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 ‧ 2 0 0 6 / 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 frustumtop plane

far plane

right plane

Soluz: si fa testandola Z di ogni frammento

prodotto dalla rasteizzazione.

(TEST x FRAMMENTO)

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

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 ‧ 2 0 0 6 / 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 etest 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...

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

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 ‧ 2 0 0 6 / 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 = malemolti algoritmi portano ad artefatti

(come vedremo)

circa equilateri = benerobusti con praticamente tutti gli

algoritmi