Architettura di OGL e pipe-line
Daniele Marini
Corso Di Programmazione Grafica
2
Pipeline - 1
• Funzione principale della pipeline di rendering è generare (renderizzare) un’immagine bidimensionale, dati:– una foto camera virtuale, – oggetti tridimensionali, – sorgenti di luce, – modelli di illuminazione, – texture ed effetti– ecc….
3
Pipeline - 2
• Fasi concettuali:
• Ogni fase può essere a sua volta una pipeline.
• L’elemento della pipeline più lento determina la velocità di rendering (misurata in frames per second, o fps).
Application Geometry Rasterizer
4
Application stage - 1
• E’ sempre implementata via software• Quindi il programmatore ha pieno controllo dell’implementazione
• Non è suddivisa in ulteriori pipeline
• Può essere eseguita in parallelo su numerosi processori per aumentare le prestazioni
5
Application 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.
6
Geometry 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
TransformLighting Projection Clipping
ScreenMapping
7
Model and View Transform - 1
• In questa fase vengono applicate le trasformazioni ai vertici e alle normali della geometria passata dall’ Application stage.
• Dopo l’applicazione delle trasformazioni, si dice che la geometria è descritta in coordinate mondo (world coordinates).
8
Model 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 nell’origine e facendola guardare lungo l’asse negativo delle z (prospettiva canonica).
• Dopo l’applicazione di queste trasformazioni, si dice che la geometria è descritta in coordinate occhio o camera (camera coordinates o eye coordinates).
9
Lighting and Shading
• In questa fase normalmente vengono applicati modelli di illuminazione che cercano di simulare l’interazione 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 dell’oggetto, la posizione del vertice e la sua normale, e la posizione della luce.
10
Projection - 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 all’orizzonte.
11
Projection - 2
• Proiezione ortografica
12
Projection - 3
• Proiezione prospettica
13
Projection - 4
• Le proiezioni, come le trasformazioni di modellazione e di vista, sono rappresentate da matrici 4x4.
• Dopo l’applicazione della proiezione, si dice che la geometria è descritta in coordinate dispositivo normalizzate (normalized device coordinates).
14
Clipping
• 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.
15
Screen 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)
16
Riassunto coordinate Model and
ViewTransform
Lighting Projection ClippingScreen
Mapping
World Coord.3D
World Coord.4D (Omogenee)
Normalized DeviceCoord.
4D (Omogenee)
Window Coord.2D
(x’,y’) coordinate schermo+ coordinata z di profondità
mantenuta a parte
17
Rasterizer stage - 1
• Scopo di quest’ultima fase è assegnare il colore corretto ai pixel dell’immagine 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.
18
Rasterizer 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, l’immagine può essere visualizzata.
19
La pipeline di OGL
pixel data
vertex data
display list
pixel operation
evaluator
rasterization per vertex op& primitiveassembly
textureassembly
per fragmentoperation
framebuffer
genera vertici da spline
trasformazionianche su texture
clipping,proiezioneprospettica
organizzatexture mappingsfrutta memorialocale x texture
possono essereriletti da FBoperazioni su gruppi di pixel
(BitBlt)
no DLimmediate
mode
effetti fogdithering
hiddden surfacemasking ...
20
Display 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
21
Evaluator
• 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
22
Per-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
23
Primitive assembly
• La parte prevalente dell’assemblaggio delle primitive è il clipping
• Il clipping di linee può generare nuovi vertici in corrispondenza dell’intersezione 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
24
Pixel operation
• I pixel dall’immagine 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
25
Texture assembly
• Le texture vengono applicate alla geometria
26
Rasterization
• 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 l’antialiasing
• Se la conversione riguarda poligoni si applica il colore derivante dal modello di illuminazione
• Ogni fragment conserva l’informazione di profondità
27
Fragment operation
• Al fragment viene associato un texel, elemento di texture calcolato in precedenza
• Se previsto si calcola l’effetto 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
Top Related