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