Controllare le proiezioni Daniele Marini Corso Di Programmazione Grafica aa 2005/2006.
Pipeline di Rendering Corso di Programmazione Grafica e Laboratorio Daniele Marini.
-
Upload
gerolamo-guarino -
Category
Documents
-
view
218 -
download
0
Transcript of Pipeline di Rendering Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Pipeline di Rendering
Corso di Programmazione Grafica e Laboratorio
Daniele Marini
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, – textures,– ecc….
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
Application stage - 1
• E’ sempre implementata via software
• Quindi il programmatore ha pieno controllo dell’implementazione
• Non è suddidivisa in ulteriori pipeline
• Può essere eseguita in parallelo su numerosi processori per aumentare le prestazioni
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 stage successivo.
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
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).
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.
• Dopo l’applicazione di queste trasformazioni, si dice che la geometria è descritta in coordinate occhio o camera (camera coordinates o eye coordinates).
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 metodi 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.
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.
Projection - 2
• Proiezione ortografica
Projection - 3
• Proiezione prospettica
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).
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.
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)
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
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) mi dicono per ogni pixel quale primitiva sia più “vicina” rispetto alle altre, e quindi quale sia il colore da assegnare.
• Vengono anche calcolate le informazioni relative alle texture.
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.