culling e sorting corso elementi di grafica digitale giancarlo todone

50
Culling e Sorting Culling e Sorting Corso “Elementi di Grafica Digitale” Corso “Elementi di Grafica Digitale” Giancarlo Todone Giancarlo Todone

Upload: ambrogio-palma

Post on 01-May-2015

222 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Culling e SortingCulling e Sorting

Corso “Elementi di Grafica Digitale”Corso “Elementi di Grafica Digitale”Giancarlo TodoneGiancarlo Todone

Page 2: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Tabella dei contenutiTabella dei contenuti

• SortingSorting– Painter’sPainter’s– Z-BufferZ-Buffer– BSPTreeBSPTree

• CullingCulling– BackfaceBackface– FrustumFrustum– OcclusionOcclusion– PVSPVS

• Color codingColor coding

• Tecniche misteTecniche miste– Portal RenderingPortal Rendering– BubbleTreeBubbleTree

Legenda:Legenda:Verde: Verde: metodo naivemetodo naiveRosso:Rosso: tecnica avanzatatecnica avanzataAA B: B utilizza AB: B utilizza AAA B: B può utilizzare AB: B può utilizzare AAA B: tecniche integrateB: tecniche integrate

[nel disegnare][nel disegnare]

Page 3: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

IntroduzioneIntroduzione

• Una moderna “pipeline grafica” Una moderna “pipeline grafica” agisce nel seguente modo:agisce nel seguente modo:

La cosiddetta “zuppa di La cosiddetta “zuppa di poligoni” viene poligoni” viene preparata dal software e preparata dal software e fornita al processore fornita al processore verticivertici

Le geometrie trasformate Le geometrie trasformate vengono “rasterizzate” passando vengono “rasterizzate” passando quindi da una rappresentazione quindi da una rappresentazione interna vettoriale 3D ad una interna vettoriale 3D ad una rappresentazione casellare 2Drappresentazione casellare 2D

Il processore frammenti ha Il processore frammenti ha l’ultima parola su come le l’ultima parola su come le “caselle” verranno scritte nel “caselle” verranno scritte nel framebufferframebuffer

Page 4: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

IntroduzioneIntroduzione

Page 5: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

IntroduzioneIntroduzione

• Quasi tutti gli algoritmi che vedremo Quasi tutti gli algoritmi che vedremo operano sul “polygon soup”, prima operano sul “polygon soup”, prima che la geometria venga data in pasto che la geometria venga data in pasto alla pipeline, alla pipeline, e quindi non e quindi non dipendono dall’hardware graficodipendono dall’hardware grafico..

Page 6: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Sorting: una definizioneSorting: una definizione

• Il Il sortingsorting è l’operazione di è l’operazione di ordinamentoordinamento o o categorizzazionecategorizzazione su un set di dati su un set di dati

• Nel campo della grafica per sorting si Nel campo della grafica per sorting si intende la sola operazione di intende la sola operazione di ordinamentoordinamento su un set di entità grafiche su un set di entità grafiche al fine della loro corretta visualizzazioneal fine della loro corretta visualizzazione

• Il Il culling culling è è categorizzazione categorizzazione delle entità delle entità tra quelle da considerare e quelle da tra quelle da considerare e quelle da ignorareignorare

Page 7: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Sorting e CullingSorting e Culling

• Il Il sortingsorting è è necessarionecessario per per rappresentare correttamente su uno rappresentare correttamente su uno schermo schermo bidimensionalebidimensionale una scena una scena 3D3D

• Il Il cullingculling aiuta semplicemente a aiuta semplicemente a snellire il lavoro snellire il lavoro eliminandoeliminando a priori a priori entità grafiche che sarà inutile entità grafiche che sarà inutile ordinare/trasformare/rasterizzare/…ordinare/trasformare/rasterizzare/…

Page 8: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Entità graficheEntità grafiche

• MondoMondo

• AreeAree

