• Non ci sono risultati.

Computer Graphics

N/A
N/A
Protected

Academic year: 2021

Condividi "Computer Graphics"

Copied!
5
0
0

Testo completo

(1)

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/s

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:

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

(2)

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

(3)

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

y

triangolo 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

y

triangolo 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

(4)

... 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.

22

Rasterization-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

)

Z

co 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

)

Z

co 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

)

Z

co 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

(5)

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

)

Z

co 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

)

Z

co 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

Riferimenti

Documenti correlati

La somma delle ampiezze degli angoli interni di un triangolo è uguale all’ampiezza dell’angolo piatto, quindi

[r]

Flat shading Goraund shading Phong Shading (*) talvolta (ma impropriamente) detto: per-pixel lighting. quando si usano normali

[r]

di vista riflessa dalla norm.). Environment

[r]

quali coordinate assegnare al nuovo vertice?. Ogni schema di suddivisone ha la

di suddivisione) – displacement mapping!. – marching cubes on