Computer Graphics
Marco Tarini
Lezione 2: hardware ergo triangoli
Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2012/13
1
Hardware specializzato per il rendering
• "GPU GPU GPU GPU":
– Graphics Processing Unit – La CPU della scheda video – Instruction Set specializzato!
• Architettura a pipeline pipeline pipeline pipeline – a "catena di montaggio"
• Modello di computazione SIMD SIMD SIMD SIMD
– sfrutta l'alto grado di parallelismo insito nel problema
• Possiede la propria propria propria propria memoria RAM a bordo – "RAM CPU" vs "RAM GPU"
– grandi copie di memoria da una all'altra dispendiose
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Visione di insieme:
2
Hardware specializzato per il rendering
• principali produttori:
– NVidia e AMD (ATI)
(e Intel - schede integrate) – e anche: Qualcomm, Matrox
– supercomp: SUN
• potenza di calcolo – migliaia di GFlops!
• bus molto performante – e.g. PCI-express: ~
16 GB/sM 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Visione di insieme:
3
Esempio schema base (PC con scheda video)
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 5
Hardware dedicato alla grafica : storia – ~25 anni:
• dalla metà degli '80 (e.g.: SGI Iris - 1986)
– dalla metà dei '90, la fiaccola passa dai mainframes ai PC
– progressi enormi
• nella efficienza
– più di "Moore’s Law": ~2.4x ~2.4x ~2.4x ~2.4x / year / year / year / yearinvece di ~1.6 / year ~1.6 / year ~1.6 / year ~1.6 / year
• nella funzionalità
– aumentano i task che è possibile demandare all'HW spec.
– 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 6
Hardware dedicato alla grafica : storia
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
(ed ecco il perchè del GP GPU General Purpose Computation on GPU )
7• aumento potenza: Giga FLOPs
CPU CPU CPU CPU
• Transistors:
<20% ALU
>80% control
più flessibilità
GPU GPU GPU GPU
• Transistors
~90% ALU
~10% control
più potenza!
CPU vs GPU
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a CONTROL ALU ALU
ALU ALU
CHACHE
1.4 G transistors 1 TeraFLOP
Hardware dedicato alla grafica : storia
• aumento potenza
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Virtua Virtua Fighter Fighter
(SEGA) (SEGA)
50K triangles/sec 50K triangles/sec
Dead or Alive 3 Dead or Alive 3
((TecmoTecmo Corp., Xbox)Corp., Xbox)100M triangles/sec 100M triangles/sec
Dawn Dawn
(NVIDIA) (NVIDIA)250M triangles/sec 250M triangles/sec
1995 1995
1995 1995 2001 2001 2001 2001 2008 2008 2008 2008
9
Hardware dedicato alla grafica : storia
• HW supported…
transform and lighting
• HW supported…
polygon fill
• HW supported…
attribute interpolation
• HW supported…
texture mapping
• HW supported…
per-pixel shading
• 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…
multiple texture accesses
• HW supported…
texture filtering (MIP-maps)
• HW supported…
on-the-fly retesselation
• HW supported…
dependent texturing
• …
• Programmable HW Programmable HW Programmable HW 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• aumento capabilities
10
Hardware specializzato per il rendering
• Vantaggio: efficienza efficienza efficienza efficienza
• instruction set specializzato
– (computazioni più comuni sono hard-wired)
• computazioni in parallelo:
1. fra CPU e GPU
» rendering demandato alla scheda grafica
» resto dell'applicazione libera di utilizzare la CPU e RAM base
2. a volte: fra GPU distinte (es. più schede sullo stesso BUS) 3. fra le fasi del pipeline (vanno tutte in parallelo) 4. dentro ogni fase del pipeline (più sottoprocess. per fase) 5. instruction level: operazioni operano su vettori di 4 operandi
• Svantaggio: rigidità rigidità rigidità rigidità
• scelta quasi obbligata dell'approccio al rendering utilizzato
• ... quali approcci al 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 11
Paradigmi di rendering
(classi di algoritmi di rendering)
• Ray-Tracing
• Rasterization based
• Image based (per es. light field)
• Radiosity
• Point-splatting
• Photon mapping
• ...
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 12
Paradigmi di rendering
(classi di algoritmi di rendering)
• Ray-Tracing
• Rasterization based
• Image based (per es. light filed)
• Radiosity
• Point-splatting
• Photon mapping
• ...
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Rendering Paradigm:
(Triangle (Triangle (Triangle
(Triangle----) Rasterization Based ) Rasterization Based ) Rasterization Based ) Rasterization Based
detto anche:
Transform and Lighting Transform and Lighting Transform and Lighting Transform and Lighting
( T ( T ( T ( T &&&& LLLL ))))
I. Che si usino solo
le seguenti primitive di rendering : triangoli
triangoli triangoli
triangoli,,,, segmenti segmenti,,,, segmenti segmenti punti punti punti punti
13
detto anche: Transform & Lighting
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
screen buffer Punti 3D
Segmenti 3D Triangoli 3D
scheda grafica
Transform
&
Lighting video
14
Transform & Lighting...
• Transform :
– trasformazioni di sistemi di coordinate
– scopo: portare la scena davanti all'obiettivo della nostra macchina fotografica (virtuale)
– 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
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 1 2 / 1 3 ‧ 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 (TTTT&&&&LLLL) paradigm
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scena 3D rendering screen buffer
composta da primitive di composta da primitive di composta da primitive di composta da primitive di pochissimi tipi:
pochissimi tipi: pochissimi tipi:
pochissimi tipi:
• punti punti punti punti
• linee linee linee linee
MA SOPRATUTTO MA SOPRATUTTOMA SOPRATUTTO MA SOPRATUTTO
• triangoli triangoli triangoli triangoli
primitive primitive primitive primitive di di di di rendering rendering rendering rendering
16
Rasterization-based HW-supported rendering
• punto primo: tutto sia composto da triangoli tutto sia composto da triangoli tutto sia composto da triangoli tutto sia composto da triangoli (3D) – o al limite da punti, o segmenti
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
x
y z
v
0=( x
0, y
0, z
0)
v
1=( x
1, y
1, z
1) v
2=( x
2, y
2, z
2)
17
... Rasterization-Based Rendering
• più specificatamente...
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
vertici 3D
fragment fragment fragment fragment process process process process pixels pixels pixels pixels
finali finali finali finali
"frammenti"
(fragments) transform
transform transform transform
z x
v0 v1
v2
rasterizer rasterizer rasterizer rasterizer
ytriangolo 2D a schermo
(2D screen triangle) v0 v1
v2
il lighting invece avviene insieme alla fase "transform"
e/o alla fase "fragment process"
18
... Rasterization-Based Rendering
• più specificatamente...
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
vertici 3D
fragment fragment fragment fragment process process process process pixels pixels pixels pixels
finali finali finali finali
"frammenti"
(fragments) transform
transform transform transform
z x
v0 v1
v2
rasterizer rasterizer rasterizer rasterizer
ytriangolo 2D a schermo
(2D screen triangle) v0 v1
v2
carico di lavoro per vertice (sottosistema geometrico)
carico di lavoro per frammento (~per pixel)
(sottosistema raster)
19
... Rasterization-Based Rendering
• Dove è il collo di bottiglia?
– nel sistema geometrico?
• (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)
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
perché è importante scoprirlo?
come si può predirre (in teoria)?
come si può verificare in pratica?
20
Note sulla GPU odierne
• Stima delle prestazioni:
i produttori scrivono tanti numeri, tra i quali:
– Trasformazioni per secondo (sottosistema geometrico) – Fill-rate
(MB al sec, o in frammenti al secondo) – Dimensioni Memoria Video
• I primi due sono da prendersi con le molle – Sono prestazioni picco,
(nella pratica valgono solo su apposito esempio)
– ma danno un'idea
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 21
Esercizio
• 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?
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 – Il sottosistema raster può produrre:
20.571.920 / 838.860,8 = 25 fotogrammi al secondo – Il sottositema geometrico può produrre
20 * 10^6 / 10^6 = 20 fotogrammi al secondo
Quindi la risposta è 20, e il sistema è transform-limited.
22Rasterization-Based HW-Supported 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (c an di da ti pi xe ls )
Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer
co m pu ta zi on i pe r f ra m m en to set- up
componenti fisiche dell'HW!
Pipeline → Parallelismo → Efficienza
inoltre, molte componenti sono replicate
(negli stages collo di bottiglia)Fragment proces.
Vertex porcessor
23
Rasterization-Based HW-Supported Rendering:
triangoli triangoli triangoli 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (c an di da ti pi xe ls )
Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer
co m pu ta zi on i pe r f ra m m en to
z y
x v0 v1
v2
set- up
v0 v1
v2
27
Rasterization-Based HW-Supported Rendering:
triangoli triangoli triangoli 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (c an di da ti pi xe ls )
3 Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
3 Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer triangoli
co m pu ta zi on i pe r f ra m m en to
z y
x v0 v1
v2
set- up
v0 v1
v2
28
Rasterization-Based HW-Supported Rendering:
segmenti segmenti segmenti segmenti
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (c an di da ti pi xe ls )
2 Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
2 Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer triangoli
co m pu ta zi on i pe r f ra m m en to
z y
x v0
v1
set- up
v0
v1
rasterizer segmenti set- up
29
Rasterization-Based HW-Supported Rendering:
punti punti punti 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (c an di da ti pi xe ls )
Ve rti ce (p un to in R
3) pixel
finali
(nello screen-buffer)
Ve rti ce pr oi et ta to (p un to in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer triangoli
co m pu ta zi on i pe r f ra m m en to
z y
x v1
set- up
v1
rasterizer segmenti set- up
rasterizer punti set- up
esempio di point "splat"
(point splatting)
30
Rasterization-Based HW-Supported Rendering:
alcune regole
1. Ogni vertice viene trasformato trasformato trasformato trasformato – 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 2. Ogni primitiva viene rasterizzata rasterizzata rasterizzata rasterizzata in 2D
– primitiva = triangolo, segmento, o punto
• rasterizzatore distinti per ogni tipo di primitiva – indipendentemente dalle altre primitive – rasterizzare = produrre i frammenti corrispondenti 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) 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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
in p ar al le lo (in c as ca ta ) (in p ip el in e) (a c at en a di m on ta gg io )
31
Rasterization-based HW-supported rendering
• tutto sia composto da triangoli (3D) – o al limite da punti, o segmenti
•ma....
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 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
...non tutto nasce composto di triangoli quasi nulla
32