• OggettiOggetti

• PoligoniPoligoni

• PuntiPunti

}gerarchiagerarchia

Page 9: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

L’algoritmo del L’algoritmo del pittorepittore

Page 10: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

L’algoritmo del pittoreL’algoritmo del pittore

• Disegnare poligoni dal più lontano al Disegnare poligoni dal più lontano al più vicino in modo che i più vicini più vicino in modo che i più vicini coprano i più lontanicoprano i più lontani

Page 11: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

L’algoritmo del pittoreL’algoritmo del pittore

• Dispendioso: costringe a Dispendioso: costringe a trasformare e rasterizzare trasformare e rasterizzare comunque tutta la comunque tutta la geometria della scenageometria della scena

• In molti casi (quasi sempre) In molti casi (quasi sempre) non funziona correttamente non funziona correttamente poiché opera su poiché opera su poligoni poligoni interi interi ordinandoli secondo ordinandoli secondo la distanza di la distanza di unouno soltanto soltanto dei loro punti dal punto di dei loro punti dal punto di vistavista

• Se non fallisce per il punto Se non fallisce per il punto precedente, riesce a precedente, riesce a disegnare correttamente disegnare correttamente superfici trasparentisuperfici trasparenti

Page 12: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Z bufferZ buffer

Page 13: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Z BufferZ Buffer

• Non opera ordinamento sulla geometriaNon opera ordinamento sulla geometria– Per ogni puntoPer ogni punto di ogni poligono esaminato, in fase di ogni poligono esaminato, in fase

di rasterizzazione viene fatto il depht-test di rasterizzazione viene fatto il depht-test (considero la coordinata Z del punto che devo (considero la coordinata Z del punto che devo scrivere in [X,Y])scrivere in [X,Y])

– Se la coordinata Z del punto è minore del valore Se la coordinata Z del punto è minore del valore alle coordinate [X,Y] nello Z-buffer scrivo il colore alle coordinate [X,Y] nello Z-buffer scrivo il colore del punto nel display buffer e il valore Z nello Z-del punto nel display buffer e il valore Z nello Z-buffer, in entrambi i casi alle coordinate [X,Y]buffer, in entrambi i casi alle coordinate [X,Y]

– Altrimenti scarto il puntoAltrimenti scarto il punto

Page 14: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Z bufferZ buffer

Z=1Z=1 Z=2Z=2 Z=4Z=4Z=3Z=3

Page 15: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Z bufferZ buffer

• Se provo a Se provo a disegnare un disegnare un punto più punto più lontano sopra lontano sopra uno più uno più vicino, il vicino, il depht-test depht-test fallisce e la fallisce e la scena rimane scena rimane invariatainvariata

Page 16: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Z bufferZ buffer

Display bufferDisplay buffer Z bufferZ buffer

Page 17: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Z bufferZ buffer

• Permette di fondere in tempo reale Permette di fondere in tempo reale immagini già renderizzateimmagini già renderizzate

• Costringe a trasformare e rasterizzare Costringe a trasformare e rasterizzare tutta la scena prima di scartare dei punti tutta la scena prima di scartare dei punti poiché opera su poiché opera su rasterraster

• Non permette di disegnare Non permette di disegnare correttamente superfici trasparenticorrettamente superfici trasparenti

Page 18: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP TreeBSP Tree

Page 19: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP: Binary Space Partition BSP: Binary Space Partition TreeTree• Opera in due tempi:Opera in due tempi:

– Il preprocessore trasforma una “zuppa Il preprocessore trasforma una “zuppa di poligoni” di poligoni” non ordinabilenon ordinabile in un set di in un set di poligoni poligoni ordinabileordinabile e e strutturatostrutturato, , non non coincidentecoincidente ma ma geometricamente geometricamente equivalenteequivalente a quello originario a quello originario

