Title: Architettura di OGL e pipe-line
1Architettura di OGL e pipe-line
Corso Di Programmazione Grafica
2Pipeline - 1
- Funzione principale della pipeline di rendering è
generare (renderizzare) unimmagine
bidimensionale, dati - una foto camera virtuale,
- oggetti tridimensionali,
- sorgenti di luce,
- modelli di illuminazione,
- texture ed effetti
- ecc.
3Pipeline - 2
- Fasi concettuali
- Ogni fase può essere a sua volta una pipeline.
- Lelemento della pipeline più lento determina la
velocità di rendering (misurata in frames per
second, o fps).
Application
Geometry
Rasterizer
4Application stage - 1
- E sempre implementata via software
- Quindi il programmatore ha pieno controllo
dellimplementazione - Non è suddivisa in ulteriori pipeline
- Può essere eseguita in parallelo su numerosi
processori per aumentare le prestazioni
5Application stage - 2
- Processi normalmente considerati e implementati
in questa fase - Collision detection
- Input da joystick, tastiera, mouse, ecc.
- Geometry morphing, animazione via trasformazioni,
ecc.. - Algoritmi di accelerazione
- Alla fine di questi processi la geometria viene
inviata allo stadio successivo.
6Geometry stage
- In questa fase viene eseguita la maggior parte di
operazioni sui poligoni e sui vertici. - E normalmente suddivisa in questo modo
Applic
Geom
Rast
Model and View Transform
Lighting
Projection
Clipping
Screen Mapping
7Model and View Transform - 1
- In questa fase vengono applicate le
trasformazioni ai vertici e alle normali della
geometria passata dall Application stage. - Dopo lapplicazione delle trasformazioni, si dice
che la geometria è descritta in coordinate mondo
(world coordinates).
8Model and View Transform - 2
- In questa fase vengono applicate anche le
trasformazioni di vista. - Lo scopo è facilitare le proiezioni e il
clipping, posizionando la camera virtuale
nellorigine e facendola guardare lungo lasse
negativo delle z (prospettiva canonica). - Dopo lapplicazione di queste trasformazioni, si
dice che la geometria è descritta in coordinate
occhio o camera (camera coordinates o eye
coordinates). -
9Lighting and Shading
- In questa fase normalmente vengono applicati
modelli di illuminazione che cercano di simulare
linterazione tra luce e materiali dei modelli
della scena. - In grafica real-time vengono utilizzati
normalmente modelli di illuminazione locali, che
calcolano il colore di un vertice considerando il
materiale delloggetto, la posizione del vertice
e la sua normale, e la posizione della luce. -
10Projection - 1
- In questa fase il volume di vista viene
trasformato in un cubo con estremi in
(-1,-1,-1) e (1,1,1) , chiamato volume di vista
canonico. - Esistono due tipi di proiezione
- Ortografica (o parallela) il volume di vista è
un parallelepipedo, linee parallele rimangono
parallele. - Prospettica il volume di vista è un tronco di
piramide a base rettangolare (frustum), linee
parallele possono convergere allorizzonte.
11Projection - 2
12Projection - 3
13Projection - 4
- Le proiezioni, come le trasformazioni di
modellazione e di vista, sono rappresentate da
matrici 4x4. - Dopo lapplicazione della proiezione, si dice che
la geometria è descritta in coordinate
dispositivo normalizzate (normalized device
coordinates).
14Clipping
- Solo le primitive interamente o parzialmente
dentro il volume di vista devono essere passate
al rasterizer stage. - Le primitive in parte dentro il volume vanno
clippate per eliminare le parti fuori dal volume.
15Screen mapping
- Questa fase consiste nel mappare le coordinate
tridimensionali (x,y,z) dei vertici nel cubo di
lato unitario in coordinate bidimensionali
(x,y) della finestra sullo schermo. - Le coordinate z non sono modificate.
- Le coordinate (x,y) sono dette coordinate
schermo (screen coordinates). - Le coordinate schermo insieme alle coordinate z
sono dette coordinate finestra (window
coordinates)
16Riassunto coordinate
Model and View Transform
Lighting
Projection
Clipping
Screen Mapping
Normalized Device Coord. 4D (Omogenee)
World Coord. 4D (Omogenee)
Window Coord. 2D (x,y) coordinate schermo
coordinata z di profondità mantenuta a parte
World Coord. 3D
17Rasterizer stage - 1
- Scopo di questultima fase è assegnare il colore
corretto ai pixel dellimmagine finale,
memorizzati nel color buffer. - In questa fase si risolve il problema della
visibilità le coordinate z (memorizzate nello
Z-buffer) dicono, per ogni pixel, quale primitiva
è più vicina rispetto alle altre, e quindi qual
è il colore da assegnare. - Vengono anche calcolate le informazioni relative
alle texture.
18Rasterizer stage - 2
- Altri buffer possono essere utilizzati in questa
fase per effettuare operazioni sui pixel - Alpha channel, per effetti di trasparenza
- Stencil buffer, per vari effetti come ombre e
riflessioni - Accumulation buffer, per altri effetti come il
motion blur. - Alla fine di queste operazioni, limmagine può
essere visualizzata.
19La pipeline di OGL
no DL immediate mode
genera vertici da spline
possono essere riletti da FB operazioni su
gruppi di pixel (BitBlt)
pixel data
display list
trasformazioni anche su texture
pixel operation
evaluator
organizza texture mapping sfrutta memoria locale
x texture
per vertex op primitive assembly
rasterization
texture assembly
per fragment operation
clipping, proiezione prospettica
effetti fog dithering hiddden surface masking ...
frame buffer
20Display List
- Tutti i dati (geometria o pixel di texture) sono
salvate in una display list - Se la display list non viene usata si opera in
modalità immediata, cioè i dati sono processati
immediatamente
21Evaluator
- Tutte le primitive geometriche sono in ultima
analisi descritte da vertici. Curve parametriche
possono essere definite da punti di controllo e
funzioni polinomiali (funzioni base). I vertici
vengono ricavati dalla valutazione della curva
parametrica. - Fornisce anche normali, coordinate texture,
colori e valori di coordinate spaziali di vertici
dai punti di controllo
22Per-vertex operation
- I vertici vengono convertiti nello spazio
omogenee 4D - Viene calcolata la proiezione prospettica
- Se le texture sono attivate vengono generate le
coordinate texture e traformate per la proiezione - Se il modello di illuminazione è abilitato viene
calcolato in questa fase, usando coordinate,
normali, posizione delle sorgenti di luce,
proprietà dei materiali per calcolare il colore
23Primitive assembly
- La parte prevalente dellassemblaggio delle
primitive è il clipping - Il clipping di linee può generare nuovi vertici
in corrispondenza dellintersezione con i piani
limite del frustum di visione - Viene eseguita la divisione per la componente w
ritornando nello spazio 3D - Si applica la trasformazione window-to-viewport
- Se il face culling è abilitato si escludono le
facce autonascoste
24Pixel operation
- I pixel dallimmagine di input vengono
spacchettati in funzione del formato di ingresso - I dati sono scalati e rinormalizzati
- Se i pixel sono letti dal frame buffer vengono
ancora riscalati e rinormalizzati - Vengono gestiti anche i caratteri
- Il risultato viene trasferito al frame buffer,
alla memoria texture o alla memoria centrale
25Texture assembly
- Le texture vengono applicate alla geometria
26Rasterization
- I dati geometrici e i pixel vengono convertiti in
fragments - Ogni fragment (quadrato) corrisponde a un pixel
finale - Se la conversione riguarda linee si applica
lantialiasing - Se la conversione riguarda poligoni si applica il
colore derivante dal modello di illuminazione - Ogni fragment conserva linformazione di
profonditÃ
27Fragment operation
- Al fragment viene associato un texel, elemento di
texture calcolato in precedenza - Se previsto si calcola leffetto nebbia
- Si calcola alpha test per effetti di trsparenza,
stencil test per effetti di mascheratura (es.
ombre) e lo depth buffer test (z-buffer) per la
rimozione delle facce nascoste - Alla fine il fragment viene scritto nel frame
buffer