computer graphics -...

6
1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2008/09 Lezione 6: Lezione 6: Lezione 6: Lezione 6: culling: se c'e' ma non si vede! 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 8 / 0 9 U n i v e r s i t à d e l l ’ I n s u b r i a Se non si vede, che non ci sia • CULLING – cioe': non perdiamo tempo a renderizzare ciò che non si vede – buttiamo via le primitive le primitive le primitive le primitive che non cambiano la scena o, che non la cambiano abbastanza – facciamolo il prima possibile! (nel pipeline) i tiangoli tiangoli tiangoli tiangoli! (o segmenti, o punti...) chiaro? 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 8 / 0 9 U n i v e r s i t à d e l l ’ I n s u b r i a Notazione Lo chiamiamo culling culling culling culling se si scartano primitive intere o interi gruppi di primive Se una primitiva viene spezzata in una parte visibile e una no, lo chiamiamo clipping clipping clipping clipping Se e' un frammento ad essere scartato, si tratta di testing per frammento testing per frammento testing per frammento testing per frammento quale ci fa piu' gola? 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 8 / 0 9 U n i v e r s i t à d e l l ’ I n s u b r i a Notazione Lo chiamiamo culling culling culling culling se si scartano primitive intere o interi gruppi di primive Se una primitiva viene spezzata in una parte visibile e una no, lo chiamiamo clipping clipping clipping clipping Se e' un frammento ad essere scartato, si tratta di testing per frammento testing per frammento testing per frammento testing per frammento (principalmente) una ottimizzazione ottimizzazione ottimizzazione ottimizzazione ! (principalmente) una necessità necessità necessità necessità ! (principalmente) una necessità necessità necessità necessità ! 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 8 / 0 9 U n i v e r s i t à d e l l ’ I n s u b r i a Metodologie di Culling • Occlusion culling – non si vede... perché coperto da qualcos'altro • View-frustum culling – non si vede... perché è fuori dal frustum di vista • Backface culling – non si vede... perché è la parte interna di una superficie chiusa • Importance culling – (quasi) non si vede... perché la sua proiezione è troppo piccola rispetto alla scena 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 8 / 0 9 U n i v e r s i t à d e l l ’ I n s u b r i a Tipi di culling Eseguiti dall'hardware – automatici – molto efficienti (overhead minuscolo) – ma scartano tardi, e una primitiva alla volta Eseguiti dall'applicazione (SW) – richiedono algoritmi e strutture dati – meno efficienti (overhead anche grandino) – ma scartano presto, e a gruppi quindi é chiaro che la scelta non é fra HW e SW, ma fra solo HW ed entrambi

Upload: dangdan

Post on 26-Mar-2018

234 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Computer Graphics - vcg.isti.cnr.itvcg.isti.cnr.it/~tarini/teaching/cg08/Lez06.Clipping.and.Culling.pdf · 1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di

1

Computer Graphics

Marco Tarini

Università dell’Insubria

Facoltà di Scienze MFN di Varese

Corso di Laurea in Informatica

Anno Accademico 2008/09

Lezione 6: Lezione 6: Lezione 6: Lezione 6: culling: se c'e' ma non si vede!

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

Se non si vede, che non ci sia

• CULLING– cioe': non perdiamo tempo a renderizzare ciò che

non si vede

– buttiamo via le primitivele primitivele primitivele primitive che non cambiano la scena• o, che non la cambiano abbastanza

– facciamolo il prima possibile! (nel pipeline)

i tiangolitiangolitiangolitiangoli! (o segmenti, o punti...)chiaro?

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

Notazione

• Lo chiamiamo cullingcullingcullingculling se si scartano primitive intere– o interi gruppi di primive

• Se una primitiva viene spezzata in una parte visibile e una no, lo chiamiamo clippingclippingclippingclipping

• Se e' un frammento ad essere scartato, si tratta di testing per frammentotesting per frammentotesting per frammentotesting per frammento

quale ci fa piu' gola?

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

Notazione

• Lo chiamiamo cullingcullingcullingculling se si scartano primitive intere– o interi gruppi di primive

• Se una primitiva viene spezzata in una parte visibile e una no, lo chiamiamo clippingclippingclippingclipping

• Se e' un frammento ad essere scartato, si tratta di testing per frammentotesting per frammentotesting per frammentotesting per frammento