– A run-time il motore A run-time il motore attraversa attraversa la la struttura di dati in modo da esaminarla struttura di dati in modo da esaminarla in opportuno ordine a seconda del punto in opportuno ordine a seconda del punto di vistadi vista

Page 20: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP – algoritmo di BSP – algoritmo di preprocessamentopreprocessamento

Ripetere:Ripetere:

• Scegliere un poligono candidato nel gruppo in esame Scegliere un poligono candidato nel gruppo in esame (inizialmente l’intero set di poligoni)(inizialmente l’intero set di poligoni)

• Dividere il gruppo dei poligoni rimanenti in poligoni che Dividere il gruppo dei poligoni rimanenti in poligoni che stanno “stanno “soprasopra” e “” e “sottosotto” al piano di appartenenza del ” al piano di appartenenza del candidatocandidato

• I poligoni che vengono tagliati dal piano vengono suddivisi I poligoni che vengono tagliati dal piano vengono suddivisi in più poligoni in modo che ognuno possa essere inserito in in più poligoni in modo che ognuno possa essere inserito in uno dei due insiemi sopraccitatiuno dei due insiemi sopraccitati

• Per ognuno dei due insiemi si ripete l’operazione di Per ognuno dei due insiemi si ripete l’operazione di selezione del candidato ecc…selezione del candidato ecc…

Finché ogni insieme contiene uno o nessun poligonoFinché ogni insieme contiene uno o nessun poligono

Page 21: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP – algoritmo di BSP – algoritmo di preprocessamentopreprocessamento

Scelgo un candidatoScelgo un candidatoSuddivido nei due gruppiSuddivido nei due gruppi

A (root)A (root)

Taglio i poligoni di posizione Taglio i poligoni di posizione ambigua (e assegno i “brandelli” ai ambigua (e assegno i “brandelli” ai rispettivi gruppi)rispettivi gruppi)

soprasopra

sottosotto

soprasoprasottosotto

Itero il procedimento sul gruppo Itero il procedimento sul gruppo “sotto” senza considerare il “sotto” senza considerare il sottogruppo “sopra”sottogruppo “sopra”

BB

AABB

Scelgo nuovamente un candidato per il Scelgo nuovamente un candidato per il sottogruppo e lo segno a sinistra come root sottogruppo e lo segno a sinistra come root del sottogruppo “sotto”del sottogruppo “sotto”

soprasopra

sottosotto CC

DD

CC DD

Suddivido nuovamente in sopra e sotto il Suddivido nuovamente in sopra e sotto il sottogruppo (e segno nell’albero perché non sottogruppo (e segno nell’albero perché non posso iterare nuovamente)posso iterare nuovamente)

Idem per i restanti sottogruppi (in Idem per i restanti sottogruppi (in questo caso solo “sopra”)questo caso solo “sopra”)

EE

FF

GG

EE

FF GG

Page 22: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP – Attraversamento a run-BSP – Attraversamento a run-timetime

• Considero per primo il poligono root:Considero per primo il poligono root:

• Il punto di vista è “sopra” o “sotto” al Il punto di vista è “sopra” o “sotto” al poligono in esame?poligono in esame?

• Se sopra, allora considero il figlio “sotto”, Se sopra, allora considero il figlio “sotto”, poi disegno il poligono in esame, poi poi disegno il poligono in esame, poi considero il figlio “sopra”considero il figlio “sopra”

• Altrimenti, al contrario, considero davanti -Altrimenti, al contrario, considero davanti -disegno poligono in esame – considero disegno poligono in esame – considero dietrodietro

Page 23: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

A (root)A (root)

BB

CC DD

EE

FF GG

Test: il POV sta sopra o sotto A?Test: il POV sta sopra o sotto A?SOTTO

AA

Considero prima il sopra:Considero prima il sopra:

BB

CC

DD EE

FF

GG

La sequenza è:La sequenza è:sopra – A - sottosopra – A - sottoIl punto di vista è Il punto di vista è SOPRASOPRA E ELa sottosequenza è:La sottosequenza è:sotto – E - soprasotto – E - sopraF – E - GF – E - G

