La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Breve Storia 3d prima generazione (escludiamo Wolf3d, Doom e Duke3d, che erano una sorta di 2D)  per ogni triangolo che compone una mesh calcoliamo la.

Presentazioni simili


Presentazione sul tema: "Breve Storia 3d prima generazione (escludiamo Wolf3d, Doom e Duke3d, che erano una sorta di 2D)  per ogni triangolo che compone una mesh calcoliamo la."— Transcript della presentazione:

1 Breve Storia 3d prima generazione (escludiamo Wolf3d, Doom e Duke3d, che erano una sorta di 2D)  per ogni triangolo che compone una mesh calcoliamo la sua posizione sullo schermo, poi per ogni pixel che il triangolo copre sullo schermo calcoliamo il colore giusto a seconda della luce che colpisce il triangolo e del suo colore.  Successivamente, invece di avere il triangolo di un unico colore, e’ stato possibile spalmargli sopra un’immagine (texture)  Risultati molto netti (pixellosi) perche’ i filtri hanno costi immensi.

2 Quake aveva un rasterizer software ottimizzato in maniera molto profonda per processori 80486.

3 Schede video aggiuntive Inizialmente da usare in tandem con la normali VGA. 3dfx Voodoo e’ la piu’ famosa e usata.  Voodoo si occupa di coprire la parte piu’ costosa del processo di rendering: la parte in cui si leggono le texture e si applicano sui triangoli pixel per pixel. L’illuminazione e la trasformazione dei triangoli e’ ancora a carico della CPU. La scheda Voodoo2 aveva 8Mb di VRAM e operava a 90Mhz.

4

5 Breve storia La dimensione delle mesh aumenta: i triangoli sono diventati centinaia (erano decine) e si va verso le migliaia. La CPU non riesce piu’ a sostenere il carico dell’illuminazione e la trasformazione.  Geforce 256 (1999) si occupa di questo in hardware senza gravare sulla CPU.

6 Breve Storia Le offerte standard riguardo il tipo di materiali possibili con le schede grafiche iniziano ad andare strette. Si vorrebbe poter programmare il modo in cui la scheda grafica (GPU) si occupa di fare la trasformazione e l’illuminazione.  GeForce 3 (2001) offre la possibilita’ di programmare entrambi i passi tramite un linguaggio assembly (Shader model 1)

7

8 Breve storia Nel continuo volere di piu’, si vogliono poter fare shader piu’ lunghi (Shader model 1 ha limiti molto stringenti).  ATI Radeon 9700 e GeForce FX supportano lo Shader model 2, con shader consentiti nettamente piu’ lunghi e molte nuove istruzioni

9

10

11 Breve Storia Dopo lo shader model 3 (estensione del 2), esce il 4, che offre la possibilita’ di generare triangoli nello shader (cosa prima vietata).  Geforce serie 8 supporta lo shader model 4

12

13 Breve Storia La GPU e’ diventata una risorsa molto potente: puo’ calcolare in maniera estremamente efficiente calcoli vettoriali su enormi quantita’ di dati. Perche’ non usare questa potenza anche per conti che non siano necessariamente di rendering? GPGPU (General processing GPU) e’ disponibile nello shader model 5 (anche nel 4, ma limitato)  Geforce 400 e Radeon HD 5000 supportano lo shader model 5

14

15 Multithreading “Multithreading” e’ la capacita’ di eseguire delle operazioni in contemporanea. “Thread” e’ un flusso di esecuzione facente parte di un programma. Quindi, in un programma ci possono essere molti “thread” e ogni thread puo’ fare cose diverse. In genere si usano molti thread quando e’ possibile dividere un lavoro in pezzi che possono essere eseguiti separatamente, oppure se e’ possibile fare due cose diverse nello stesso momento.

16 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 Core1Core2 Single Core

17 Problemi del multithreading 1 2 Entrambi i thread vogliono scrivere un numero in un array. Chiedono all’array una posizione libera allo stesso momento. a a

18 Atomic int Un atomic int risolve il problema. Ogni operazione e’ garantita atomica. 1 2 a b

19 Compare and Swap function cas(p : pointer to int, old : int, new : int) returns bool { if *p ≠ old { return false } *p ← new return true } function add(p : pointer to int, a : int) returns int { done ← false while not done { value ← *p done ← cas(p, value, value + a) } return value + a }

20 Sezioni critiche Una sezione critica consente l’accesso a un solo thread alla volta. 1 2 3 4 CT1234

21 Confronto con GPU La GPU funziona in maniera diversa dalla CPU. CPU: pochi core che fanno tante cose diverse. In genere dai 2 agli 8 core (4 a 16 in hyperthreading) GPU: tanti core specializzati che fanno poche cose. In genere dagli 8 (iPad pro) ai 2048 (Geforce 980)

22 CPU VS GPU Funzionalita’CPUGPU Chiamate a funzioneSiNo (tutto inline) Cicli (for, while)SiLimitato Condizioni (If)SiLimitato Lunghezza programma limitataNoSi Accesso alla memoriaCompletoLimitato Lettura veloce textureNoSi

23 Organizzazione GPGPU

24 Esempio Tiled light collector. La base del sistema di illuminazione soprannominato “Forward +”.

25 Fine Domande?


Scaricare ppt "Breve Storia 3d prima generazione (escludiamo Wolf3d, Doom e Duke3d, che erano una sorta di 2D)  per ogni triangolo che compone una mesh calcoliamo la."

Presentazioni simili


Annunci Google