(principalmente) una ottimizzazione ottimizzazione ottimizzazione ottimizzazione !

(principalmente) una necessità necessità necessità necessità !

(principalmente) una necessità necessità necessità necessità !

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

Metodologie di Culling

• Occlusion culling– non si vede... perché coperto da qualcos'altro

• View-frustum culling– non si vede... perché è fuori dal frustum di vista

• Backface culling– non si vede... perché è la parte interna di una

superficie chiusa• Importance culling

– (quasi) non si vede... perché la sua proiezione è troppo piccola rispetto alla scena

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

Tipi di culling

• Eseguiti dall'hardware– automatici– molto efficienti (overhead minuscolo)– ma scartano tardi, e una primitiva alla volta

• Eseguiti dall'applicazione (SW)– richiedono algoritmi e strutture dati– meno efficienti (overhead anche grandino)– ma scartano presto, e a gruppi

quindi é chiaro che la scelta non é fra HW e SW, ma fra solo HW ed entrambi

Page 2: Computer Graphics - vcg.isti.cnr.itvcg.isti.cnr.it/~tarini/teaching/cg08/Lez06.Clipping.and.Culling.pdf · 1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di

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

Tipi di culling

• Conservativi– scartano solo se sono sicuri– piuttosto, rischiano di diesgnare anche cose che poi

non si vedranno

• Non Conservativi– scartano seguendo un'euristica– rischiano di NON disegnare qualcosa che (in parte)

era visibile!

casomai, non succede nulla.Si è solo spercato un po di calcolo GPU

se succede, si è creato unerrore nel renering, cioè un...

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

• un difetto…– di modelling: una discrepanza fra realtà e modello 3D– di rendering: discrepanza fra modello 3D e quello che si vede

nei suoi rendering– es: “inventarsi” un dettaglio che non c'era

parentesi notazione parentesi notazione parentesi notazione

parentesi notazione parentesi notazione parentesi notazione

..."artefatto"!

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

• un difetto…– di modelling: una discrepanza fra realtà e modello 3D– di rendering: discrepanza fra modello 3D e quello che si vede

nei suoi rendering– es: “inventarsi” un dettaglio che non c'era

parentesi notazione parentesi notazione parentesi notazione

parentesi notazione parentesi notazione parentesi notazione

..."artefatto"!

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

Metodologie di Culling

• Occlusion culling– non si vede... perchè coperto da qualcos'altro

• View-frustum culling– non si vede... perché è fuori dal frustum di vista

• Backface culling– non si vede... perché è la parte interna di una

superficie chiusa• Importance culling

– (quasi) non si vede... perchè la sua proiezione è troppo piccola rispetto alla scena

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

Backface Culling

• Concetto: – superficie di oggetto chiusochiusochiusochiuso...– non vedro' mai l'interno– cioè non vedrò mai

il "dietro delle facce"

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

Concetto BASE di questo corso

• Vettore normale ortogonale ad un pianoo ad un un poligono

– detto anche "vettore" normale– detto anche NORMALE NORMALE NORMALE NORMALE (al/del piano)

• In pratica:normalenormalenormalenormale == == == == orientamentoorientamentoorientamentoorientamento

Nota: a Nota: a Nota: a Nota: a rigorerigorerigorerigore didididi termini, termini, termini, termini, vettorevettorevettorevettore normalenormalenormalenormale = = = = vettorevettorevettorevettore con con con con normanormanormanorma 1111

Page 3: Computer Graphics - vcg.isti.cnr.itvcg.isti.cnr.it/~tarini/teaching/cg08/Lez06.Clipping.and.Culling.pdf · 1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di

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

Come si trova la normale di un triangolo?

• Cioe' il suo orientamento nello spazio

v0

v2v1

facile! é anche per questo che cipiacciono tanto i triangoli

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

Come si trova la normale di un triangolo?

• Traingolo front-facing

• Traingolo back-facing– "che ci dà le spalle"

v0

v2

v1

v0

v2

v1

view dir

view dir

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

(HW) Backface Culling: dove?

fram

men

ti(c

andi

dati

pixe

ls)

Verti

ci

(pun

ti in

R3 ) pixel

finali(nello

screen-buffer)

Verti

cipr

oiet

tati

(pun

ti in

R2 )