F – E – G – A - sottoF – E – G – A - sotto

Analogamente per il sotto:Analogamente per il sotto:C - B - DC - B - D

F – E – G – A – C – B – D F – E – G – A – C – B – D

<-sotto sopra->

Page 24: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

A (root)A (root)

BB

CC DD

EE

FF GG

F – E – G – A – C – B – D F – E – G – A – C – B – D

RicapitolandoRicapitolando

11AA

BB

CC

DD EE

FF

GG

22

33

44

55

66

77

Page 25: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP: Binary Space Partition BSP: Binary Space Partition TreeTree• Opera in “precalcolo” facendo a compile-time le operazioni Opera in “precalcolo” facendo a compile-time le operazioni

più pesantipiù pesanti• Opera sulla geometria: non occorre Opera sulla geometria: non occorre

trasformarla/rasterizzarla/… per considerarne un’entitàtrasformarla/rasterizzarla/… per considerarne un’entità• Produce un albero binario: alla geometria strutturata si può Produce un albero binario: alla geometria strutturata si può

applicare la matematica degli alberi binariapplicare la matematica degli alberi binari• Può venire usato per risolvere molti altri problemi (culling, Può venire usato per risolvere molti altri problemi (culling,

collision detection/response, ray casting, ray tracing …)collision detection/response, ray casting, ray tracing …)• Permette di disegnare correttamente le superfici Permette di disegnare correttamente le superfici

trasparenti (sotto certe restrizioni)trasparenti (sotto certe restrizioni)• La sua efficacia dipende La sua efficacia dipende del tuttodel tutto dal meccanismo di dal meccanismo di

selezione dei candidati in fase di costruzione dell’alberoselezione dei candidati in fase di costruzione dell’albero

Page 26: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP – Casi degeneri e BSP – Casi degeneri e bilanciamentobilanciamento

AA

BB

CC

DD

AA

BB

CC

DD

xx

xx

xx

xx xx

Page 27: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BSP – usi non graficiBSP – usi non grafici

Esempio: collision detection con una sferaEsempio: collision detection con una sfera

Normalmente: dovremmo effettuare il test di Normalmente: dovremmo effettuare il test di collisione tra un oggetto e collisione tra un oggetto e ogniogni altro poligono del altro poligono del mondomondo

Col BSP: Col BSP: • effettuare il test [sfera – poligono root del mondo]effettuare il test [sfera – poligono root del mondo]• Se la sfera sta tutta “sopra” al root, ignoro il “sotto” Se la sfera sta tutta “sopra” al root, ignoro il “sotto”

e viceversa, altrimenti continuo su entrambi i ramie viceversa, altrimenti continuo su entrambi i rami• Continuo analogamente coi parent dei sottogruppi Continuo analogamente coi parent dei sottogruppi

non ignoratinon ignorati

Page 28: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

CullingCulling

Page 29: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Culling – metodi naiveCulling – metodi naive

• Frustum CullingFrustum Culling: : se tutti i punti di se tutti i punti di un poligono un poligono stanno fuori dal stanno fuori dal FOV, possiamo FOV, possiamo ignorare il ignorare il poligono perché poligono perché invisibileinvisibile

Page 30: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

CullingCulling

• Non incide sulla qualità del renderingNon incide sulla qualità del rendering• Aiuta ad effettuare il rendering più velocemente Aiuta ad effettuare il rendering più velocemente

evitando di considerare (trasformare, texturizzare, evitando di considerare (trasformare, texturizzare, …) poligoni non visibili …) poligoni non visibili

• Necessario per la grafica realtime in scene Necessario per la grafica realtime in scene complessecomplesse

Si divide fondamentalmente in:Si divide fondamentalmente in:• Algoritmi per ridurre il disegno di poligoni fuori dal Algoritmi per ridurre il disegno di poligoni fuori dal

