Pipeline di rendering

Transcript

Pipeline di rendering
Pipeline di rendering
Davide Gadia
Corso di Programmazione Grafica per il Tempo Reale
Laurea Magistrale in Informatica per la Comunicazione
a.a. 2013/2014
Outline
• Grafica “off-line” vs Grafica “real-time”
• Pipeline di rendering
• Velocità di rendering e bottleneck
• GPU e pipeline di rendering GPU-based
Grafica “off-line”
• Rendering fotorealistico
• Simulazione avanzata di interazione luce-materia
!
Ray tracing, Photon mapping, subsurface scattering, ...
• Lunghi tempi di rendering
• Rendering statici
• Animazione cinematografica
http://www.blendswap.com/blends/view/21803
Grafica real-time
• Applicazioni interattive
• Rendering deve essere ricalcolato MOLTE volte per
secondo
!
Almeno 30 fps (frame per second) = 0.0 33 secondi per frame
• Fluidità effetto finale
• Ottimizzazione qualità rendering/tempo di calcolo
Videogames
Far Cry 3
Modellazione 3D/CAD
Call of Duty: Black Ops II
Visualizzazione Scientifica
Realtà Virtuale
Pipeline di rendering
• Camera virtuale
• Scena 3D
• Sorgenti di luce
• Textures
Immagine 2D
• …..
• Equazioni di shading
Pipeline di rendering: fasi concettuali
Pipeline di rendering: fasi concettuali
• Ogni fase può essere a sua volta una pipeline
• Una fase può essere parallelizzata (anche in parte)
Pipeline di rendering: fasi concettuali
• Fase concettuale comprende diverse fasi funzionali
• Fasi funzionali possono essere sviluppate in fasi di
pipeline
!
!
!
!
In maniera diversa
Diverse architetture
Soluzioni diverse SW/HW
….
Pipeline di rendering: Application stage
• Diversi tipi di task
!
Eseguiti in parallelo dai diversi core della CPU
• Lo sviluppatore ha pieno controllo di questa fase
• Esempi:
!
Caricamento modelli
!
Collision detection
!
Tecniche di accelerazione
!
Calcolo parametri animazione procedurale
!
Gestione I/O
• Task più importante:
!
Invio delle primitive di rendering a hardware grafico
Pipeline di rendering: Geometry stage
• Responsabile della maggior parte delle operazioni su
poligoni e vertici
!
!
per-polygon
per-vertex
• Suddivisa in fasi funzionali:
Geometry stage: Model and View Transform
• Trasformazioni di modello
!
Da coordinate locali a coordinate mondo
• Trasformazioni di vista
!
!
!
!
Camera virtuale ha posizione e orientamento
Trasformazione di vista posiziona camera nell'origine, orientata
lungo l'asse z
Agevola operazioni di proiezione e clipping
Da coordinate mondo a coordinate camera
Geometry stage: Vertex shading
• Calcolo dell'apparenza superficiale degli oggetti
• Interazione luce-materiale
!
Diversi livelli di simulazione
!
Shading equation
!
Es: Phong
• Calcoli per-vertex
!
Ulteriori operazioni svolte in fasi successive
!
Rasterizzazione interpola i dati
Geometry stage: Clipping
• Solo le primitive dentro il volume di vista canonico
vengono mandate alla fase di rasterizzazione
!
!
Totalmente o parzialmente
Clipping opera sulle primitive parzialmente dentro il volume di
vista
Geometry stage: Screen mapping
• Coordinate x,y delle primitive vengono trasformate in
coordinate schermo
!
Nuove coordinate + valori z-buffer sono passati alla fase di
rasterizzazione
Pipeline di rendering: Rasterizer stage
• Obiettivo:
!
calcolare il colore dei pixel nell'immagine finale coperti da ogni
primitiva
• Suddivisa in fasi funzionali:
Rasterizer stage: Triangle setup and traversal
• Scan conversione
!
Controllo su pixel con centro coperto (anche parzialmente) da
un triangolo
!
Generazione fragment per la parte di pixel coperto da triangolo
!
Dati di shading proveniente da Geometry stage
!
Profondità
!
Dati interpolati a partire dai 3 vertici
Rasterizer stage: Pixel shading
• Operazioni per-pixel
!
Shading (se non effettuato in geometry stage)
!
Calcolo del colore per ogni pixel
!
Color interpolation
!
Texturing
!
…..
Rasterizer stage: Merging
• Combinazione tra:
!
colore mantenuto nel color buffer
!
colore dei fragment
• Risoluzione visibilità:
!
Valori in color buffer solo per primitive visibili
!
Z-buffer algorithm
!
Controllo valore profondità frammento con valore in z-buffer
!
Se minore, allora frammento è visibile e sostituisco valore
nel color buffer e z-buffer
!
Se maggiore, allora non è visibile e lo scarto
!
Ordine rendering ininfluente
!
Problemi con oggetti trasparenti
!
Vanno trattati per ultimi e in ordine back-to-front
Rasterizer stage: Merging
• Altri canali e buffer influiscono sui frammenti e sul
colore finale dei pixel
!
!
!
Alpha channel
!
Informazioni opacità per ogni pixel
Stencil buffer
!
Usato per particolari operazioni di blending
Accumulation buffer
!
Usato per effetti come motion blur, soft shadows, ecc
Rasterizer stage: Merging
• Double buffering
!
per evitare di vedere il risultato progressivo della
rasterizzazione
!
Rendering offline in back buffer
!
Contenuto trasferito nel front buffer
Performance di una pipeline
• Elementi di una pipeline eseguiti in parallelo
• Velocità di rendering
!
Rendering speed o throughput
!
data dallo stage più lento di una pipeline
!
Collo di bottiglia (bottleneck)
!
Frame per second (fps)
!
Numero di immagini renderizzate al secondo
!
Di solito considerata su intervallo
!
Hertz (Hz) = 1/seconds
!
Frequenza di update
!
Utilizzata per display
!
Valore fisso
Performance di una pipeline
• fps e Hz vanno messi in relazione
!
Se fps sono maggiori della frequenza di refresh del display, la
velocità di rendering è data da quest'ultima.
• Esempio:
!
Collo di bottiglia della pipeline: 62.5 ms = 1/0.0625 = 16 fps
!
Monitor: frequenza di 60 Hz
!
Opzioni per velocità di rendering:
!
60 Hz, 30 Hz, 20 Hz, 15 Hz, 12 Hz, …..
!
Di conseguenza:
!
velocità di rendering finale 15 Hz
!
Massimo valore costante supportabile dal monitor
Pipeline grafica GPU
• Graphics Processing Unit (GPU)
• Accelerazione hardware essenziale per alte velocità di
rendering
!
!
!
Silicon Graphics leader nell'ambito professionale
Dal 1996 (3Dfx Voodoo 1) hardware grafico disponibile in PC
Ad oggi, hardware grafico disponibile su schede separate (ATI,
NVIDIA) o integrate nelle schede madri (Intel)
!
Su PC, notebook, tablet, smartphone, ecc....
Pipeline grafica GPU
• Videogiochi richiedono shading avanzato
• GPU più potenti = shading migliore
• Necessità di mantenere fps adeguati = continua
evoluzione hardware
Pipeline grafica GPU
• Crescita valore GFLOPS
Pipeline grafica GPU
• GPU Memory Bandwidth
Pipeline grafica GPU
• Design GPU specifico per calcoli matematici intensivi
• Rendering grafico:
!
Tanto:
!
Calcolo sequenziale
!
Algebra lineare
!
Calcolo matriciale
!
Accesso sequenziale a memoria
!
Poco:
!
Controllo di flusso (if/else, cicli)
!
Accesso casuale memoria
Pipeline grafica GPU
• Più transistors per Arithmetic Logic Unit (ALU)
!
Calcoli di rendering più veloci
!
Area dedicata ad ALU: CPU (7%) vs GPU (>50%)
Pipeline grafica GPU: inizi
CPU
GPU
• Accelerazione hardware inizialmente usata per fasi finali
pipeline
!
rasterizzazione
Pipeline grafica GPU: pipeline fissa
CPU
GPU
• Generazioni successive di hardware:
! Accelerazione hardware ha “risalito” la pipeline
• Pipeline fissa:
!
!
!
!
fixed-function pipeline
Pipeline hardware composta da elementi non programmabili
Possibilità di settare diversi stati in alcune parti
!
Es: test Z-buffer on/off
Ma no possibilità di controllo sull'ordine e su quali funzioni
applicare in ogni stato
Pipeline grafica GPU: pipeline programmabile
CPU
GPU
• Ultima decina di anni: pipeline programmabile
!
Parti critiche della pipeline sono programmabili dall'utente
!
tramite Shaders
!
Implementazione, controllo e determinazione su tipo e ordine
operazioni in alcune parti della pipeline
!
Alcune parti rimangono configurabili e non programmabili
!
Trend è verso sempre maggiore flessibilità e programmabilità
Pipeline grafica GPU: pipeline programmabile
CPU
GPU
• Da pipeline fissa a pipeline programmabile:
!
Processo graduale da limitata e opzionale programmabilità a
“obbligo” utilizzo shaders
!
Progressiva deprecazione di funzioni della pipeline fissa
Pipeline grafica: implementazione GPU
• Riorganizzazione Geometry and Rasterizer stage
!
Diverse fasi hardware con diversi livelli di configurabilità o
programmabilità
!
Verde: completamente programmabili
!
Gialli: configurabili ma non programmabili
!
Blu: completamente fissi
Geometry e Rasterizer stage revisitati
Pipeline grafica GPU: Vertex shader
• Prima fase ad elaborare una triangle mesh
! Precedente fase di assemblamento informazioni su vertici
ecc
!
Preparazione dati per elaborazione vertex shader
• Vertex shader:
!
Modifica
! Crea
!
Ignora
• Valori associati ad ogni vertice
! Colore
!
Normale
!
Coordinate texture
! posizione
Pipeline grafica GPU: Vertex shader
• Non può creare o distruggere vertici
• Ogni vertice processato indipendentemente
!
parallelismo
!
Risultato elaborazione un vertice non può essere passato ad un
altro vertice
• Esempi:
!
Shadow volume
!
Vertex blending
!
Deformazioni procedurali (clothing, acqua, ecc)
!
….
Pipeline grafica GPU: Geometry shader
• Fase opzionale
• Elabora insieme più vertici di un oggetto
• Problemi di performance:
! Primitive sono elaborate e restituite nello stesso ordine di
input
! Risultato da salvare e ordinare in caso di computazione in
parallelo
! Imposto limite al numero di calcoli possibili
• Esempi:
!
Creazione di un limitato numero di copie
! Selezione bordi per algoritmi legati a calcolo ombre
! Elaborazione ed estrazione di parametri legati ai vertici
!
….
Pipeline grafica GPU: Pixel shader
• Fase relativa alla definizione e gestione di come un
triangolo copra i pixel dell'immagine finale
• Pixel shader offre piena programmabilità alle operazioni
sui frammenti
!
!
!
Tecniche image processing
Calcolo gradienti
Utilizzo avanzato textures
Pipeline grafica GPU: Pixel shader
• Multiple render targets (MRT)
!
Salvataggio risultati pixel shader in buffer differenti
!
Un singolo passo per calcolare più immagini intermedie
!
Render-to-texture
!
Tecniche Image-based
●
Deferred rendering
Forward rendering vs Deferred Rendering
• Forward rendering
modalità “standard” descritta fino ad adesso
calcolo illuminazione per-vertex, per-fragment, per ogni luce
molto calcolo sprecato per frammenti che verranno scartati da
depth testing