Z

rasterizer triangoli

com

puta

zion

ipe

r fra

mm

ento

set-up

rasterizersegmenti

set-up

rasterizerpunti

set-up

com

puta

zion

ipe

r ver

tice

set-up

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

(HW) Backface Culling: quanto?

fram

men

ti(c

andi

dati

pixe

ls)

Verti

ci

(pun

ti in

R3 ) pixel

finali(nello

screen-buffer)

Verti

cipr

oiet

tati

(pun

ti in

R2 )

Z

rasterizer triangoli

com

puta

zion

ipe

r fra

mm

ento

set-up

rasterizersegmenti

set-up

rasterizerpunti

set-up

com

puta

zion

ipe

r ver

tice

set-up

scarto circa il 50% delle facce...Lo speed-up? x2x2x2x2 ?

...ma solo da questo punto in poi!

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

(HW) Backface culling: quando?

• Non posso usarlo sempresempresempresempre!– devo sapere a priori che l'oggetto è chiuso

primitivequi

pixels

tutto il pipeline HW di rendering (proiezione, setup, rasterizzazione...)

stato di OpenGL

occlusion culling ON / OFF

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

(HW) Backface culling: come?

• Accendere e spengere:glEnable( GL_CULL_FACE );

glDisable( GL_CULL_FACE );

• Decidere se scartare le front o le back-facing :glCullFace(GL_FRONT );

glCullFace(GL_BACK );

Tutti questi comandi cambiano solo lo stato."non fanno nulla sullo schermo"

Quale sarà il default?Quando è utile cambiarlo?

Page 4: Computer Graphics - vcg.isti.cnr.itvcg.isti.cnr.it/~tarini/teaching/cg08/Lez06.Clipping.and.Culling.pdf · 1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di

4

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

Metodologie di Culling

• Occlusion culling– non si vede... perché coperto da qualcos'altro

• View-frustum culling– non si vede... perché è fuori dal frustum di vista

• Backface culling– non si vede... perché è la parte interna di una

superficie chiusa• Importance culling

– (quasi) non si vede... perché la sua proiezione è troppo piccola rispetto alla scena

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

(HW) View-frustum culling

• Dato una primitiva – triangolo, segmento, punto

• E' dentro il view frustum?– (o parzialmente dentro – conservativi!)

y

z

x

• Meglio fare il contonelle Normalized Device Coords

[-1,+1] x [-1,+1] x [-1,+1]

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

(HW) View-frustum Culling: dove?

fram

men

ti(c

andi

dati

pixe

ls)

Verti

ci

(pun

ti in

R3 ) pixel

finali(nello

screen-buffer)

Verti

cipr

oiet

tati

(pun

ti in

R2 )

Z

rasterizer triangoli

com

puta

zion

ipe

r fra

mm

ento

set-up

rasterizersegmenti

set-up

rasterizerpunti

set-up

com

puta

zion

ipe

r ver

tice

...di nuovo, solo da questo punto in poi!Ma ora possiamo agire dall'inizio!

Posso scartare moltissimo della scena!

set-up

set-up

set-up

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

Software View-frustum Culling

• Idea: farlo prima di mandare triangoli nel pipeline di rendering

• Dividere la scena in blocchi– è nata già divisa nella maggior parte dei casi

(v. scenegraph)

• perchè così sarà possibile scartare (=to cull ) interi blocchi alla volta!

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

left plane

near plane

bottom plane

Software View-frustum Culling

• Problema:– bisogna fare culling prima delle proiezioni– come sono i piani? view frustum

top plane

far plane

right plane

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

Software View-frustum Culling Parte 1/4: test di un singolo poligono• Nelle coordinate oggetto o mondo!

• 6 test con 6 piani del view frustum!

• Ripasso di geometrica:– i piani...

Page 5: Computer Graphics - vcg.isti.cnr.itvcg.isti.cnr.it/~tarini/teaching/cg08/Lez06.Clipping.and.Culling.pdf · 1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di

5

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

Software View-frustum Culling Parte 2 /4 : Gerarchia di bounding spheres

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

Software View-frustum Culling Parte 3 /4 : intersezione sfera view frustum• Sfera centro c raggio r• Test con un piano p (con normale normalizzata)

• Facile!– pc > r