FOV (FOV (Field Of ViewField Of View, campo visivo), campo visivo)• Algoritmi per ridurre l’overdraw (l’effetto pittore, il Algoritmi per ridurre l’overdraw (l’effetto pittore, il

disegnare poligoni che verranno sovrascritti disegnare poligoni che verranno sovrascritti completamente)completamente)

Page 31: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Culling – metodi naiveCulling – metodi naive

• Backface Culling: se il Backface Culling: se il volume degli volume degli tridimensionali è tridimensionali è completamente contenuto completamente contenuto in una superficie chiusa, è in una superficie chiusa, è impossibile vedere la impossibile vedere la superficie “da dentro” -> se superficie “da dentro” -> se il prodotto vettoriale della il prodotto vettoriale della normale di un poligono con normale di un poligono con il vettore di puntamento il vettore di puntamento della telecamera è negativo della telecamera è negativo possiamo ignorare il possiamo ignorare il poligono perché invisibilepoligono perché invisibile

Page 32: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Occlusion CullingOcclusion Culling

• Meccanismo di selezione Meccanismo di selezione dei poligoni che con tutta dei poligoni che con tutta probabilità occuperanno la probabilità occuperanno la maggiore area dello maggiore area dello schermo una volta schermo una volta renderizzata la scenarenderizzata la scena

• Una volta scelti gli Una volta scelti gli oggetti/poligoni che oggetti/poligoni che fungono da “occluders”, la fungono da “occluders”, la loro estrusione all’infinito loro estrusione all’infinito crea un volume d’ombracrea un volume d’ombra

• Se un oggetto/poligono Se un oggetto/poligono risiede all’interno di un risiede all’interno di un volume, esso non viene volume, esso non viene considerato nella fase di considerato nella fase di renderingrendering

Page 33: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Occlusion Culling – Occlusion Culling – generazione dei volumi generazione dei volumi

d’ombrad’ombra• Tenere un in-memory database che associa segmenti a Tenere un in-memory database che associa segmenti a

poligonipoligoni• Marcare tutti quei segmenti che potrebbero essere spigoli Marcare tutti quei segmenti che potrebbero essere spigoli

(se l’angolo tra i versori dei poligoni che lo condividono è (se l’angolo tra i versori dei poligoni che lo condividono è maggiore di 0)maggiore di 0)

• A runtime marcare tutti i segmenti potenzialmente “di A runtime marcare tutti i segmenti potenzialmente “di silouette” quando si disegna il poligono come front-facingsilouette” quando si disegna il poligono come front-facing

• A runtime marcare tutti i segmenti potenzialmente “di A runtime marcare tutti i segmenti potenzialmente “di silouette” quando si disegna il poligono come back-facingsilouette” quando si disegna il poligono come back-facing

• Tutti i segmenti che sono marcati in entrambi i modi, sono Tutti i segmenti che sono marcati in entrambi i modi, sono poligoni “di silouette” e basta estrudere la curva chiusa che poligoni “di silouette” e basta estrudere la curva chiusa che essi descrivono per ottenere un volume d’ombraessi descrivono per ottenere un volume d’ombra

• [stessa tecnica che per le stencil shadows…][stessa tecnica che per le stencil shadows…]

frontfront backback

Page 34: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Occlusion CullingOcclusion Culling

• Algoritmo runtime (niente precalcolo qui)Algoritmo runtime (niente precalcolo qui)

• Moooooolto time-consumingMoooooolto time-consuming

• Conviene solo se la scena è davvero molto Conviene solo se la scena è davvero molto pesante e complessa (è da considerarsi il pesante e complessa (è da considerarsi il fatto che non è semplice scegliere dei fatto che non è semplice scegliere dei buoni occlusori)buoni occlusori)

• Può essere “aiutato” con alcune estensioni Può essere “aiutato” con alcune estensioni hardware openGL (scarsamente usate hardware openGL (scarsamente usate nella pratica)nella pratica)

