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 2010/11
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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
Visione di insieme:
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Hardware specializzato per il rendering
• principali produttori:
– NVidia e ATI
(e Intel, AMD - schede integrate)
– supercomp: SUN
• potenza di calcolo – migliaia di GFlops!
• bus molto performante – e.g. PCI-express: ~
16 GB/sVisione di insieme:
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 / year invece 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Hardware dedicato alla grafica : storia
• aumento potenza: primitive al sec
Peak Perf.
(∆'s/sec)
Year HP CRX
SGI Iris SGI GT
HP VRX Stellar GS1000 SGI VGX
HP TVRX SGI SkyWriter
SGI
E&S F300
One-pixel polygons (~10M polygons @ 30Hz)
SGI RE2 RE1
Megatek
86 88 90 92 94 96 98 00
104 105 106 107 108 109
UNC Pxpl4
UNC Pxpl5
UNC/HP PixelFlow
Flat shading
Gouraud shading
Antialiasing SGI
IR E&S Harmony
SGI R-Monster
Division VPX E&S Freedom Accel/VSIS
Voodoo Glint Division
Pxpl6
PC Graphics Textures
SGI Cobalt Nvidia TNT
GeForce 3
& Radeon
3DLabs
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Hardware dedicato alla grafica : storia
• aumento potenza: GFLOPS
(ecco il perchè del General Purpose Computation on GPU)
CPU vs GPU
CPU CPU CPU CPU
• Transistors:
<20% ALU
>80% control
più flessibilità
GPU GPU GPU GPU
• Transistors
~90% ALU
~10% control
più 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 0 / 1 1 ‧ 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
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Hardware dedicato alla grafica : storia
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)250 triangles/sec 250 triangles/sec
1995 1995 1995
1995 2001 2001 2001 2001 2008 2008 2008 2008
• 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Hardware dedicato alla grafica : storia
• HW supported…
transform and lighting
• HW supported…
polygon 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
• …
• Programmable HW Programmable HW Programmable HW Programmable HW
• aumento capabilities
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Hardware dedicato alla grafica : storia
• Progresso congiunto HW e Algoritmi – Un po' come ruota e strada
tecnologia ruota
tecnologia strada
te cn ic he a lg or itm ic he sv ilu pp i h ar dw ar e
continua contaminazione fra livelli livelli livelli livelli diversi!
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli? Che livelli?
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor Algoritmi
SDK
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Bomb jack - Tehkan 1984
Il tubo catodico (CRT):
un fascio di elettroni diretto su una superficie coperta di fosfori
Display vettoriali:
il fascio veniva pilotato direttamente in maniera libera
Display raster CRT : linea per linea, si spazza tutto lo schermo N volte al secondo (N = refresh rate) Algoritmi
SDK
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Display raster LCD (Liquid Crystal Display) liquido + polarizzazione luce
Plasma display per pixel:
xeno ionizzato via elettrodi reagisce
Proiettori LCD o DLP.
Specchietti controllati x riflettere luce Algoritmi
SDK
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli
Scheda Grafica Driver Scheda grafica
API Applicazioni
Hardware specializzato per CG
Monitor Algoritmi
SDK
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli: Driver
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Driver:
- insieme di routine
- controlla a le periferiche hardware - basso livello!
Seviluppato
dagli stessi produttori HW Algoritmi
SDK
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli: API
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Application Program Interface
Insieme di routines - (sotto forma di libreria) - medio livello - x lo sviluppatore
le 2 API principali:
• OpenGL
• Direct3D
esempio: con l’API di OpenGL :
glBegin(GL_LINES);
glVertex2f(0.0,0.0);
glVertex2f(1.0,1.0);
glEnd();
Algoritmi SDK
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli: Algoritmi
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor Algoritmi
SDK
Il regno dello 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
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API
Livelli: Algoritmi
Applicazioni
Monitor Algoritmi
SDK
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)
...
... ...
...
API
Scheda Grafica
Driver Scheda grafica
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli: SDK
Scheda Grafica Driver Scheda grafica
API Algoritmi
SDK Applicazioni
Monitor
Software Development Kit
tutto quel che serve per sviluppare un’applicazione
ambiente di sviluppo (es: .net, devcpp)
librerie
strumenti per la
condivisione/sincronizzazione del codice
manualistica, guide online
esempi, benchmarks
...
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli: applicazioni
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Tutte quelle viste nella presentazione sono applicazioni
Algoritmi SDK
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• Ray-Tracing
• Rasterization based
• Image based (per es. light field)
• Radiosity
• Point-splatting
• Photon mapping
• ...
Paradigmi di rendering
(classi di algoritmi di 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• Ray-Tracing
• Rasterization based
• Image based (per es. light filed)
• Radiosity
• Point-splatting
• Photon mapping
• ...
Paradigmi di rendering
(classi di algoritmi di rendering)
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
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 0 / 1 1 ‧ 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
detto anche: Transform & Lighting
Segmenti 3D Triangoli 3D
scheda grafica
Transform
&
Lighting 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Rasterization-based HW-supported rendering
• anche riferito come
Transform and Lighting (TTTT&&&&LLLL) paradigm 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 SOPRATUTTO MA SOPRATUTTO MA SOPRATUTTO
• triangoli triangoli triangoli triangoli
primitive primitive primitive primitive di di di di rendering rendering rendering 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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
x
y z
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
v
0=( x
0, y
0, z
0)
v
1=( x
1, y
1, z
1) v
2=( x
2, y
2, z
2)
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
... Rasterization-Based Rendering
• più specificatamente...
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"
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
... Rasterization-Based Rendering
• più specificatamente...
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)
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
... 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 ) perché è importante scoprirlo?
come si può predirre (in teoria)?
come si può verificare
in pratica?
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 ? 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.
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 0 / 1 1 ‧ 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 )
Rasterization-Based HW-Supported Rendering
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
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 0 / 1 1 ‧ 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 )
Cenni storici: nei PC...
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)
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 0 / 1 1 ‧ 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 )
Cenni storici: nei PC...
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)
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 0 / 1 1 ‧ 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 )
Cenni storici: nei PC...
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)
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 0 / 1 1 ‧ 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 )
Rasterization-Based HW-Supported Rendering:
triangoli triangoli triangoli triangoli
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
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 0 / 1 1 ‧ 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 )
Rasterization-Based HW-Supported Rendering:
triangoli triangoli triangoli triangoli
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
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 0 / 1 1 ‧ 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 )
Rasterization-Based HW-Supported Rendering:
segmenti segmenti segmenti segmenti
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
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 0 / 1 1 ‧ 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 )
Rasterization-Based HW-Supported Rendering:
punti punti punti punti
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)
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 0 / 1 1 ‧ 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 )
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 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a