Computer Graphics Lezione 3: HW based rendering Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Marco Tarini Riassunto puntate precedenti 1/3 • Computer Graphics ( CG )... • in particolare: – hardware-supported real-time rendering • detto anche "HW accelerated rendering" • hardware dedicato al rendeing GPU – Graphic Processing unit vs CPU – Central Processing Unit Marco Tarini ‧ Computer Graphics ‧ 2006/07 ‧ Università dell’Insubria - 2 Riassunto puntate precedenti 2/3 RENDERING PARADIGM: (Triangle-) Rasterization Based detto anche: • • • • • • Raytracing Rasterization basedTransform and Image based (per es. light filed) Radiosity Point-splatting I. Che si usino solo ... Lighting (T&L) le seguenti primitive di rendering : triangoli, segmenti, punti (o al limite quads, con diagonal split) Marco Tarini ‧ Computer Graphics ‧ 2006/07 ‧ Università dell’Insubria - 3 Riassunto puntate precedenti 3/3 Forme geo. di base Superfici parametriche n-agoni Dati Volumetrici Superfici implicite "al volo" Triangoli Quads Campi d'altezza r e n d e r i n g Nuvole di punti Marco Tarini ‧ Computer Graphics ‧ 2006/07 ‧ Università dell’Insubria - 4 Transform & Lighting Punti 3D Segmenti 3D Triangoli 3D Transform & Lighting screen buffer video scheda grafica Marco Tarini ‧ Computer Graphics ‧ 2006/07 ‧ Università dell’Insubria - 5 Transform & Lighting... • Transform : – trasformazioni di sistemi di coordinate – scopo: portare la scena davanti all'obiettivo della nostra macchina fotografica (virtaule) – piazzare i triangoli visibili sullo schermo • Lighting : – illuminazione • (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 ‧ 2006/07 ‧ Università dell’Insubria - 6 ... Rasterization-Based Rendering • più specificatamente... y v1 v0 x v2 vertici 3D z transform v1 v0 fragment pixels process finale rasterizer v2 triangolo 2D a schermo (2D screen triangle) "frammenti" (fragments) il lighting invece avviene insieme alla fase "transform" e/o alla fase "fragment process" Marco Tarini ‧ Computer Graphics ‧ 2006/07 ‧ Università dell’Insubria - 7 computazioni per frammento Z rasterizer (candidati pixels) setup frammenti (punti in R2) Vertici proiettati Vertici (punti in R3) computazioni per vertice Rasterization-Based HW-Supported Rendering: triangoli pixel finali (nello screen-buffer) y v1 v0 x v2 v1 v0 z v2 Marco Tarini ‧ Computer Graphics ‧ 2006/07 ‧ Università dell’Insubria - 8 computazioni per frammento Z rasterizer (candidati pixels) setup frammenti (punti in R2) Vertici proiettati computazioni per vertice Vertici (punti in R3) Rasterization-Based HW-Supported Rendering pixel finali (nello screen-buffer) Fragment "shader" Vertex "shader" componenti fisiche dell'HW! Pipeline Parallelismo Efficienza inoltre, molte componenti sono replicate (negli stages collo di bottiglia) Marco Tarini ‧ Computer Graphics ‧ 2006/07 ‧ Università dell’Insubria - 9 computazioni per frammento Z rasterizer (candidati pixels) setup dedicated HW (con GPU) frammenti (punti in R2) Vertici proiettati computazioni per vertice Vertici (punti in R3) Cenni storici: nei PC... pixel finali (nello screen-buffer) 1996 general purpose HW (con CPU) Marco Tarini ‧ Computer Graphics ‧ 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 computazioni per frammento Z rasterizer (candidati pixels) setup dedicated HW (con GPU) frammenti (punti in R2) Vertici proiettati computazioni per vertice Vertici (punti in R3) Cenni storici: nei PC... pixel finali (nello screen-buffer) 1997 general purpose HW (con CPU) Marco Tarini ‧ Computer Graphics ‧ 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 computazioni per frammento Z rasterizer (candidati pixels) setup dedicated HW (con GPU) frammenti (punti in R2) Vertici proiettati computazioni per vertice Vertici (punti in R3) Cenni storici: nei PC... pixel finali (nello screen-buffer) 1999 general purpose HW (con CPU) Marco Tarini ‧ Computer Graphics ‧ 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 computazioni per frammento Z rasterizer triangoli (candidati pixels) setup frammenti (punti in R2) 3 Vertici proiettati 3 Vertici (punti in R3) computazioni per vertice Rasterization-Based HW-Supported Rendering: triangoli pixel finali (nello screen-buffer) y v1 v0 x v2 v1 v0 z v2 Marco Tarini ‧ Computer Graphics ‧ 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 setup rasterizer segmenti computazioni per frammento rasterizer triangoli (candidati pixels) Z setup frammenti (punti in R2) 2 Vertici proiettati 2 Vertici (punti in R3) computazioni per vertice Rasterization-Based HW-Supported Rendering: segmenti pixel finali (nello screen-buffer) y v1 v1 v0 x v0 z Marco Tarini ‧ Computer Graphics ‧ 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 setup rasterizer triangoli setup rasterizer segmenti computazioni per frammento rasterizer punti (candidati pixels) Z setup frammenti (punto in R2) Vertice proiettato computazioni per vertice Vertice (punto in R3) Rasterization-Based HW-Supported Rendering: punti pixel finali (nello screen-buffer) y v1 x v1 z esempio di point "splat" (point splatting) Marco Tarini ‧ Computer Graphics ‧ 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 setup rasterizer triangoli setup rasterizer segmenti computazioni per frammento rasterizer punti (candidati pixels) Z setup frammenti (punti in R2) Vertici proiettati Vertici (punti in R3) computazioni computazioni vertice per vertice per Rasterization-Based HW-Supported Rendering: pixel finali (nello screen-buffer) y v1 v0 x v2 v1 v0 z v2 Marco Tarini ‧ Computer Graphics ‧ 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 Transform • Per ogni vertice: y v1 v0 x v2 ? z world Coordinates Marco Tarini ‧ Computer Graphics ‧ v1 v0 v2 screen Coordinates 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 Transform • Intanto, dipende dalla pos della camera (macchina fotografica) – detta anche: pos del viewer – o eye position – o POV (Point of View) (a) (b) Marco Tarini ‧ Computer Graphics ‧ (a) (b) 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 Transform • Strategia: 1) "transformazione di vista": portare la scena davanti alla camera • e non viceversa ;-) Bene... ora la geometria e' espressa in un sistema di coordianate in cui: • lo zero è il centro di proiezione (l'obiettivo della camera) • la camera guarda verso -z • y è verso l'alto, e x e verso destra (rispetto al fotografo) y v1 v0 x y v2 z 1 v1 -z x v2 v0 view Coordinates M a r c o T a r i n i ‧ C o m p u t e (a.k.a. r G r aeye p h i Coordinates) 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 world Coordinates Transform • Strategia: 1) "transformazione di vista": portare la scena davanti alla camera 2) "transformazione di proiezione": proietta la geometria sul piano di proiezione - necessario sapere i parametri interni della "camera virtuale" - in particolare, la lunghezza focale - questo causa anche la distorsione prospettica y v1 v0 x y v2 z 1 v1 -z x v0 1 v2 2 v0 1 v2 -1 v1 y v1 x -z v2 v0 -1 view Coordinates normalized projected M a r c o T a r i n i ‧ C o m p u t e (a.k.a. r G r aeye p h i Coordinates) c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ coordinates I n s u b r i a - 20 world Coordinates Transform • Strategia: 1) "transformazione di vista": portare la scena davanti alla camera 2) "transformazione di proiezione": proietta la geometria sul piano di proiezione 3) " transformazione viewport": da [-1,+1]2 a [0..resx]x[0..resy] (pixels) v1 v0 v2 screen Space 3 y v1 v0 x y v2 z 1 v1 -z x v0 1 v2 2 v0 1 v2 -1 v1 y v1 x -z v2 v0 -1 view Coordinates normalized projected M a r c o T a r i n i ‧ C o m p u t e (a.k.a. r G r aeye p h i Coordinates) c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ coordinates I n s u b r i a - 21 world Coordinates Object Coordinates • Dare ad ogni oggetto il suo sistema di coordiante privato: il suo Object Coordinates; z y y y x x y z y x z x x Marco Tarini ‧ Computer Graphics ‧ z z 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 Object Coordinates • Dare ad ogni oggetto il suo sistema di coordiante privato: il suo Object Coordinates; • Durante il transform, prima di tutto portare ogni oggetto nello sist di coordinate comuni: da Object Coordinates a World Coordiantes Marco Tarini ‧ Computer Graphics ‧ 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 Transform y v0 v1 x v2 z object Coordinates 0) transformazione di modellazione 1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport v1 v0 v2 screen Space 0 3 y v1 v0 x y v2 z 1 v1 -z x v0 1 v2 2 v0 1 v2 -1 v1 y v1 x -z v2 v0 -1 view Coordinates normalized projected M a r c o T a r i n i ‧ C o m p u t e (a.k.a. r G r aeye p h i Coordinates) c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ coordinates I n s u b r i a - 24 world Coordinates 1) Transformazione di vista • :"transformazione di vista": portare la scena davanti alla camera ye xe y x -ze sistema di riferimento della camera (eye coords) 0 sistema di riferimento del mondo (world coords) Oe z è un cambio di sistema di riferimento Marco Tarini ‧ Computer Graphics ‧ 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 1) Transformazione di vista • La posso fare con una serie di – traslazioni – rotazioni • ripassino di geometria... Marco Tarini ‧ Computer Graphics ‧ 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