Page 35: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

PVSPVS(Potentially Visible Sets)(Potentially Visible Sets)

Page 36: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Culling - PVSCulling - PVS

PVS: Potentially Visible SetsPVS: Potentially Visible Sets

• Suddividere il mondo in areeSuddividere il mondo in aree

• Stabilire legame di appartenenza tra le Stabilire legame di appartenenza tra le aree e i poligoni contenuti in essearee e i poligoni contenuti in esse

• Per ogni area segnare quali altre aree Per ogni area segnare quali altre aree sono visibili in delle lookup tablessono visibili in delle lookup tables

• Rendering offline per creare le LUTRendering offline per creare le LUT

Page 37: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Color CodingColor Coding

• Spegnere il lightingSpegnere il lighting• Renderizzare la Renderizzare la

scena assegnando scena assegnando ad ogni poligono ad ogni poligono un colore (“piatto”) un colore (“piatto”) diversodiverso

• Per vedere se è Per vedere se è presente un certo presente un certo poligono controllo poligono controllo nella schermata se nella schermata se trovo un certo trovo un certo colorecolore

Page 38: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Color CodingColor Coding

• Performances davvero notevoli grazie Performances davvero notevoli grazie all’utilizzo dell’hardware graficoall’utilizzo dell’hardware grafico

• <<<<The color buffer isn't always 32 bit. 16 bit The color buffer isn't always 32 bit. 16 bit displays can seriously mess things up, displays can seriously mess things up, because you can't guarantee that the color because you can't guarantee that the color you specify will actually make it to the screen. you specify will actually make it to the screen. This can be overcome with a few clever tricks This can be overcome with a few clever tricks though... (Exercise: find these clever tricks!) though... (Exercise: find these clever tricks!) >>>>

Tom NuydensTom Nuydens

Page 39: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Color CodingColor Coding

-Idea:-Idea:• Renderizzare più volte la stessa scenaRenderizzare più volte la stessa scena• In un fotogramma si renderizza la parte In un fotogramma si renderizza la parte

bassa (in bit) del codice-colore e nelle altre bassa (in bit) del codice-colore e nelle altre via via i bit in eccedenza dal passaggio via via i bit in eccedenza dal passaggio precedenteprecedente

-In ogni caso il problema non dovrebbe più -In ogni caso il problema non dovrebbe più sussistere in seguito all’introduzione sussistere in seguito all’introduzione dell’estensione FBO (FrameBuffer Object) dell’estensione FBO (FrameBuffer Object) per il rendering offscreenper il rendering offscreen

Page 40: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Portal Portal RenderingRendering

Page 41: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Portal renderingPortal rendering

• Dividere il Dividere il mondo da mondo da renderizzare in renderizzare in settorisettori

• Connettere i Connettere i settori con dei settori con dei “portali”“portali”

Page 42: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Portal RenderingPortal Rendering

• Ogni volta che devo Ogni volta che devo renderizzare una renderizzare una scena, parto dal scena, parto dal settore in cui si settore in cui si trova il POVtrova il POV

• Se nel mio FOV Se nel mio FOV trovo un portale, alla trovo un portale, alla fine del rendering fine del rendering corrente dovrò corrente dovrò processare il settore processare il settore cui esso conducecui esso conduce

POVPOV

FOVFOVportaleportale

settoresettore

Page 43: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Portal RenderingPortal Rendering

• Quando devo Quando devo considerare un considerare un settore che non è il settore che non è il mio, devo fare il mio, devo fare il clipping intorno a clipping intorno a TUTTO il portaleTUTTO il portale

• Materialmente, prima Materialmente, prima di disegnare il settore di disegnare il settore più lontano, disegno il più lontano, disegno il portale che vi portale che vi conduce nello stencil-conduce nello stencil-bufferbuffer

• Causa comunque Causa comunque molto overdraw molto overdraw

