Lezione 2: hardware ergo triangoli Computer Graphics Lezione 2: hardware ergo triangoli Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Marco Tarini
Riassunto puntata precedente 1/3 Computer Graphics ( CG ): molteplici applicazioni medicali industriali beni culturali militari telecomunicazioni commerciali ricerca scientifica (scivis) intrattenimento: games intrattenimento: movies e altro (realta' virtuale....) campo in forte progresso citare: Pubblicita', Futurama, wireframes, differenza special effects con visual effects M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 2
Riassunto puntata precedente 2/3 acquisizione 3D / simulazione / modellazione (e.g. 3Dstudio max, Maya) mondo reale / modello matematico / artista 3D ... applicazione interattiva rendering Geometria Immagine/i preprocessing (modelling) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 3
Riassunto puntata precedente 3/3 Ci occuperemo principalmente di: Real Time 3D Rendering rendering Scena 3D Immagine N volte al sec ( e.g. N=60 ) screen buffer ( array 2D di pixel ) resto dell' applicazione M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 4
188 MegaBytes / sec Real Time 3D Rendering Problema challanging! per esempio: pixel = 32 bit = 4 bytes ("pixel depth") screen buffer = 1024 x 768 pixels ("screen resolution") frame rate = 60 Hrz ("fps") total = 4 x 1024 x 768 x 60 byte al sec ("fill-rate", in bytes) 188 MegaBytes / sec M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 5
Fill-rates molto elevati Real Time 3D Rendering Fill-rates molto elevati Anticipazione: ...e il fill-rate non è sempre il collo di bottiglia Anticipazione 2: ...e quella e' una sottostima del fill-rate. manca il fattore depth-complexity ~ x2.5 (come vedremo...) sono piu' di 32 bit x pixel ~ C'è bisogno di muscoli potenza di calcolo M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 6
Ingrediente base della soluzione: hardware specializzato Real Time 3D Rendering Problema difficile fortunatamente, processo massicciamente parallelizzabile Ingrediente base della soluzione: hardware specializzato M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 7
Sistemi Multimediali II Ci occuperemo principalmente di: Real-Time Hardware-Based 3D Rendering M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 8
Hardware specializzato per il rendering Vantaggio: efficienza computazioni più ripetute hard-wired nel chipset parallelismo rendering/resto-dell-applicazione: rendering nella scheda grafica resto dell'applicazione libera di utilizzare la CPU e RAM base MA SOPRATTUTTO: sfruttamento del parallelismo implicito nel problema di rendering sotto forma di parallelismo di pipeline sotto forma di parallelismo in ogni fase del pipeline Svantaggio: rigidità vincola l'approccio usato per fare rendering... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 9
Paradigmi di rendering Raytracing Rasterization based Image based (per es. light filed) Radiosity Point-splatting ... perdonate l'animazione MontyPyton-esca nota: E' stato sviluppato HW dedicato a fare Raytracing, ma e' ancora prototipale. Per la sua affermazione la strada e' tutta in salita. C'e' anche chi prova a fare Raytracing sull'hardware nato per fare rasterizzazione. Lo stesso per i light field Point splatting e' simile a rasterization based, e in un certo senso ne rappresenta un sottocaso. Ma se le architetture delle schede grafiche avessero avuto principalmente questa applicazione in mente, sarebbero molto diverse Radiosity puo' essere considerata M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 10
Hardware dedicato alla grafica : storia ~20 anni: dalla metà degli '80 (e.g.: SGI Iris - 1986) dalla metà dei '90, il fiaccola passa dai mainframes ai PC progressi enormi nella efficienza piu' che "Moore’s Law": ~2.4x / year invece di ~1.6 / year nella funzionalità i dettagli storici saltiamoli per ora a mano a mano che vedremo le tecniche diremo quando sono state introdotte filosofia di fondo rimasta la stessa paradigma di rendering: basato principalmente su rasterizzazione di triangoli M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 11
Hardware dedicato alla grafica : storia aumento potenza 10 9 One-pixel polygons (~10M polygons @ 30Hz) GeForce 3 & Radeon 10 8 UNC/HP PixelFlow SGI R-Monster Peak SGI 10 7 IR Nvidia TNT Perf. Division Pxpl6 E&S 3DLabs Harmony SGI Cobalt UNC Pxpl5 ('s/sec) Glint Accel/VSIS SGI SkyWriter Voodoo 10 6 SGI VGX SGI Megatek RE1 E&S Freedom PC Graphics HP VRX HP TVRX SGI RE2 Flat shading Division VPX 10 5 E&S Stellar GS1000 Textures F300 UNC Pxpl4 SGI GT Gouraud shading Antialiasing HP CRX SGI Iris 10 4 86 88 90 92 94 96 98 00 Year M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 12
Hardware dedicato alla grafica : storia aumento potenza Virtua Fighter (SEGA) 50K triangles/sec Dead or Alive 3 (Tecmo Corp., Xbox) 100M triangles/sec Dawn (NVIDIA) 200M triangles/sec 1995 2001 2002 M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 13
Hardware dedicato alla grafica : storia aumento capabilities HW supported… transform and lighting HW supported… polygon fill HW supported… color interpolation (Goroud) HW supported… texture mapping HW supported… per-pixel shading (Phong) HW supported… alpha blending HW supported… fog computation HW supported… Z-buffers HW supported… bump-mapping HW supported… environment mapping (“Cube-maps”) HW supported… stencil buffers (per pixel masks) HW supported… color transform matrices HW supported… paletted textures HW supported… multiple texture accesses HW supported… texture filtering (MIP-maps) HW supported… Level-of-Detail computation HW supported… dependent texturing … Programmable HW M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 14
Hardware dedicato alla grafica : storia Progresso congiunto HW e Algoritmi Un po come ruota e strada sviluppi hardware tecniche algoritmiche Ruote inutili senza strade Strade inutili senza ruote Ruote migliori vengono sviluppate per le strade al livello tecnologico esistente - o appena superiore. (un migloramento della ruota che richiede una strada futuristica e' assai poco utile, esempio pneumatico per acciottolato) Tecnologia Stradale progredisce per far funzionare meglio le ruote al livello tecnologico esistente. Nuovi sviluppi delle ruote e diffusione delle ruote nuove stimolano strade piu' avanzate che ne sfruttino la potenzialita' (perche diventano utili). Nuovi sviluppi delle strade stimolano ruote miglori (nuove migliorie divenano possiili) tecnologia strada tecnologia ruota M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 15
Rasterization-based HW-supported rendering anche riferito come Transform and Lighting (T&L) paradigm screen buffer rendering Scena 3D composta da primitive di pochissimi tipi: punti linee MA SOPRATUTTO triangoli primitive di rendering M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 16
Paradigmi di rendering Rendering Paradigm: (Triangle-) Rasterization Based detto anche: Transform and Lighting ( T & L ) Che si usino solo le seguenti primitive di rendering : triangoli, segmenti, punti Raytracing Rasterization based Image based (per es. light filed) Radiosity Point-splatting ... perdonate l'animazione MontyPyton-esca nota: E' stato sviluppato HW dedicato a fare Raytracing, ma e' ancora prototipale. Per la sua affermazione la strada e' tutta in salita. C'e' anche chi prova a fare Raytracing sull'hardware nato per fare rasterizzazione. Lo stesso per i light field Point splatting e' simile a rasterization based, e in un certo senso ne rappresenta un sottocaso. Ma se le architetture delle schede grafiche avessero avuto principalmente questa applicazione in mente, sarebbero molto diverse Radiosity puo' essere considerata M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 17
Rasterization-based HW-supported rendering punto primo: tutto sia composto da triangoli (3D) o al limite da punti, o segmenti x v0 =( x0, y0, z0 ) v1 =( x1, y1, z1 ) v2 =( x2, y2, z2 ) z y M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 18
Rasterization-based HW-supported rendering tutto sia composto da triangoli (3D) o al limite da punti, o segmenti non tutto nasce composto di triangoli... ...e quindi va trasforamto in triangoli -alcune volte è facile farlo, altre meno -vediamo una rapida carrellata alcuni elementi li vedremo meglio in altre lezioni... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 19
Tutto sia composto da triangoli (3D) due triangoli! un quadrilatero? "quad" "diagonal split" M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 20
Tutto sia composto da triangoli (3D) (n-2) triangoli! ...ma risoltissimo da decenni e decenni un poligono a n lati? triangolarizzazione di poligono: (in 3D, non un problema del tutto banale...) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 21
Tutto sia composto da triangoli (3D) Nota: e' una approssimazione! Va deciso a che livello di precisione. Piuà alto il livello, piuà triangoli la superficie di un solido geometrico, per es. una sfera? M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 22
Tutto sia composto da triangoli (3D) Nota: e' una approssimazione! Va deciso a che livello di precisione. Piuà alto il livello, piuà triangoli la superficie di un solido geometrico, per es. una cono? triangoli! M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 23
Tutto sia composto da triangoli (3D) problema banale un campo d'altezza? (array 2D di altezze, e.g. per modellare un terreno?) triangoli! M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 24
Esempio di campo di altezza triangolato "height field" un esempio tipico: campo d'altezza per modellare un terreno... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 25
Tutto sia composto da triangoli (3D) Nota: e' una approssimazione! Bilancio precisione - complessità una superficie curva parametrica? per es. NURBS *, b-splines *... triangoli! questo è facile. Il contrario, che qualche volta è utile, MOLTO meno * verdemo più avanti nel corso, se c'è tempo M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 26
Tutto sia composto da triangoli (3D) x x z z y y una nuvola di punti e' giusto questo: un insieme non strutturato di punti. di solito rappresenta un campionamento di superficie, e i punti sono su questa superficie. Triangolare una nuvola di punti = costruire un insieme di triangoli contigui cui vertici sono i punti originali In 2D e' banale (diagramma di voronoi) nuvola di punti ? (point clouds) triangoli! problema molto studiato, e (nel caso generale) difficile M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 27
da nuvola di punti a triangoli: esempio M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 28
Tutto sia composto da triangoli (3D) che definiscono una iso-superficie volume? triangoli! algoritmi di segmentation (e.g. "marching cubes" * ) * verdemo più avanti nel corso, se c'è tempo M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 29
Da dataset volumetrico a triangoli: esempio M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 30
Tutto sia composto da triangoli (3D) che definiscono la superficie esplicitamente le superfici implicite sono definite come luogo di zeri di funzioni da RxRxR a R superfici implicite? triangoli! nb: non c'e' un modo solo per farlo. Modo + semplice (non ottimo): campionare volume e estrarre isosuperfice a valore 0 M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 31
Tornando allo schema generale... acquisizione 3D / simulazione / modellazione (e.g. 3Dstudio max, Maya) mondo reale / modello matematico / artista 3D ... applicazione interattiva rendering Geometria Immagine/i preprocessing (modelling) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 32
Tipica fase di preporsessing diagonal split (da quad a 2 tri) può venire fatto anche qui, al volo rendering Geometria Tutto il resto che abbiamo visto nei lucidi precedenti (trasformazione in triangoli) tipicamente qui Immagine/i preprocessing (modelling) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 33
Superfici parametriche Riassuntino "al volo" Quads r e n d i g Campi d'altezza Forme geo. di base Triangoli Superfici parametriche n-agoni al volo = "on the fly" Dati Volumetrici Superfici implicite Nuvole di punti M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 34
Modellare direttamente con triangoli rappresentare gli oggetti con triangoli o al limite da punti, o linee un coniglio di porcellana? una teiera? triangoli, triangoli, triangoli Ovviamente... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 35
Modellare direttamente con triangoli rappresentare gli oggetti con triangoli o anche quads o al limite da punti, o linee Ovviamente... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 36
Modellare direttamente con triangoli M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 37 by Phillip Heckinger (3D modeller) 1994
Un limite di questo approccio Non sempre e' semplice modellare le entità da rappresentare con triangoli... esempi: nuvole fuoco pelliccia by Niniane Wang (non real time) by N. Adabala uni florida (non real time) by M. Turitzin and J. Jacobs Stanford Uni (real time!) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 38
Per dirla tutta sulle primitive di rendering Tutto l'hardware è progettato e ottimizzato principalmente per questo caso Triangoli ok, abbiamo capito Quads in un certo senso, perchè diventano triangoli al volo Segmenti Punti M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 39
Per dirla tutta sulle primitive di rendering Triangoli ok, abbiamo capito Quads in un certo senso, perchè diventano triangoli al volo Segmenti Punti utili ad esempio per particle systems Ma c'e' anche chi cerca di utilizza per tutto, sostituendo i triangoli M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 40
Per dirla tutta sulle primitive di rendering Triangoli ok, abbiamo capito Quads in un certo senso, perchè diventano triangoli al volo Segmenti Punti utile ad esempio per fare rendering di capelli peli etc (ma non è l'unico sistema e non è detto che sia il migliore) nVIDIA tech demo at SIGGRAPH 2001 nVIDIA quadro M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 41
Capelli sono fatti con le primitive "segmento" nVIDIA technology demo at SIGGRAPH 2004 =REAL TIME!= M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 42