Hardware specializzato per il rendering Computer Graphics Lezione 2: hardware ergo triangoli Visione di insieme: • "GPU GPU": GPU – Graphics Processing Unit – La CPU della scheda video – Instruction Set specializzato! Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica • Architettura a pipeline – a "catena di montaggio" Anno Accademico 2010/11 • Modello di computazione SIMD – sfrutta l'alto grado di parallelismo insito nel problema Marco Tarini • Possiede la propria memoria RAM a bordo – "RAM CPU" vs "RAM GPU" – grandi copie di memoria da una all'altra dispendiose Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Hardware specializzato per il rendering Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Hardware dedicato alla grafica : storia Visione di insieme: – ~25 anni: • dalla metà degli '80 (e.g.: SGI Iris - 1986) • principali produttori: – dalla metà dei '90, la fiaccola passa dai mainframes ai PC – NVidia e ATI – progressi enormi (e Intel, AMD - schede integrate) • nella efficienza – supercomp: SUN – più di "Moore’s Law": ~2.4x / year invece di ~1.6 / year • potenza di calcolo • nella funzionalità – migliaia di GFlops! – aumentano i task che è possibile demandare all'HW spec. – filosofia di fondo rimasta la stessa • bus molto performante – e.g. PCI-express: ~16 GB/s • paradigma di rendering: basato principalmente su rasterizzazione di triangoli Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Hardware dedicato alla grafica : storia Hardware dedicato alla grafica : storia • aumento potenza: primitive al sec • aumento potenza: GFLOPS 109 One-pixel polygons (~10M polygons @ 30Hz) GeForce 3 & Radeon 108 UNC/HP PixelFlow Peak Perf. SGI IR 107 Division Pxpl6 UNC Pxpl5 (∆'s/sec) 106 SGI VGX Flat shading 105 UNC Pxpl4 HP VRX SGI GT SGI Iris 86 SGI RE1 88 Gouraud shading 90 Megatek E&S Freedom SGI RE2 E&S F300 Stellar GS1000 HP CRX 104 HP TVRX Nvidia TNT E&S 3DLabs SGI Harmony Cobalt Glint Accel/VSIS SGI SkyWriter SGI R-Monster Voodoo PC Graphics Division VPX Textures Antialiasing 92 Marco Tarini ‧ Computer Graphics ‧ Year 94 96 98 00 2010/11 ‧ Università dell’Insubria (ecco il perchè del General Purpose Computation on GPU) Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria 1 CPU vs GPU Hardware dedicato alla grafica : storia CPU GPU ALU ALU ALU ALU • aumento potenza CONTROL CHACHE • Transistors: <20% ALU >80% control • Transistors ~90% ALU ~10% control più flessibilità più potenza! Virtua Fighter Dead or Alive 3 Dawn (SEGA) (Tecmo Corp., Xbox) (NVIDIA) 50K triangles/sec 100M triangles/sec 250 triangles/sec 1995 2001 2008 1.4 G transistors 1 TeraFLOP 2010/11 ‧ Università dell’Insubria Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Hardware dedicato alla grafica : storia Hardware dedicato alla grafica : storia • aumento capabilities • Progresso congiunto HW e Algoritmi • • • • • • • • • • • • • • • • • transform and lighting 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 HW supported… HW supported… polygon – Un po' come ruota e strada tecniche algoritmiche • tecnologia ruota continua contaminazione fra livelli diversi! tecnologia strada sviluppi hardware Marco Tarini ‧ Computer Graphics ‧ … • Programmable HW Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Livelli? Che livelli? Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Livelli Il tubo catodico (CRT): un fascio di elettroni diretto su una superficie coperta di fosfori Applicazioni Applicazioni SDK SDK Algoritmi Algoritmi API API Driver Scheda grafica Driver Scheda grafica Scheda Grafica Scheda Grafica Display vettoriali: il fascio veniva pilotato direttamente in maniera libera Monitor Marco Tarini ‧ Computer Graphics ‧ Display raster CRT : linea per linea, si spazza tutto lo schermo N volte al secondo (N = refresh rate) Bomb jack - Tehkan 1984 Monitor 2010/11 ‧ Università dell’Insubria Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria 2 Livelli Livelli Display raster LCD (Liquid Crystal Display) liquido + polarizzazione luce Applicazioni Applicazioni Plasma display per pixel: xeno ionizzato via elettrodi reagisce SDK Algoritmi SDK Hardware specializzato per CG Algoritmi API Proiettori LCD o DLP. Specchietti controllati x riflettere luce Driver Scheda grafica Scheda Grafica API Driver Scheda grafica Scheda Grafica Monitor Monitor Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Livelli: Driver Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Livelli: API Application Program Interface Applicazioni Applicazioni SDK SDK Algoritmi Algoritmi Driver: - insieme di routine - controlla a le periferiche hardware - basso livello! Seviluppato dagli stessi produttori HW API Driver Scheda grafica Scheda Grafica Monitor glBegin(GL_LINES); glVertex2f(0.0,0.0); glVertex2f(1.0,1.0); glEnd(); Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Livelli: Algoritmi Il regno dello sviluppatore! Algoritmi esempio: con l’API di OpenGL : Driver Scheda grafica Monitor 2010/11 ‧ Università dell’Insubria Livelli: Algoritmi SDK le 2 API principali: • OpenGL • Direct3D API Scheda Grafica Marco Tarini ‧ Computer Graphics ‧ Applicazioni Insieme di routines - (sotto forma di libreria) - medio livello - x lo sviluppatore L’esempio precendente è un algoritmo (*) che, usando le funzioni glBegin,glEnd e glVertex2f della API OpenGl, disegna un segmento tra (0,0) e (1,1) (*) molto banale Applicazioni SDK Algoritmi API API Driver Scheda grafica Driver Scheda grafica Scheda Grafica Scheda Grafica Monitor Marco Tarini ‧ Computer Graphics ‧ Quando un algoritmo che implementa una nuova funzionalità ha successo può venire incluso a livello dell’API. • chi lo decide? • chi la scrive! Per DirectX decide Microsoft Per OpenGL decide il Khronos Group (consorizio non-profit di industrie) Monitor 2010/11 ‧ Università dell’Insubria Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria ... 3 Livelli: SDK Livelli: applicazioni Tutte quelle viste nella presentazione sono applicazioni Software Development Kit Applicazioni Applicazioni tutto quel che serve per sviluppare un’applicazione SDK SDK ambiente di sviluppo (es: .net, devcpp) librerie strumenti per la condivisione/sincronizzazione del codice manualistica, guide online esempi, benchmarks ... Algoritmi API Driver Scheda grafica Scheda Grafica Algoritmi API Driver Scheda grafica Scheda Grafica Monitor Monitor Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Hardware specializzato per il rendering Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Paradigmi di rendering (classi di algoritmi di rendering) • Vantaggio: efficienza • instruction set specializzato – (computazioni più comuni sono hard-wired) • computazioni in parallelo: 1. 2. 3. 4. 5. fra CPU e GPU » rendering demandato alla scheda grafica » resto dell'applicazione libera di utilizzare la CPU e RAM base a volte: fra GPU distinte (es. più schede sullo stesso BUS) fra le fasi del pipeline (vanno tutte in parallelo) dentro ogni fase del pipeline (più sottoprocess. per fase) instruction level: operazioni operano su vettori di 4 operandi • Svantaggio: rigidità • scelta quasi obbligata dell'approccio al rendering utilizzato • ... quali approcci al rendering? Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Paradigmi di rendering • • • • • • • Ray-Tracing Rasterization based Image based (per es. light field) Radiosity Point-splatting Photon mapping ... Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria detto anche: Transform & Lighting (classi di algoritmi di rendering) Rendering Paradigm: (Triangle(Triangle-) Rasterization Based • • • • • • • Ray-Tracing detto anche: Transform and Lighting Rasterization based ( Tlight & Lfiled) ) Image based (per es. Radiosity I. Che si usino solo Point-splatting le seguenti primitive di rendering : triangoli, triangoli, segmenti, segmenti, punti Photon mapping ... Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Punti 3D Segmenti 3D Triangoli 3D Transform & Lighting screen buffer video scheda grafica Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria 4 Transform & Lighting... Rasterization-based HW-supported rendering • Transform : – trasformazioni di sistemi di coordinate – scopo: portare la scena davanti all'obiettivo della nostra macchina fotografica (virtuale) – piazzare i triangoli visibili sullo schermo • anche riferito come Transform and Lighting (T T&L) paradigm Scena 3D screen buffer rendering • Lighting : – illuminazione composta da primitive di pochissimi tipi: • punti primitive • linee • (in senso generale) – scopo: calcolare il colore finale di ogni parte della scena • risultante da – le sue caratteristiche ottiche – l'ambiente di illuminazione Marco Tarini ‧ Computer Graphics ‧ MA SOPRATUTTO • triangoli 2010/11 ‧ Università dell’Insubria di rendering Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Rasterization-based HW-supported rendering ... Rasterization-Based Rendering • punto primo: tutto sia composto da triangoli (3D) • più specificatamente... – o al limite da punti, o segmenti y x v0 =( x0, y0, z0 ) z v2 =( x2, y2, z2 ) v1 =( x1, y1, z1 ) v2 transform x vertici 3D v1 v0 fragment pixels process finali rasterizer v2 triangolo 2D a schermo "frammenti" (fragments) (2D screen triangle) il lighting invece avviene insieme alla fase "transform" e/o alla fase "fragment process" z y Marco Tarini ‧ Computer Graphics ‧ v1 v0 2010/11 ‧ Università dell’Insubria Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria ... Rasterization-Based Rendering ... Rasterization-Based Rendering • più specificatamente... • Dove è il collo di bottiglia? – nel sistema geometrico? y v1 v0 z v2 x vertici 3D transform v1 v0 fragment pixels process finali rasterizer v2 triangolo 2D a schermo "frammenti" (fragments) (2D screen triangle) carico di lavoro per vertice (sottosistema geometrico) Marco Tarini ‧ Computer Graphics ‧ carico di lavoro per frammento (~per pixel) (sottosistema raster) 2010/11 ‧ Università dell’Insubria • (l'applicaizone è transofrm-limited sinonimo: geometry-limited) – nel sistema raster? • (applicaizone è fill-limited) – nel bus? • (applicaizone è bus-limited sin: bandwidth-limited) – nella CPU? • (applicaizone è CPU-limited) Marco Tarini ‧ Computer Graphics ‧ come si può predirre (in teoria)? come si può verificare in pratica? perché è importante scoprirlo? 2010/11 ‧ Università dell’Insubria 5 Note sulla GPU odierne Esercizio • Stima delle prestazioni: i produttori scrivono tanti numeri, tra i quali: • – Trasformazioni per secondo (sottosistema geometrico) – Fill-rate (KB al sec, o in frammenti al secondo) – Dimensioni Memoria Video • • State effettuando il rendering di un modello composto da un milione di triangoli su un display con risoluzione 1280 x1024 pixel. Il rendering finale occupa l'80% del display. La scheda che state utilizzando ha una performance di 20 milioni di triangoli al secondo ed un fill-rate di 20 Mpixel al secondo. Qual'è il numero massimo di fotogrammi al secondo (fps) che potete ottenere? Il sistema è fill-limited o geometry-limited? Soluzione: – 1280x1024x0.8 = 838.860,8 numero di pixels da accendere per un rendering – 20*2^20=20.571.920 numero di pixels che la scheda può rasterizzare al sec • I primi due sono da prendersi con le molle – Il sottosistema raster può produrre: 20.571.920 / 838.860,8 = 25 fotogrammi al secondo – Sono prestazioni picco, (nella pratica valgono solo su apposito esempio) – Il sottositema geometrico può produrre 20 * 10^6 / 10^6 = 20 fotogrammi al secondo – ma danno un'idea Z componenti fisiche dell'HW! inoltre, molte componenti sono replicate general purpose HW (con CPU) rasterizer Z 1997 general purpose HW (con CPU) Marco Tarini ‧ Computer Graphics ‧ frammenti setup dedicated HW (con GPU) (candidati pixels) Vertici proiettati (punti in R2) (nello screen-buffer) Vertici pixel finali 2010/11 ‧ Università dell’Insubria Cenni storici: nei PC... computazioni per vertice Z computazioni per frammento rasterizer frammenti setup dedicated HW (con GPU) (candidati pixels) Vertici proiettati (punti in R2) Cenni storici: nei PC... Marco Tarini ‧ Computer Graphics ‧ (punti in R3) 2010/11 ‧ Università dell’Insubria computazioni per frammento (negli stages collo di bottiglia) Marco Tarini ‧ Computer Graphics ‧ computazioni per vertice (nello screen-buffer) 1996 Pipeline → Parallelismo → Efficienza Vertici pixel finali Fragment proces. Vertex porcessor (punti in R3) computazioni per frammento rasterizer frammenti setup dedicated HW (con GPU) (candidati pixels) Vertici proiettati (nello screen-buffer) (punti in R2) pixel finali 2010/11 ‧ Università dell’Insubria Cenni storici: nei PC... computazioni per vertice Z computazioni per frammento rasterizer frammenti setup (candidati pixels) Vertici proiettati (punti in R2) computazioni per vertice Vertici (punti in R3) Rasterization-Based HW-Supported Rendering Quindi la risposta è 20, e il sistema è transform-limited. Marco Tarini ‧ Computer Graphics ‧ Vertici 2010/11 ‧ Università dell’Insubria (punti in R3) Marco Tarini ‧ Computer Graphics ‧ pixel finali (nello screen-buffer) 1999 general purpose HW (con CPU) 2010/11 ‧ Università dell’Insubria Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria 6 y v1 z 2010/11 ‧ Università dell’Insubria x computazioni per frammento frammenti (candidati pixels) (nello screen-buffer) v2 Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria (nello screen-buffer) y Z setup rasterizer punti setup rasterizer triangoli setup rasterizer segmenti frammenti pixel finali computazioni per frammento Rasterization-Based HW-Supported Rendering: punti (candidati pixels) rasterizer segmenti v2 Vertice proiettato setup frammenti rasterizer triangoli computazioni per frammento Z setup (candidati pixels) 2 Vertici proiettati (punti in R2) 2 Vertici computazioni per vertice Rasterization-Based HW-Supported Rendering: segmenti (punti in R3) pixel finali v1 v0 (punto in R2) v2 Vertice x v1 v0 Marco Tarini ‧ Computer Graphics ‧ pixel finali (nello screen-buffer) y v1 v1 v0 z rasterizer triangoli Z computazioni per vertice v0 (punto in R3) v2 z setup y v1 v0 3 Vertici proiettati 3 Vertici (nello screen-buffer) (punti in R2) pixel finali computazioni per vertice Rasterization-Based HW-Supported Rendering: triangoli (punti in R3) Z computazioni per frammento rasterizer frammenti setup (candidati pixels) Vertici proiettati (punti in R2) computazioni per vertice Vertici (punti in R3) Rasterization-Based HW-Supported Rendering: triangoli v1 v0 x z v1 x esempio di point "splat" (point splatting) Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Rasterization-Based HW-Supported Rendering: alcune regole 1. Ogni vertice viene trasformato – in parallelo (in cascata) (in pipeline) (a catena di montaggio) – proiettato da spazio 3D (spazio “oggetto”) a spazio 2D (spazio “schermo”) indipendentemente dagli altri vertici • (deve poter avvenire in parallelo!) – indipendentemente da quale primitiva fa parte – primitiva = triangolo, segmento, o punto 2. Ogni primitiva viene rasterizzata in 2D • – – un rasterizzatore distinto per ogni tipo indipendentemente dalle altre primitive rasterizzare = produrre i frammenti corrispondenti Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Rasterization-based HW-supported rendering • tutto sia composto da triangoli (3D) – o al limite da punti, o segmenti • ma.... quasi nulla ...non tutto nasce composto di triangoli 3. Ogni frammento in pos [X,Y] viene processato – – – indipendentemente dagli altri frammenti indipendentemente da quale primitiva lo ha generato output della computazione: un pixel nello screen buffer (RGB) • quello a pos [X,Y] (prefissata, la computazione decide solo RGB, non X,Y) Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria Marco Tarini ‧ Computer Graphics ‧ 2010/11 ‧ Università dell’Insubria 7