• sfera tutta “al di qua” del piano– pc < -r

• sfera tutta “al di là” del piano– altrimenti: sfera mezza dentro e mezza fuori

• Test contro view frustum:– testare tutti e 6 i piani

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

Software View-frustum Culling Parte 4 /4 : algoritmo finale• Test effettuato con la Bounding sphere Test effettuato con la Bounding sphere Test effettuato con la Bounding sphere Test effettuato con la Bounding sphere della della della della cella cella cella cella • sesesese è TUTTA FUORI del VF è TUTTA FUORI del VF è TUTTA FUORI del VF è TUTTA FUORI del VF

→→→→ CULLCULLCULLCULL• sssse è TUTTA DENTRO il VF, e è TUTTA DENTRO il VF, e è TUTTA DENTRO il VF, e è TUTTA DENTRO il VF,

→→→→ RENDERRENDERRENDERRENDER tutta la cellatutta la cellatutta la cellatutta la cella• sssse è PARZIALMENTE dentro il VF:e è PARZIALMENTE dentro il VF:e è PARZIALMENTE dentro il VF:e è PARZIALMENTE dentro il VF:

– Se siamo all’ultimo livello:Se siamo all’ultimo livello:Se siamo all’ultimo livello:Se siamo all’ultimo livello:→→→→ RENDERRENDERRENDERRENDER

– Altrimenti: Test sulle celle di livello inferioreAltrimenti: Test sulle celle di livello inferioreAltrimenti: Test sulle celle di livello inferioreAltrimenti: Test sulle celle di livello inferiore

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

Metodologie di Culling

• Occlusion culling– non si vede... perché coperto da qualcos'altro

• View-frustum culling– non si vede... perché è fuori dal frustum di vista

• Backface culling– non si vede... perché è la parte interna di una

superficie chiusa• Importance culling

– (quasi) non si vede... perché la sua proiezione è troppo piccola rispetto alla scena

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

Occlusion Culling

• Una forma molto importante di culling• Scarta moltissimi poligoni

– tutti quelli che compongono il "mondo"• Ma dove attuarla?

fram

men

ti(c

andi

dati

pixe

ls)

Verti

ci

(pun

ti in

R3 ) pixel

finali(nello

screen-buffer)

Verti

cipr

oiet

tati

(pun

ti in

R2 )

Z

rasterizer triangoli

com

puta

zion

ipe

r fra

mm

ento

set-up

rasterizersegmenti

set-up

rasterizerpunti

set-up

com

puta

zion

ipe

r ver

tice

richiede info globaliglobaliglobaliglobali, su tutta la

scena

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

Cell-Based Occlusion-Culling (software)

Idea base:• Preprocessing:

– dividere il mondo in celle• collegate da "portali"

– calcolare per ogni cella il "PVSPVSPVSPVS"• PVSPVSPVSPVS = Potentially Visible Set• cioe' la lista di celle sono visiblili da quella cella

• Rendering:– trova la cella xxxx dove è l'occhio– rendering solo delle celle

• nel PVSPVSPVSPVS di xxxx• dentro il view frustum

di solitomolto oneroso

computazionalmente

vediamo degli esempi

Page 6: Computer Graphics - vcg.isti.cnr.itvcg.isti.cnr.it/~tarini/teaching/cg08/Lez06.Clipping.and.Culling.pdf · 1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di

6

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

Struttura: BSP-tree(Binary Spatial Partitioning tree)

il mondo

Obiettivo: circa stesso numero di primitive in ogni cella

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

Quad-Tree (in 2D, o 2.5D – es. campi d'altezza)Oct-Tree (in 3D – partizione di un volume)

• stesso obiettivo

il mondo (2D)

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

Quad-Tree

• esempio

frame buffer

mondodiviso con quad tree• celle con bordo bianco

sono nel view frustumma non sono nel PVS:CULLEDCULLEDCULLEDCULLED

James Stewart, School of Computing, Queen's University, Kingston, Ontario

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

Metodologie di Culling

• Occlusion culling– non si vede... perché coperto da qualcos'altro

• View-frustum culling– non si vede... perché è fuori dal frustum di vista

• Backface culling– non si vede... perché è la parte interna di una

superficie chiusa• Importance culling

– (quasi) non si vede... perché la sua proiezione è troppo piccola rispetto alla scena