1
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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 22
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 1 / 1 2 ‧ 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
23
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 1 / 1 2 ‧ 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
24
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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 25
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 1 / 1 2 ‧ 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
26
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 1 / 1 2 ‧ 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)
27
2
... 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 1 / 1 2 ‧ 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"
28
... 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 1 / 1 2 ‧ 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)
29
... 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 1 / 1 2 ‧ 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?
30
Note sulla GPU odierne
• 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
• 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 31
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 1 / 1 2 ‧ 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.
32Rasterization-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 1 / 1 2 ‧ 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
33
3
Cenni storici: nei PC...
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 1 / 1 2 ‧ 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
1996
general purpose HW (con CPU)
dedicated HW (con GPU)
34
Cenni storici: nei PC...
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 1 / 1 2 ‧ 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
1997
general purpose HW (con CPU)
dedicated HW (con GPU)
35
Cenni storici: nei PC...
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 1 / 1 2 ‧ 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
1999
general purpose HW (con CPU)
dedicated HW (con GPU)
36
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 1 / 1 2 ‧ 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
37
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 1 / 1 2 ‧ 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
38
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 1 / 1 2 ‧ 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
39
4
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 1 / 1 2 ‧ 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)
40
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
• un rasterizzatore distinto per ogni tipo – 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 1 / 1 2 ‧ 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 )
41
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 1 / 1 2 ‧ 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
42