Forward rendering vs Deferred Rendering
• Deferred rendering
processo geometria senza applicare lighting
utilizzo diversi render targets per salvare







colori
profondità
normali
….
applico lighting alla fine in Fragment shader solo su fragment
effettivamente visibili


complessità forward rendering: O(num_fragments * num_lights)
complessità deferred rendering: O(screen_resolution * num_lights)
Forward rendering vs Deferred Rendering
• Deferred rendering
Forward rendering vs Deferred Rendering
• Problemi Deferred rendering
serve HW recente: supporto MRT
serve adeguata larghezza di banda
problemi con oggetti trasparenti e materiali multipli
no anti-aliasing





Adeguato in scene con molte luci dinamiche
Shader model
• Caratteristiche programmabilità delle pipeline
• Introdotti seguendo evoluzione DirectX
• Servono a categorizzare la caratteristiche della scheda
grafica in uso
Shader
model
Direct3D OpenGL
Esempio scheda
2
9
2.x
NVIDIA GeForce 6800
ATI Radeon X800
3
10.x
3.x
NVIDIA GeForce 8800
ATI Radeon HD 2900
4
11.x
4.x
NVIDIA GeForce GTX 480
ATI Radeon HD 5870
Shader model
Shader model 4
• Unified Shader Model
!
Common-shader core
!
Vertex, pixel, geometry shader condividono un modello di
programmazione
!
Set istruzioni consistente tra i 3 tipi
!
Con differenze
!
Es: solo pixel shaders possono utilizzare gradienti di
coordinate per accedere a textures
Shader model 4
• Unified Shader Architecture
!
Unified design
!
Unità computazionali possono eseguire tutti e 3 i tipi di shader
!
Architettura flessibile
!
Vertex, pixel, geometry shader diventano thread
• Hardware non deve per forza avere architettura unica
per supportare lo Unified Shader Model
!
E viceversa
Unified Shader Architecture
Unified Shader Architecture
Unified Shader Architecture
Unified Shader Architecture
References
•
“Real time rendering – 3rd edition” : Cap 2-3 – Cap 7 (pag. 279-283)
•
Slide e immagini da www.realtimerendering.com
•
Slide CS 563 “Advanced Topics in Computer Graphics” (Worcester Polytechnic
Institute)
!
http://web.cs.wpi.edu/~emmanuel/courses/cs563/S12/
•
Slide corso SIGGRAPH 2008 “Beyond Programmable Shading”
!
http://s08.idav.ucdavis.edu/
!
Immagini da
http://gamedevelopment.tutsplus.com/articles/forward-rendering-vs-deferred-rend
ering--gamedev-12342

Documenti analoghi

Presentazione di PowerPoint

Presentazione di PowerPoint  Definire i parametri di una camera é necessario perché un viewer possa generare un’immagine di una scene  Interattivamente (implicitamente) a (CAD, Games)  Seguendo una API (esplicitamente)

Dettagli

Transform

Transform Cenni storici sull’hardware grafico 2007: geometry shader, stesso hardware per tutti gli shaders (NVidia 8800) CPU GPU: Graphical Processing Unit 3D 2D n 

Dettagli

PDF pipeline

PDF pipeline Cenni storici sull’hardware grafico 2007: geometry shader, stesso hardware per tutti gli shaders (NVidia 8800) CPU GPU: Graphical Processing Unit 3D 2D

Dettagli