Page 44: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Portal Rendering - ClippingPortal Rendering - Clipping

Page 45: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

Portal rendering - PVSPortal rendering - PVS

• Ad ogni settore associamo la lista dei Ad ogni settore associamo la lista dei settorisettori potenzialmente visibili (la reale potenzialmente visibili (la reale visibilità dipende dalla posizione del POV visibilità dipende dalla posizione del POV nel settore)nel settore)

• L’intero processo avviene in precalcoloL’intero processo avviene in precalcolo

• A runtime consultiamo le tabelle di A runtime consultiamo le tabelle di precalcolo per scartare a priori i settori precalcolo per scartare a priori i settori MAI visibili dal settore in cui si trova il POV MAI visibili dal settore in cui si trova il POV

• Rimane presente un po’ di overdrawRimane presente un po’ di overdraw

Page 46: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BubbleTreeBubbleTree

Page 47: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BubbleTreeBubbleTree

Estensione dell’algoritmo BSP:Estensione dell’algoritmo BSP:

• Per ogni poligono dell’albero, specifico Per ogni poligono dell’albero, specifico anche il baricentro e il raggio della anche il baricentro e il raggio della minima sfera che contiene minima sfera che contiene – il poligono stessoil poligono stesso– tutto il sotto-mondo “sopra” (fino alle foglie)tutto il sotto-mondo “sopra” (fino alle foglie)– tutto il sotto-mondo “sotto” (fino alle foglie)tutto il sotto-mondo “sotto” (fino alle foglie)

Page 48: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BubbleTreeBubbleTree

Page 49: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BubbleTreeBubbleTree

• In fase di attraversamento dell’albero a scopo di In fase di attraversamento dell’albero a scopo di rendering, se una sfera sta completamente al di rendering, se una sfera sta completamente al di fuori del frustum posso scartarla interamente fuori del frustum posso scartarla interamente (early-stop)(early-stop)

• Riduce di molto il tempo di rendering di una scenaRiduce di molto il tempo di rendering di una scena• Si può estendere in molti modi interessanti (posso Si può estendere in molti modi interessanti (posso

occludere una intera sfera e il suo sottomondo, occludere una intera sfera e il suo sottomondo, posso fare la collision detection prima sulle sfere e posso fare la collision detection prima sulle sfere e poi in caso di collisione tra di esse approfondire poi in caso di collisione tra di esse approfondire l’analisi della collisione sui poligoni, …)l’analisi della collisione sui poligoni, …)

• L’albero deve essere costruito in un certo L’albero deve essere costruito in un certo modomodo (cioè -> ogni poligono candidato deve essere (cioè -> ogni poligono candidato deve essere scelto in maniera da favorire la localizzazione scelto in maniera da favorire la localizzazione spaziale dei suoi sottomondi)spaziale dei suoi sottomondi)

Page 50: Culling e Sorting Corso Elementi di Grafica Digitale Giancarlo Todone

BibliografiaBibliografia

Tutte le informazioni sono disponibili in rete (per apprenderle Tutte le informazioni sono disponibili in rete (per apprenderle ci si mette un po’ e si girano moooolti siti)ci si mette un po’ e si girano moooolti siti)

Sito utilissimo per cominciare è Sito utilissimo per cominciare è www.delphi3d.netwww.delphi3d.net (nonostante il nome, la parte algoritmica (nonostante il nome, la parte algoritmica

non viene spiegata in alcun linguaggio specifico)non viene spiegata in alcun linguaggio specifico)Sito utile che purtroppo ha chiuso (ma se ne trovano copie-Sito utile che purtroppo ha chiuso (ma se ne trovano copie-

cache in giro per la rete) ècache in giro per la rete) èwww.flipcode.comwww.flipcode.com

Tutte le immagini ( tranne e )Tutte le immagini ( tranne e )

e i testi a cura di Giancarlo Todonee i testi a cura di Giancarlo Todone