Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006
Programmazione Grafica aa2005/20062 Pipeline - 1 Funzione principale della pipeline di rendering è generare (renderizzare) un’immagine bidimensionale, dati: – una camera virtuale, –oggetti tridimensionali, –sorgenti di luce, –modelli di illuminazione, –texture ed effetti –ecc….
Programmazione Grafica aa2005/20063 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 ). ApplicationGeometryRasterizer
Programmazione Grafica aa2005/20064 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
Programmazione Grafica aa2005/20065 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.
Programmazione Grafica aa2005/20066 Geometry stage In questa fase viene eseguita la maggior parte di operazioni sui poligoni e sui vertici. E’ normalmente suddivisa in questo modo: ApplicGeomRast Model and View Transform LightingProjectionClipping Screen Mapping
Programmazione Grafica aa2005/20067 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 ).
Programmazione Grafica aa2005/20068 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 ).
Programmazione Grafica aa2005/20069 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.
Programmazione Grafica aa2005/ 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.
Programmazione Grafica aa2005/ Projection - 2 Proiezione ortografica
Programmazione Grafica aa2005/ Projection - 3 Proiezione prospettica
Programmazione Grafica aa2005/ 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 ).
Programmazione Grafica aa2005/ 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.
Programmazione Grafica aa2005/ 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 )
Programmazione Grafica aa2005/ Riassunto coordinate Model and View Transform LightingProjectionClipping Screen Mapping World Coord. 3D World Coord. 4D (Omogenee) Normalized Device Coord. 4D (Omogenee) Window Coord. 2D (x’,y’) coordinate schermo + coordinata z di profondità mantenuta a parte
Programmazione Grafica aa2005/ 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.
Programmazione Grafica aa2005/ 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 effetti di motion blur. Alla fine di queste operazioni, l’immagine può essere visualizzata.
Programmazione Grafica aa2005/ Riassumendo... pixel data vertex data display list pixel operation evaluator rasterization per vertex op & primitive assembly texture assembly per fragment operation frame buffer genera vertici da spline trasformazioni anche su texture clipping, proiezione prospettica organizza texture mapping sfrutta memoria locale x texture possono essere riletti da FB operazioni su gruppi di pixel (BitBlt) no DL immediate mode effetti fog dithering hiddden surface masking...