Le moderne GPU
                  Cosa  possibile fare oggi e cenni su come farlo
                       e

               ...
Sommario


Sommario
1    Introduzione
        Primo approccio
        Panoramica storica
2    La GPU in azione
        Pot...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)     Le moderne GPU   C42009...
Sommario


Sommario
1    Introduzione
        Primo approccio
        Panoramica storica
2    La GPU in azione
        Pot...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)     Le moderne GPU   C42009...
Sommario


Sommario
1    Introduzione
        Primo approccio
        Panoramica storica
2    La GPU in azione
        Pot...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)     Le moderne GPU   C42009...
Sommario


Sommario
1    Introduzione
        Primo approccio
        Panoramica storica
2    La GPU in azione
        Pot...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)     Le moderne GPU   C42009...
Introduzione   Primo approccio

1    Introduzione
        Primo approccio
        Panoramica storica
2    La GPU in azione...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)        Le moderne GPU      ...
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo aprroccio
La GPU oggi



Caratteristiche salienti delle Graphics Processing Unit at...
cata)
      Centinaia di gigaFLOPS in single-precision
      Decine di gigaFLOPS in double-precision
      Decine di GB/s ...
che



  A. Theodorou (Federico II)        Le moderne GPU               C42009   4 / 152
Introduzione   Primo approccio


Primo approccio
La pipeline
ssa




   A. Theodorou (Federico II)        Le moderne GPU              C42009   5 / 152
Introduzione   Primo approccio


Primo approccio
La pipeline programmabile (SM 4.0)




  A. Theodorou (Federico II)      ...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo shader



      Il sorgente  speci
cato dal programmatore
                  e
      Viene eseguito in parallelo su pi unit autonome
                         ...
care un solo elemento alla volta (gathering/scattering)
          o
      Pu intervenire in tre fasi distinte:
          o...
ssa
                                 a




  A. Theodorou (Federico II)         Le moderne GPU              C42009   7 / 1...
Introduzione   Primo approccio


Primo approccio
Lo stream processor




      Esegue uno qualsiasi dei tre tipi di shader...
cata)
      Viene istruito da un dispatcher che gestisce il work-load
      Opera seguendo un design superscalare
      La...
Introduzione   Primo approccio


Primo approccio
Lo stream processor




      Esegue uno qualsiasi dei tre tipi di shader...
cata)
      Viene istruito da un dispatcher che gestisce il work-load
      Opera seguendo un design superscalare
      La...
Introduzione   Primo approccio


Primo approccio
Lo stream processor




      Esegue uno qualsiasi dei tre tipi di shader...
cata)
      Viene istruito da un dispatcher che gestisce il work-load
      Opera seguendo un design superscalare
      La...
Introduzione   Primo approccio


Primo approccio
Lo stream processor




      Esegue uno qualsiasi dei tre tipi di shader...
cata)
      Viene istruito da un dispatcher che gestisce il work-load
      Opera seguendo un design superscalare
      La...
Introduzione   Primo approccio


Primo approccio
Lo stream processor




      Esegue uno qualsiasi dei tre tipi di shader...
cata)
      Viene istruito da un dispatcher che gestisce il work-load
      Opera seguendo un design superscalare
      La...
Introduzione   Primo approccio


Primo approccio
Architettura a shader uni
cati




                                  Figura: Architettura discreta




                                  Figura: Arc...
cata
   A. Theodorou (Federico II)             Le moderne GPU              C42009   9 / 152
Introduzione   Primo approccio


Primo approccio
Architettura GT200




  A. Theodorou (Federico II)        Le moderne GPU...
Introduzione   Primo approccio


Primo approccio
Architettura RV770




  A. Theodorou (Federico II)        Le moderne GPU...
Introduzione   Panoramica storica

1    Introduzione
        Primo approccio
        Panoramica storica
2    La GPU in azi...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)        Le moderne GPU      ...
Introduzione   Panoramica storica


Panoramica storica
Quadro generale


      1 Generazione (1995): accelerazione 3D di b...
cazione delle unit di calcolo (SM 4.0)
                            a
      7 Generazione (2008): Un'evoluzione prestaziona...
Introduzione   Panoramica storica


Panoramica storica
La prima generazione
01/12/1996: Diamond Monster 3D (SST1, 1M trans...
Introduzione   Panoramica storica


Panoramica storica
La seconda generazione
01/10/1999: Nvidia GeForce 256 (NV10, 23M tr...
Introduzione   Panoramica storica


Panoramica storica
La terza generazione
01/05/2001: Nvidia GeForce 3 (NV20, 57M transi...
Introduzione   Panoramica storica


Panoramica storica
La quarta generazione
19/08/2002: ATI Radeon 9700 PRO (R300, 110M t...
Introduzione   Panoramica storica


Panoramica storica
La quinta generazione
14/04/2004: Nvidia GeForce 6800 (NV40, 222M t...
Introduzione   Panoramica storica


Panoramica storica
La sesta generazione
08/11/2006: Nvidia GeForce 8800 GTX (G80, 681M...
cata
    Design superscalare




                                 (q) G80    (r)                (s) G92
                  ...
Introduzione   Panoramica storica


Panoramica storica
La settima generazione
19/11/2007: ATI Radeon HD 3870 (RV670XT, 666...
La GPU in azione   Potenza elaborativa

1    Introduzione
        Primo approccio
        Panoramica storica
2    La GPU i...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)            Le moderne GPU  ...
La GPU in azione   Potenza elaborativa


Potenza elaborativa
Riferimenti numerici

  Processore                      Core ...
eld (QX9970)               4 core                 220+600             3200
  Xenon (XBox 360)                3 core       ...
eld (QX9970)               51.1                   25.5                12.8
  Xenon (XBox 360)                115.2        ...
La GPU in azione   Potenza elaborativa


Potenza elaborativa
GPU vs CPU




                a 
Il Commissariat  l'Energie ...
La GPU in azione   Potenza elaborativa


Potenza elaborativa
Larghezza di banda




  A. Theodorou (Federico II)          ...
La GPU in azione   Potenza elaborativa


Potenza elaborativa
Legge di Moore




  A. Theodorou (Federico II)            Le...
La GPU in azione   Applicazioni general purpose

1    Introduzione
        Primo approccio
        Panoramica storica
2   ...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)            Le moderne GPU  ...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Il GPGPU

      GPGPU: General-Purpose computation on...
che a standard aperto: OpenCL (Open Computing Language)
      Librerie dei produttori di HW: CUDA e Brook++/CAL
      Midd...
sico: Nvidia PhysX (ex Ageia)
      Stage nella pipeline Direct3D 11: Compute shader
      Vecchie librerie open-source: B...
La GPU in azione   Applicazioni general purpose


Applicazioni general purpose
Nvidia Tesla: soluzione ad hoc




    Comp...
catamente per applicazioni GPGPU tramite CUDA
La controparte AMD  chiamata FireStream
                     e
   A. Theodor...
La GPU in azione   Applicazioni general purpose


Applicazioni general purpose
Fast Fourier Transforms




      CPU: Inte...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Nvidia Gelato




              Renderer ad acceleraz...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
OpenVIDIA




            Computer vision con support...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Fluidodinamica




  Calcolo del sistema di equazioni...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Generazione ed erosione di terreni




              ...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Ricostruzione tomogra
ca




      FASTRA: PC consumer, monta 4 schede video 9800x2 (8 GPU), (Maggio
      2008, meno di 4000 Euro)
      CalcUA...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Folding@Home




      CPU: 4 mol/day
      PS3: 100 ...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Password recovery




ElcomSoft Distributed Password ...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Nurien tech demo




                 Fisica dei cape...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Froblins Demo




                  L'IA degli oltre ...
La GPU in azione   Applicazioni general purpose


Applicazioni GPGPU
Ulteriori applicazioni




             60 su 262 app...
La GPU in azione   Applicazioni tradizionali

1    Introduzione
        Primo approccio
        Panoramica storica
2    La...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)            Le moderne GPU  ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
La Game Industry


      Uno dei motori trainanti...
ca
      Porta ad una ricaduta tecnologica anche in altri settori (educativo,
      medico, industriale, militare)


  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
La Game Industry


      Uno dei motori trainanti...
ca
      Porta ad una ricaduta tecnologica anche in altri settori (educativo,
      medico, industriale, militare)


  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
La Game Industry


      Uno dei motori trainanti...
ca
      Porta ad una ricaduta tecnologica anche in altri settori (educativo,
      medico, industriale, militare)


  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
La Game Industry


      Uno dei motori trainanti...
ca
      Porta ad una ricaduta tecnologica anche in altri settori (educativo,
      medico, industriale, militare)


  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
La Game Industry


      Uno dei motori trainanti...
ca
      Porta ad una ricaduta tecnologica anche in altri settori (educativo,
      medico, industriale, militare)


  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
La Game Industry


      Uno dei motori trainanti...
ca
      Porta ad una ricaduta tecnologica anche in altri settori (educativo,
      medico, industriale, militare)


  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Human Head (14/7/2007)




              Demo rea...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
CryEngine 2 vs Unreal Engine 3 (1/2)




  A. The...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
CryEngine 2 vs Unreal Engine 3 (2/2)




  A. The...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Crysis vs Real-life




   A. Theodorou (Federico...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Final Night Round 3 (20/2/2006)




  A. Theodoro...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Gears of War (Unreal Engine 3, 9/11/2006)




  A...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Crysis (CryEngine 2, 13/11/2007)




  A. Theodor...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Assassin's Creed (Scimitar Engine, 14/11/2007)


...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Mass Eect (Unreal Engine 3, 20/11/2007)




  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
3dMark Vantage, 28/4/2008




  A. Theodorou (Fed...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Dead Space (Unreal Engine 3, 14/10/2008)




  A....
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Far Cry 2 (Dunia Engine, 21/10/2008)




  A. The...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Fallout 3 (Gamebryo Engine, 28/10/2008)




  A. ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Mirror's Edge (Unreal Engine 3, 12/11/2008)




 ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Prince of Persia (Anvil Engine, 2/12/2008)




  ...
La GPU in azione   Applicazioni tradizionali


Applicazioni tradizionali
Killzone 2, 25/2/2009




  A. Theodorou (Federic...
Cenni sulla programmazione   Supporto OpenGL

1    Introduzione
        Primo approccio
        Panoramica storica
2    La...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)                      Le mod...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Sommario


      Creazione shader object
      Creazione pr...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Creazione shader object



      GLuint glCreateShader(GLen...
cato.
      void glCompileShader(GLuint shader )
      Compila il sorgente dello shader speci
cato.
Nota: A partire dalle OpenGL 3.0, glCreateShader() accetta anche il tipo
GL GEOMETRY SHADER ARB.



  A. Theodorou (...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Creazione program object




      GLuint glCreateProgram(v...
cato.
      void glLinkProgram(GLuint program );
      Eettua la fase di linking per il programma.




  A. Theodorou (Fed...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Utilizzo del program object




       void glUseProgram(GL...
ca il programma da usare.
       Da quel momento in poi, per qualsiasi operazione, non verr pi
                           ...
ssa.
       Passando 0 come parametro si ritorna alla pipeline tradizionale.




   A. Theodorou (Federico II)            ...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Codice di esempio 1
§
GLuint v , f , p ;
char £ vs , £ f s ...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Liberazione delle risorse allocate




       void glDelete...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Variabili uniformi
OpenGL permette il passaggio di dati agl...
cata a quello
       passato dalla funzione.
       void glUniformf1|2|3|4gff|igv(GLint location, GLuint
       count, con...
care un array di valori.
       void glUniformMatrixf2|3|4gfv(GLint location, GLuint
       count, GLboolean transpose, co...
cata,
       ordinata per colonne o per righe a seconda del parametro booleano.
   A. Theodorou (Federico II)             ...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Cenni sul resto
       glGetUniform() e glGetActiveUniform(...
cato.
       Funzioni di query
       Permettono di ricavare lo stato degli oggetti creati, stampare log
       diagnostic...
care attributi da passare agli shader, all'interno
       di una coppia glBegin()/glEnd(), diversi per ogni vertice.
     ...
cato, dato lo stato OpenGL corrente, pu funzionare.
                                                         o
   A. Theod...
Cenni sulla programmazione   Supporto OpenGL


Supporto OpenGL
Codice di esempio 2


§
GLuint p ;
GLint l o c 1 , l o c 2 ...
Cenni sulla programmazione   GL Shading Language

1    Introduzione
        Primo approccio
        Panoramica storica
2  ...
eld
        Deferred shading
        High Dynamic Range Imaging
    A. Theodorou (Federico II)                      Le mod...
Upcoming SlideShare
Loading in...5
×

Le moderne GPU - C42009

1,195

Published on

Le Moderne GPU: Cosa è possibile fare oggi e cenni su come farlo
Presentata nell'aula C4 occupata nel complesso di Monte S.Angelo dell'Università di Napoli "Federico II" il giorno 22 e 29 Aprile 2009.

Published in: Technology, Art & Photos
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,195
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Le moderne GPU - C42009

  1. 1. Le moderne GPU Cosa possibile fare oggi e cenni su come farlo e Angelo Encelo Theodorou Universit degli Studi di Napoli Federico II a Revisione di [CG2008] per il seminario in aula C4 A. Theodorou (Federico II) Le moderne GPU C42009 1 / 152
  2. 2. Sommario Sommario 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  3. 3. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 2 / 152
  4. 4. Sommario Sommario 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  5. 5. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 2 / 152
  6. 6. Sommario Sommario 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  7. 7. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 2 / 152
  8. 8. Sommario Sommario 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  9. 9. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 2 / 152
  10. 10. Introduzione Primo approccio 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  11. 11. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 3 / 152
  12. 12. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  13. 13. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  14. 14. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  15. 15. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  16. 16. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  17. 17. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  18. 18. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  19. 19. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  20. 20. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  21. 21. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  22. 22. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  23. 23. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  24. 24. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  25. 25. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  26. 26. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  27. 27. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  28. 28. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  29. 29. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  30. 30. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  31. 31. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  32. 32. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  33. 33. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  34. 34. cata) Centinaia di gigaFLOPS in single-precision Decine di gigaFLOPS in double-precision Decine di GB/s di banda da e verso la VRAM Rapporto di crescita superiore a quello delle CPU Utilizzabili per compiti general purpose Programmabili mediante librerie non gra
  35. 35. che A. Theodorou (Federico II) Le moderne GPU C42009 4 / 152
  36. 36. Introduzione Primo approccio Primo approccio La pipeline
  37. 37. ssa A. Theodorou (Federico II) Le moderne GPU C42009 5 / 152
  38. 38. Introduzione Primo approccio Primo approccio La pipeline programmabile (SM 4.0) A. Theodorou (Federico II) Le moderne GPU C42009 6 / 152
  39. 39. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  40. 40. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  41. 41. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  42. 42. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  43. 43. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  44. 44. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  45. 45. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  46. 46. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  47. 47. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  48. 48. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  49. 49. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  50. 50. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  51. 51. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  52. 52. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  53. 53. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  54. 54. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  55. 55. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  56. 56. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  57. 57. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  58. 58. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  59. 59. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  60. 60. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  61. 61. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  62. 62. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  63. 63. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  64. 64. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  65. 65. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  66. 66. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  67. 67. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  68. 68. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  69. 69. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in tre fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Colorazione dei frammenti Di default emula le attivit della pipeline
  70. 70. ssa a A. Theodorou (Federico II) Le moderne GPU C42009 7 / 152
  71. 71. Introduzione Primo approccio Primo approccio Lo stream processor Esegue uno qualsiasi dei tre tipi di shader (architettura uni
  72. 72. cata) Viene istruito da un dispatcher che gestisce il work-load Opera seguendo un design superscalare Lavora in singola e doppia precisione (IEEE-754 compliant) Segue il paradigma dello stream processing (SPMD, kernel, stream) A. Theodorou (Federico II) Le moderne GPU C42009 8 / 152
  73. 73. Introduzione Primo approccio Primo approccio Lo stream processor Esegue uno qualsiasi dei tre tipi di shader (architettura uni
  74. 74. cata) Viene istruito da un dispatcher che gestisce il work-load Opera seguendo un design superscalare Lavora in singola e doppia precisione (IEEE-754 compliant) Segue il paradigma dello stream processing (SPMD, kernel, stream) A. Theodorou (Federico II) Le moderne GPU C42009 8 / 152
  75. 75. Introduzione Primo approccio Primo approccio Lo stream processor Esegue uno qualsiasi dei tre tipi di shader (architettura uni
  76. 76. cata) Viene istruito da un dispatcher che gestisce il work-load Opera seguendo un design superscalare Lavora in singola e doppia precisione (IEEE-754 compliant) Segue il paradigma dello stream processing (SPMD, kernel, stream) A. Theodorou (Federico II) Le moderne GPU C42009 8 / 152
  77. 77. Introduzione Primo approccio Primo approccio Lo stream processor Esegue uno qualsiasi dei tre tipi di shader (architettura uni
  78. 78. cata) Viene istruito da un dispatcher che gestisce il work-load Opera seguendo un design superscalare Lavora in singola e doppia precisione (IEEE-754 compliant) Segue il paradigma dello stream processing (SPMD, kernel, stream) A. Theodorou (Federico II) Le moderne GPU C42009 8 / 152
  79. 79. Introduzione Primo approccio Primo approccio Lo stream processor Esegue uno qualsiasi dei tre tipi di shader (architettura uni
  80. 80. cata) Viene istruito da un dispatcher che gestisce il work-load Opera seguendo un design superscalare Lavora in singola e doppia precisione (IEEE-754 compliant) Segue il paradigma dello stream processing (SPMD, kernel, stream) A. Theodorou (Federico II) Le moderne GPU C42009 8 / 152
  81. 81. Introduzione Primo approccio Primo approccio Architettura a shader uni
  82. 82. cati Figura: Architettura discreta Figura: Architettura uni
  83. 83. cata A. Theodorou (Federico II) Le moderne GPU C42009 9 / 152
  84. 84. Introduzione Primo approccio Primo approccio Architettura GT200 A. Theodorou (Federico II) Le moderne GPU C42009 10 / 152
  85. 85. Introduzione Primo approccio Primo approccio Architettura RV770 A. Theodorou (Federico II) Le moderne GPU C42009 11 / 152
  86. 86. Introduzione Panoramica storica 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  87. 87. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 12 / 152
  88. 88. Introduzione Panoramica storica Panoramica storica Quadro generale 1 Generazione (1995): accelerazione 3D di base 2 Generazione (1999): Transform Lighting in hardware 3 Generazione (2001): Programmabilit a livello dei vertici e, a limitatamente, a quello dei frammenti (SM 1.0) 4 Generazione (2002): Piena programmabilit a livello dei frammenti a (SM 2.0) 5 Generazione (2004): Meno limitazioni, molta pi libert di u a programmazione della pipeline (SM 3.0) 6 Generazione (2006): Programmabilit a livello delle primitive, a uni
  89. 89. cazione delle unit di calcolo (SM 4.0) a 7 Generazione (2008): Un'evoluzione prestazionale (SM 4.1) A. Theodorou (Federico II) Le moderne GPU C42009 13 / 152
  90. 90. Introduzione Panoramica storica Panoramica storica La prima generazione 01/12/1996: Diamond Monster 3D (SST1, 1M transistor) 01/08/1997: Nvidia Riva 128 (NV3, 3.5M transistor) 01/08/1998: Nvidia Riva TNT (NV4, 7M transistor) 01/11/1998: Ati Rage 128 (Rage 128, 8M transistor) 3 OpenGL 1.1 e Direct3D 5.0 Hidden Surface Removal tramite Z-buering Mipmapping Flat e Gouraud shading Filtro bi/trilineare per le texture Alpha blending Stencil buer (a) SST1 (b) NV3 (c) NV4 (d) Rage A. Theodorou (Federico II) Le moderne GPU 128 C42009 14 / 152
  91. 91. Introduzione Panoramica storica Panoramica storica La seconda generazione 01/10/1999: Nvidia GeForce 256 (NV10, 23M transistor) 15/06/2000: ATI Radeon (R100, 30M transistor) 26/04/2000: Nvidia GeForce2 GTS (NV15, 25M transistor) 3 OpenGL 1.3 e Direct3D 7.0 Trasformazione, illuminazione e clipping dei vertici Z-buer pi preciso (compressione dei dati in transito) u Rudimentale shading per-pixel (nascosto nell'API, 2 texture miscelabili) Full Scene Anti Aliasing ed Anisotropic Filtering Supporto hardware alla compressione delle texture Supporto hardware a bump, shadow ed environment mapping (e) NV10 (f) R100 (g) NV15 A. Theodorou (Federico II) Le moderne GPU C42009 15 / 152
  92. 92. Introduzione Panoramica storica Panoramica storica La terza generazione 01/05/2001: Nvidia GeForce 3 (NV20, 57M transistor) 14/08/2001: ATI Radeon 8500 (R200, 60M transistor) 04/02/2002: Nvidia GeForce4 Ti 4600 (NV25, 63M transistor) 3 OpenGL 1.4 e Direct3D 8.0/8.1 Vertex shader 1.0 Pixel shader 1.0 (parzialmente esposti nelle API, 4 texture miscelabili) Supporto hardware al True Re ective Bump Mapping, Environmental Mapped Bump Mapping, ... (h) NV20 (i) R200 (j) NV25 A. Theodorou (Federico II) Le moderne GPU C42009 16 / 152
  93. 93. Introduzione Panoramica storica Panoramica storica La quarta generazione 19/08/2002: ATI Radeon 9700 PRO (R300, 110M transistor) 01/05/2003: Nvidia GeForce FX 5800 (NV30, 125M transistor) 04/05/2004: ATI Radeon X800 PRO (R420, 160M transistor) 3 OpenGL 1.5/2.0 e Direct3D 9.0b Vertex Shader 2.0 Pixel Shader 2.0 (programmabili direttamente) Precisione FP16/FP32 (k) R300 (l) NV30 (m) R420 A. Theodorou (Federico II) Le moderne GPU C42009 17 / 152
  94. 94. Introduzione Panoramica storica Panoramica storica La quinta generazione 14/04/2004: Nvidia GeForce 6800 (NV40, 222M transistor) 22/06/2005: Nvidia GeForce 7800 GTX (G70, ex-NV47, 278M transistor) 05/10/2005: ATI Radeon X1800 XT (R520, 321M transistor) 3 OpenGL 2.0 e Direct3D 9.0c Vertex e Pixel Shader 3.0 Pi lunghi e con pi registri a disposizione u u Gestione di cicli dinamici Texture fetch all'interno dei vertex shader Multiple Render Targets Accelerazione HW per ussi video HD (n) NV40 (o) G70 (p) R520 A. Theodorou (Federico II) Le moderne GPU C42009 18 / 152
  95. 95. Introduzione Panoramica storica Panoramica storica La sesta generazione 08/11/2006: Nvidia GeForce 8800 GTX (G80, 681M transistor) 14/05/2007: ATI Radeon HD 2900 XT (R600XT, 700M transistor) 11/12/2007: Nvidia GeForce 8800 GTS 512 (G92, 754M transistor) 3 OpenGL 2.0/2.1 e Direct3D 10 Vertex e Pixel Shader 4.0 Geometry Shader 4.0 Archittettura uni
  96. 96. cata Design superscalare (q) G80 (r) (s) G92 R600XT A. Theodorou (Federico II) Le moderne GPU C42009 19 / 152
  97. 97. Introduzione Panoramica storica Panoramica storica La settima generazione 19/11/2007: ATI Radeon HD 3870 (RV670XT, 666M transistor) 17/06/2008: Nvidia GeForce GTX 280 (G200, 1400M transistor) 25/06/2008: ATI Radeon HD 4870 (RV770XT, 956M transistor) 3 OpenGL 2.1/3.0/3.1 e Direct3D 10/10.1 Shader Model 4.1/Direct3D 10.1 (solo ATI) Supporto alla doppia precisione Sempre pi stream processor e larghezza di banda u Un'evoluzione pi che una rivoluzione u (t) (u) G200 (v) RV670XT RV770XT A. Theodorou (Federico II) Le moderne GPU C42009 20 / 152
  98. 98. La GPU in azione Potenza elaborativa 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  99. 99. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 21 / 152
  100. 100. La GPU in azione Potenza elaborativa Potenza elaborativa Riferimenti numerici Processore Core Transistor (M) Frequenza (MHz) York
  101. 101. eld (QX9970) 4 core 220+600 3200 Xenon (XBox 360) 3 core 165 3200 Cell (PS3) 1 PPE+6 SPE 234 3200 RV790XT (HD4890) 800 sp 956 850 GT200b (GTX285) 240 1400 1476 R700 (HD4870X2) 800x2 sp 956x2 750 GT200b (GTX295) 240x2 1400x2 1242 Processore SP (GFLOPS) DP (GFLOPS) Banda (GB/s) York
  102. 102. eld (QX9970) 51.1 25.5 12.8 Xenon (XBox 360) 115.2 12 21.6 Cell (PS3) 204 15 12.8 RV790XT (HD4890) 1360 272 124.8 GT200b (GTX285) 1209.5 88.8 159 R700 (HD4870X2) 2400 480 115.2x2 GT200b (GTX295) 1788 131.3 111.9x2 A. Theodorou (Federico II) Le moderne GPU C42009 22 / 152
  103. 103. La GPU in azione Potenza elaborativa Potenza elaborativa GPU vs CPU a Il Commissariat l'Energie Atomique ha ordinato un cluster ibrido da 295 TFlops: 103 TFlops derivanti dalle CPU 192 TFlops derivanti dalle GPU A. Theodorou (Federico II) Le moderne GPU C42009 23 / 152
  104. 104. La GPU in azione Potenza elaborativa Potenza elaborativa Larghezza di banda A. Theodorou (Federico II) Le moderne GPU C42009 24 / 152
  105. 105. La GPU in azione Potenza elaborativa Potenza elaborativa Legge di Moore A. Theodorou (Federico II) Le moderne GPU C42009 25 / 152
  106. 106. La GPU in azione Applicazioni general purpose 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  107. 107. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 26 / 152
  108. 108. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Il GPGPU GPGPU: General-Purpose computation on GPUs Sito di riferimento: http://www.gpgpu.org Speci
  109. 109. che a standard aperto: OpenCL (Open Computing Language) Librerie dei produttori di HW: CUDA e Brook++/CAL Middleware
  110. 110. sico: Nvidia PhysX (ex Ageia) Stage nella pipeline Direct3D 11: Compute shader Vecchie librerie open-source: BrookGPU, Sh A. Theodorou (Federico II) Le moderne GPU C42009 27 / 152
  111. 111. La GPU in azione Applicazioni general purpose Applicazioni general purpose Nvidia Tesla: soluzione ad hoc Computer desktop o rack che montano pi schede video u Pensati speci
  112. 112. catamente per applicazioni GPGPU tramite CUDA La controparte AMD chiamata FireStream e A. Theodorou (Federico II) Le moderne GPU C42009 28 / 152
  113. 113. La GPU in azione Applicazioni general purpose Applicazioni general purpose Fast Fourier Transforms CPU: Intel Core 2 Quad, 2.4GHz (FFTW) GPU: Nvidia GeForce 8800 GTX (CUDA e CUFFT) A. Theodorou (Federico II) Le moderne GPU C42009 29 / 152
  114. 114. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Nvidia Gelato Renderer ad accelerazione hardware non in tempo reale A. Theodorou (Federico II) Le moderne GPU C42009 30 / 152
  115. 115. La GPU in azione Applicazioni general purpose Applicazioni GPGPU OpenVIDIA Computer vision con supporto all'accelerazione della GPU A. Theodorou (Federico II) Le moderne GPU C42009 31 / 152
  116. 116. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Fluidodinamica Calcolo del sistema di equazioni dierenziali di Navier-Stokes sulla GPU A. Theodorou (Federico II) Le moderne GPU C42009 32 / 152
  117. 117. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Generazione ed erosione di terreni Fault Formation Circles Perlin Noise Pentium 4 3.0 GHz 10612 ms 650803 ms 10033 ms GeForce 7600GT 1090 ms 1356 ms 113 ms GeForce 8600GT 915 ms 952 ms 46 ms A. Theodorou (Federico II) Le moderne GPU C42009 33 / 152
  118. 118. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Ricostruzione tomogra
  119. 119. ca FASTRA: PC consumer, monta 4 schede video 9800x2 (8 GPU), (Maggio 2008, meno di 4000 Euro) CalcUA: Supercomputer dell'Univerist di Antwerp, 256 nodi (512 CPU a Opteron 250), (Marzo 2005, 3.5M di Euro) A. Theodorou (Federico II) Le moderne GPU C42009 34 / 152
  120. 120. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Folding@Home CPU: 4 mol/day PS3: 100 mol/day HD 3870: 170 mol/day GTX 280: 500 mol/day A. Theodorou (Federico II) Le moderne GPU C42009 35 / 152
  121. 121. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Password recovery ElcomSoft Distributed Password Recovery http://www.elcomsoft.com/edpr.html A. Theodorou (Federico II) Le moderne GPU C42009 36 / 152
  122. 122. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Nurien tech demo Fisica dei capelli e degli abiti accelerata dalla GPU A. Theodorou (Federico II) Le moderne GPU C42009 37 / 152
  123. 123. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Froblins Demo L'IA degli oltre tremila agenti gestita dalla GPU e A. Theodorou (Federico II) Le moderne GPU C42009 38 / 152
  124. 124. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Ulteriori applicazioni 60 su 262 applicazioni dal sito CUDA Zone (Marzo 2009) A. Theodorou (Federico II) Le moderne GPU C42009 39 / 152
  125. 125. La GPU in azione Applicazioni tradizionali 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  126. 126. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 40 / 152
  127. 127. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali La Game Industry Uno dei motori trainanti dell'economia statunitense con miliardi di dollari di fatturato annuale Nel 2008 ha superato il mercato mondiale dell'home video con oltre 32 miliardi di dollari Il settore dell'intrattenimento meno soggetto alla recente recessione e economica Causa principale della corsa agli armamenti nel settore dell'HW Uno dei principali campi applicativi della ricerca nella computer gra
  128. 128. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (Federico II) Le moderne GPU C42009 41 / 152
  129. 129. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali La Game Industry Uno dei motori trainanti dell'economia statunitense con miliardi di dollari di fatturato annuale Nel 2008 ha superato il mercato mondiale dell'home video con oltre 32 miliardi di dollari Il settore dell'intrattenimento meno soggetto alla recente recessione e economica Causa principale della corsa agli armamenti nel settore dell'HW Uno dei principali campi applicativi della ricerca nella computer gra
  130. 130. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (Federico II) Le moderne GPU C42009 41 / 152
  131. 131. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali La Game Industry Uno dei motori trainanti dell'economia statunitense con miliardi di dollari di fatturato annuale Nel 2008 ha superato il mercato mondiale dell'home video con oltre 32 miliardi di dollari Il settore dell'intrattenimento meno soggetto alla recente recessione e economica Causa principale della corsa agli armamenti nel settore dell'HW Uno dei principali campi applicativi della ricerca nella computer gra
  132. 132. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (Federico II) Le moderne GPU C42009 41 / 152
  133. 133. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali La Game Industry Uno dei motori trainanti dell'economia statunitense con miliardi di dollari di fatturato annuale Nel 2008 ha superato il mercato mondiale dell'home video con oltre 32 miliardi di dollari Il settore dell'intrattenimento meno soggetto alla recente recessione e economica Causa principale della corsa agli armamenti nel settore dell'HW Uno dei principali campi applicativi della ricerca nella computer gra
  134. 134. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (Federico II) Le moderne GPU C42009 41 / 152
  135. 135. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali La Game Industry Uno dei motori trainanti dell'economia statunitense con miliardi di dollari di fatturato annuale Nel 2008 ha superato il mercato mondiale dell'home video con oltre 32 miliardi di dollari Il settore dell'intrattenimento meno soggetto alla recente recessione e economica Causa principale della corsa agli armamenti nel settore dell'HW Uno dei principali campi applicativi della ricerca nella computer gra
  136. 136. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (Federico II) Le moderne GPU C42009 41 / 152
  137. 137. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali La Game Industry Uno dei motori trainanti dell'economia statunitense con miliardi di dollari di fatturato annuale Nel 2008 ha superato il mercato mondiale dell'home video con oltre 32 miliardi di dollari Il settore dell'intrattenimento meno soggetto alla recente recessione e economica Causa principale della corsa agli armamenti nel settore dell'HW Uno dei principali campi applicativi della ricerca nella computer gra
  138. 138. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (Federico II) Le moderne GPU C42009 41 / 152
  139. 139. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Human Head (14/7/2007) Demo real-time della Nvidia per la GeForce 8800 Ultra A. Theodorou (Federico II) Le moderne GPU C42009 42 / 152
  140. 140. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali CryEngine 2 vs Unreal Engine 3 (1/2) A. Theodorou (Federico II) Le moderne GPU C42009 43 / 152
  141. 141. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali CryEngine 2 vs Unreal Engine 3 (2/2) A. Theodorou (Federico II) Le moderne GPU C42009 44 / 152
  142. 142. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Crysis vs Real-life A. Theodorou (Federico II) Le moderne GPU C42009 45 / 152
  143. 143. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Final Night Round 3 (20/2/2006) A. Theodorou (Federico II) Le moderne GPU C42009 46 / 152
  144. 144. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Gears of War (Unreal Engine 3, 9/11/2006) A. Theodorou (Federico II) Le moderne GPU C42009 47 / 152
  145. 145. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Crysis (CryEngine 2, 13/11/2007) A. Theodorou (Federico II) Le moderne GPU C42009 48 / 152
  146. 146. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Assassin's Creed (Scimitar Engine, 14/11/2007) A. Theodorou (Federico II) Le moderne GPU C42009 49 / 152
  147. 147. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Mass Eect (Unreal Engine 3, 20/11/2007) A. Theodorou (Federico II) Le moderne GPU C42009 50 / 152
  148. 148. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali 3dMark Vantage, 28/4/2008 A. Theodorou (Federico II) Le moderne GPU C42009 51 / 152
  149. 149. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Dead Space (Unreal Engine 3, 14/10/2008) A. Theodorou (Federico II) Le moderne GPU C42009 52 / 152
  150. 150. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Far Cry 2 (Dunia Engine, 21/10/2008) A. Theodorou (Federico II) Le moderne GPU C42009 53 / 152
  151. 151. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Fallout 3 (Gamebryo Engine, 28/10/2008) A. Theodorou (Federico II) Le moderne GPU C42009 54 / 152
  152. 152. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Mirror's Edge (Unreal Engine 3, 12/11/2008) A. Theodorou (Federico II) Le moderne GPU C42009 55 / 152
  153. 153. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Prince of Persia (Anvil Engine, 2/12/2008) A. Theodorou (Federico II) Le moderne GPU C42009 56 / 152
  154. 154. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Killzone 2, 25/2/2009 A. Theodorou (Federico II) Le moderne GPU C42009 57 / 152
  155. 155. Cenni sulla programmazione Supporto OpenGL 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  156. 156. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 58 / 152
  157. 157. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Sommario Creazione shader object Creazione program object Utilizzo del program object Codice di esempio 1 Liberazione delle risorse allocate Variabili uniformi Cenni sul resto Codice di esempio 2 Nota: Le funzioni che verranno esaminate fanno parte del core di OpenGL 2.0 e successivi. A. Theodorou (Federico II) Le moderne GPU C42009 59 / 152
  158. 158. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Creazione shader object GLuint glCreateShader(GLenum shaderType ) Ritorna l'handle per un nuovo shader Il tipo pu essere GL VERTEX SHADER o GL FRAGMENT SHADER. o void glShaderSource(GLuint shader, GLsizei count, const GLchar **string, const GLint *length ) Imposta il sorgente per lo shader all'array di stringhe speci
  159. 159. cato. void glCompileShader(GLuint shader ) Compila il sorgente dello shader speci
  160. 160. cato. Nota: A partire dalle OpenGL 3.0, glCreateShader() accetta anche il tipo GL GEOMETRY SHADER ARB. A. Theodorou (Federico II) Le moderne GPU C42009 60 / 152
  161. 161. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Creazione program object GLuint glCreateProgram(void) Ritorna l'handle per un nuovo programma. void glAttachShader(GLuint program, GLuint shader ) Associa lo shader al programma speci
  162. 162. cato. void glLinkProgram(GLuint program ); Eettua la fase di linking per il programma. A. Theodorou (Federico II) Le moderne GPU C42009 61 / 152
  163. 163. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Utilizzo del program object void glUseProgram(GLuint program ) Speci
  164. 164. ca il programma da usare. Da quel momento in poi, per qualsiasi operazione, non verr pi a u utilizzata la pipeline
  165. 165. ssa. Passando 0 come parametro si ritorna alla pipeline tradizionale. A. Theodorou (Federico II) Le moderne GPU C42009 62 / 152
  166. 166. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Codice di esempio 1 § GLuint v , f , p ; char £ vs , £ f s ; p = glCreateProgram ( ) ; v = g l C r e a t e S h a d e r (GL VERTEX SHADER ) ; g l S h a d e r S o u r c e ( v , 1 , vs , NULL ) ; glCompileShader ( v ) ; glAttachShader (p , v ) ; f = g l C r e a t e S h a d e r (GL FRAGMENT SHADER ) ; g l S h a d e r S o u r c e ( f , 1 , f s , NULL ) ; glCompileShader ( f ) ; glAttachShader (p , f ) ; glLinkProgram (p ) ; glUseProgram ( p ) ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 63 / 152
  167. 167. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Liberazione delle risorse allocate void glDeleteShader(GLuint shader ) Comando opposto a quello di creazione, libera la memoria ed il riferimento associati all'handle passato. void glDeleteProgram(GLuint program ) Come sopra, ma relativo ai programmi. void glDetachShader(GLuint program, GLuint shader ) Cancella l'associazione tra shader e programma. A. Theodorou (Federico II) Le moderne GPU C42009 64 / 152
  168. 168. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Variabili uniformi OpenGL permette il passaggio di dati agli shader GLint glGetUniformLocation(GLuint program, const GLchar *name ) Ritorna il riferimento alla posizione di una certa variabile all'interno del programma, che dev'essere correntemente in uso. void glUniformf1|2|3|4gff|ig(GLint location, TYPE v ) Imposta il valore della variabile alla locazione speci
  169. 169. cata a quello passato dalla funzione. void glUniformf1|2|3|4gff|igv(GLint location, GLuint count, const TYPE v ) Come sopra, ma questa volta permette di speci
  170. 170. care un array di valori. void glUniformMatrixf2|3|4gfv(GLint location, GLuint count, GLboolean transpose, const GLfloat *v ) Passa allo shader una matrice quadrata della dimensione speci
  171. 171. cata, ordinata per colonne o per righe a seconda del parametro booleano. A. Theodorou (Federico II) Le moderne GPU C42009 65 / 152
  172. 172. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Cenni sul resto glGetUniform() e glGetActiveUniform() Ritorna il valore di una o di tutte le variabili uniformi attive nel programma speci
  173. 173. cato. Funzioni di query Permettono di ricavare lo stato degli oggetti creati, stampare log diagnostici, conoscere gli oggetti correntemente attivi. Funzioni relative agli attributi per vertice Permettono di speci
  174. 174. care attributi da passare agli shader, all'interno di una coppia glBegin()/glEnd(), diversi per ogni vertice. Multiple Render Targets I fragment shader supportano la scrittura contemporanea su pi frame u buer. Ausilio per lo svilupo glValidateProgram() controlla se l'eseguibile del programma speci
  175. 175. cato, dato lo stato OpenGL corrente, pu funzionare. o A. Theodorou (Federico II) Le moderne GPU C42009 66 / 152
  176. 176. Cenni sulla programmazione Supporto OpenGL Supporto OpenGL Codice di esempio 2 § GLuint p ; GLint l o c 1 , l o c 2 ; glUseProgram ( p ) ; loc1 = glGetUniformLocation (p , Variable1 ) ; glUniform1f ( loc1 , 1.0 f ) ; loc2 = glGetUniformLocation (p , Variable2 ) ; glUniform1i ( loc2 , 1 ) ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 67 / 152
  177. 177. Cenni sulla programmazione GL Shading Language 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  178. 178. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 68 / 152
  179. 179. Cenni sulla programmazione GL Shading Language GL Shading Language Sommario Tipi di dato Inizializzatori e costruttori Quali
  180. 180. catori Flusso di controllo Swizzling Operazioni component-wise Funzioni built-in Variabili built-in Codice di esempio A. Theodorou (Federico II) Le moderne GPU C42009 69 / 152
  181. 181. Cenni sulla programmazione GL Shading Language GL Shading Language Tipi di dato Scalari: float, int, bool Vettori: fe*|i|bgvecf2|3|4g, oating-point, interi o booleani Matrici: matf2|3|4g, matrici quadrate oating-point Sampler: samplerf1|2|3gDfe*|Cube|Shadowg, permettono di eettuare il fetch da una texture Supporto a strutture ed array A. Theodorou (Federico II) Le moderne GPU C42009 70 / 152
  182. 182. Cenni sulla programmazione GL Shading Language GL Shading Language Inizializzatori e costruttori § float a , b = 3.0 , c ; const i n t S i z e = 4 ; // i n i t i a l i z e r i s r e q u i r e d vec3 c o l o r = vec3 ( 0 . 2 , 0 . 5 , 0 . 8 ) ; vec4 c o l o r 4 = vec4 ( c o l o r , 1 . 0 ) mat2 m= mat2 ( 1 . 0 , 2.0 , 3.0 , 4.0); vec3 v = vec3 ( 0 . 6 ) ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 71 / 152
  183. 183. Cenni sulla programmazione GL Shading Language GL Shading Language Quali
  184. 184. catori attribute Informazioni destinate al vertex shader che variano spesso nell'applicazione, anche tra la de
  185. 185. nizione di un vertice e l'altro. uniform Informazioni che variano meno spesso, destinate al vertex o al fragment shader. varying Informazioni passate per interpolazione dal vertex al fragment shader. const Per variabili costanti dichiarate al momento della compilazione, come in C. Nota: A partire da GLSL 1.30 si usano le parole chiave in ed out al posto di attribute e varying. A. Theodorou (Federico II) Le moderne GPU C42009 72 / 152
  186. 186. Cenni sulla programmazione GL Shading Language GL Shading Language Flusso di controllo Cicli for, while e do-while Presenza delle keyword break e continue Selezioni tramite if, if-else, ed operatore ternario :? Presenza della keyword discard, per abortire l'esecuzione del fragment shader per un certo frammento Assenza del supporto per goto e switch Nota: Il costrutto switch/case/default presente a partire da GLSL 1.30. e A. Theodorou (Federico II) Le moderne GPU C42009 73 / 152
  187. 187. Cenni sulla programmazione GL Shading Language GL Shading Language Swizzling § vec4 v4 ; v4 . rgba ; // is a v e c 4 and t h e same a s j u s t u s i n g v4 v4 . rgb ; // is a vec3 v4 . b ; // is a float v4 . xy ; // is a vec2 vec4 pos = vec4 ( 1 . 0 , 2 . 0 , 3 . 0 , 4 . 0 ) ; vec4 s w i z = pos . wzyx ; // s w i z = ( 4 . 0 , 3 . 0 , 2 . 0 , 1 . 0 ) vec4 dup = pos . xxyy ; // dup = ( 1 . 0 , 1 . 0 , 2 . 0 , 2 . 0 ) vec4 pos = vec4 ( 1 . 0 , 2 . 0 , 3 . 0 , 4 . 0 ) ; pos . xw = vec2 ( 5 . 0 , 6 . 0 ) ; // pos = ( 5 . 0 , 2 . 0 , 3 . 0 , 6 . 0 ) pos . wx = vec2 ( 7 . 0 , 8 . 0 ) ; // pos = ( 8 . 0 , 2 . 0 , 3 . 0 , 7 . 0 ) ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 74 / 152
  188. 188. Cenni sulla programmazione GL Shading Language GL Shading Language Operazioni component-wise § vec3 v , u; float f ; v = u + f; // v . x = u . x + f ; // [ . . . ] vec3 v , u , w ; w = v + u; // w . x = v . x + u . x ; // [ . . . ] ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 75 / 152
  189. 189. Cenni sulla programmazione GL Shading Language GL Shading Language Funzioni built-in (1/2) Supportano l'overloading degli argomenti Trigonometriche: radians(), degree(), sin(), cos(), tan(), ... Esponenziali: pow(), exp(), log(), sqrt(), inversesqrt(), ... Comuni: abs(), sign(), floor(), ceil(), min(), max(), clamp(), mix(), ... Geometriche: length(), distance(), dot(), cross(), normalize(), reflect(), refract(), ... A. Theodorou (Federico II) Le moderne GPU C42009 76 / 152
  190. 190. Cenni sulla programmazione GL Shading Language GL Shading Language Funzioni built-in (2/2) Supportano l'overloading degli argomenti Matriciali: matrixCompMult() Relazioni tra vettori: lessThan(), greatherThan(), equal(), notEqual(), ... Accesso alle texture: texturef1|2|3gD, texturef1|2|3gDProj, texturef1|2|3gDLod, texturef1|2|3gDCube, shadowf1|2|3gD, ... Solo frammenti: dFdx(), dFdy(), fwidth() Rumore: noisef1|2|3|4g() A. Theodorou (Federico II) Le moderne GPU C42009 77 / 152
  191. 191. Cenni sulla programmazione GL Shading Language GL Shading Language Variabili built-in Input del vertex shader: gl Color, gl Normal, gl Vertex, gl MultiTexCoordf0..Ng, ... Output del vertex shader: gl Position, ... Input del fragment shader: gl FragCoord, gl FrontFacing Output del fragment shader: gl FragColor, gl FragData[], gl FragDepth Variabili uniformi comuni: gl ModelViewMatrix, gl ProjectionMatrix, gl ClipPlane, gl Point, gl FrontMaterial, gl LightSource[], gl Fog, ... A. Theodorou (Federico II) Le moderne GPU C42009 78 / 152
  192. 192. Cenni sulla programmazione GL Shading Language GL Shading Language Codice di esempio § Listing 1: Vertex shader void main ( v o i d ) f gl Position = ftransform (); // g l P o s i t i o n = g l P r o j e c t i o n M a t r i x £ gl ModelViewMatrix £ gl Ver tex ; // g l P o s i t i o n = g l M o d e l V i e w P r o j e c t i o n M a t r i x £ gl Vertex ; g ¦ ¥ § Listing 2: Fragment shader void main ( v o i d ) f gl FragColor = gl Color ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 79 / 152
  193. 193. Sorgenti di esempi Gouraud e Phong shading 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  194. 194. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 80 / 152
  195. 195. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Blinn-Phong re ection model A. Theodorou (Federico II) Le moderne GPU C42009 81 / 152
  196. 196. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Gouraud shading Vertex shader Trasforma il vertice Calcola l'attenuazione Calcola i tre contributi del modello di Phong Fragment shader Riceve l'intensit del vertice interpolata a Assegna il colore del frammento in base a questa Nota: Il prossimo esempio emula una point light come da pipeline
  197. 197. ssa A. Theodorou (Federico II) Le moderne GPU C42009 82 / 152
  198. 198. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Vertex shader (1/3) § v a r y i n g vec4 intensity ; void main ( v o i d ) f vec4 a m b i e n t G l o b a l , ambient , d i f f u s e ; vec3 ecPos , normal , l i g h t D i r , h a l f V e c t o r , aux ; f l o a t NdotL , NdotHV , d i s t , a t t ; ecPos = vec3 ( g l M o d e l V i e w M a t r i x £ g l V e r t e x ) ; normal = n o r m a l i z e ( g l N o r m a l M a t r i x £ g l N o r m a l ) ; aux = g l L i g h t S o u r c e [ 0 ] . p o s i t i o n . xyz   ecPos ; d i s t = l e n g t h ( aux ) ; l i g h t D i r = n o r m a l i z e ( aux ) ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 83 / 152
  199. 199. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Vertex shader (2/3) § att = 1.0 / ( gl LightSource [ 0 ] . constantAttenuation + gl LightSource [ 0 ] . linearAttenuation £ dist + gl LightSource [ 0 ] . quadraticAttenuation £ dist £ dist ) a m b i e n t G l o b a l = g l L i g h t M o d e l . ambient £ g l F r o n t M a t e r i a l . ambient ; ambient = g l L i g h t S o u r c e [ 0 ] . ambient £ g l F r o n t M a t e r i a l . ambient ; i n t e n s i t y = a m b i e n t G l o b a l + ambient £ att ; diffuse = gl LightSource [ 0 ] . diffuse £ gl FrontMaterial . diffuse ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 84 / 152
  200. 200. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Vertex shader (3/3) § NdotL = max ( dot ( normal , l i g h t D i r ) , 0 . 0 ) ; if ( NdotL 0 . 0 ) f h a l f V e c t o r = n o r m a l i z e ( l i g h t D i r + n o r m a l i z e ( ecPos ) ) ; i n t e n s i t y += a t t £ ( d i f f u s e £ NdotL ) ; NdotHV = max ( dot ( normal , h a l f V e c t o r ) , 0 . 0 ) ; i n t e n s i t y += a t t £ g l L i g h t S o u r c e [ 0 ] . s p e c u l a r £ gl FrontMaterial . specular £ pow ( NdotHV , g l F r o n t M a t e r i a l . s h i n i n e s s ) ; g gl Position = ftransform (); gl TexCoord [ 0 ] = gl TextureMatrix [ 0 ] £ gl MultiTexCoord0 ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 85 / 152
  201. 201. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Fragment shader § v a r y i n g vec4 i n t e n s i t y ; u n i f o r m sampler2D Tex0 ; void main ( v o i d ) f vec4 colorMap = t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) ; gl FragColor = intensity £ colorMap ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 86 / 152
  202. 202. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Screenshot (a) GLSL parallax (b) GLSL multilight Per-pixel lighting A. Theodorou (Federico II) Le moderne GPU C42009 87 / 152
  203. 203. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Phong shading Vertex shader Trasforma il vertice Calcola il valore del contributo d'ambiente e quello diuso di partenza Fragment shader Riceve la normale e l'eye vector interpolati Calcola l'attenuazione Calcola i tre contributi
  204. 204. nali del modello di Phong Calcola il valore di intensit luminosa del frammento a Assegna il colore del frammento in base a questo A. Theodorou (Federico II) Le moderne GPU C42009 88 / 152
  205. 205. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Vertex shader (1/2) § v a r y i n g vec4 a m b i e n t G l o b a l , ambient , d i f f u s e ; v a r y i n g vec3 normal , ecPos ; void main ( v o i d ) f normal = g l N o r m a l M a t r i x £ g l N o r m a l ; ecPos = vec3 ( g l M o d e l V i e w M a t r i x £ g l V e r t e x ) ; a m b i e n t G l o b a l = g l L i g h t M o d e l . ambient £ g l F r o n t M a t e r i a l . ambient ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 89 / 152
  206. 206. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Vertex shader (2/2) § a m b i e n t G l o b a l = g l L i g h t M o d e l . ambient £ g l F r o n t M a t e r i a l . ambient ; ambient = g l L i g h t S o u r c e [ 0 ] . ambient £ g l F r o n t M a t e r i a l . ambient ; diffuse = gl LightSource [ 0 ] . diffuse £ gl FrontMaterial . diffuse ; gl Position = ftransform (); gl TexCoord [ 0 ] = gl TextureMatrix [ 0 ] £ gl MultiTexCoord0 ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 90 / 152
  207. 207. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Fragment shader (1/3) § v a r y i n g vec3 normal , ecPos ; v a r y i n g vec4 a m b i e n t G l o b a l , ambient , d i f f u s e ; u n i f o r m sampler2D Tex0 ; void main ( v o i d ) f vec3 n , aux , lightDir , refVec ; f l o a t NdotL , RdotE ; float dist , att ; vec4 colorMap = t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 91 / 152
  208. 208. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Fragment shader (2/3) § n = n o r m a l i z e ( normal ) ; aux = g l L i g h t S o u r c e [ 0 ] . p o s i t i o n . xyz   ecPos ; d i s t = l e n g t h ( aux ) ; l i g h t D i r = n o r m a l i z e ( aux ) ; att = 1.0 / ( gl LightSource [ 0 ] . constantAttenuation + gl LightSource [ 0 ] . linearAttenuation £ dist + gl LightSource [ 0 ] . quadraticAttenuation £ dist £ dist ) g l F r a g C o l o r = a m b i e n t G l o b a l + ambient £ att ; NdotL = dot ( n , l i g h t D i r ) ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 92 / 152
  209. 209. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Fragment shader (3/3) § if ( NdotL 0.0) f g l F r a g C o l o r += a t t £ ( d i f f u s e £ NdotL ) ; r e f V e c = r e f l e c t (  l i g h t D i r , n ) ; RdotE = dot ( r e f V e c , n o r m a l i z e (  ecPos ) ) ; g l F r a g C o l o r += a t t £ g l L i g h t S o u r c e [ 0 ] . s p e c u l a r £ gl FrontMaterial . specular £ pow ( RdotE , g l F r o n t M a t e r i a l . s h i n i n e s s ) ; g gl FragColor £= colorMap ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 93 / 152
  210. 210. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Screenshot (c) GLSL parallax (d) GLSL multilight Per-vertex lighting A. Theodorou (Federico II) Le moderne GPU C42009 94 / 152
  211. 211. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Specular mapping Come per il Phong shading, ma in pi: u Fragment shader Esegue il fetch della glossmap Modula il costributo speculare secondo la texture precedente A. Theodorou (Federico II) Le moderne GPU C42009 95 / 152
  212. 212. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Fragment shader § u n i f o r m sampler2D Tex1 ; [...] vec4 glossMap = t e x t u r e 2 D ( Tex1 , g l T e x C o o r d [ 0 ] . s t ) ; [...] i f ( NdotL 0 . 0 ) f [...] vec4 s p e c = a t t £ [ . . . ] £ pow ( . . . ) ; s p e c £= glossMap ; g l F r a g C o l o r += s p e c ; g [...] ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 96 / 152
  213. 213. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Screenshot A. Theodorou (Federico II) Le moderne GPU C42009 97 / 152
  214. 214. Sorgenti di esempi Normal e parallax mapping 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  215. 215. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 98 / 152
  216. 216. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Tangent space A. Theodorou (Federico II) Le moderne GPU C42009 99 / 152
  217. 217. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Normal mapping Come per il Phong shading, ma in pi: u Vertex shader Riceve il vettore della tangente dall'applicazione Calcola il vettore binormale e la matrice TBN Trasforma la normale, il light e l'eye vector secondo la matrice TBN Fragment shader Esegue il fetch della normalmap Riporta il valore letto dall'intervallo [0..1] all'intervallo [-1..1] Assegna tale valore alla variabile stabilita per la normale A. Theodorou (Federico II) Le moderne GPU C42009 100 / 152
  218. 218. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Vertex shader § a t t r i b u t e vec3 objTan ; [...] vec3 t a n g e n t = n o r m a l i z e ( g l N o r m a l M a t r i x £ objTan ) ; vec3 b i n o r m a l = c r o s s ( normal , t a n g e n t ) ; mat3 t b n M a t r i x = mat3 ( t a n g e n t . x , b i n o r m a l . x , normal . x , t a n g e n t . y , b i n o r m a l . y , normal . y , t a n g e n t . z , b i n o r m a l . z , normal . z ) ; [...] l i g h t D i r = tbnMatrix £ l i g h t D i r ; ecPos = t b n M a t r i x £ ecPos ; [...] ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 101 / 152
  219. 219. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Fragment shader § u n i f o r m sampler2D Tex2 ; [...] normalMap = t e x t u r e 2 D ( Tex2 , g l T e x C o o r d [ 0 ] . s t ) ; vec4 normal = n o r m a l i z e ( 2 . 0 £ normalMap . rgb   1 . 0 ) ; [...] ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 102 / 152
  220. 220. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Screenshot A. Theodorou (Federico II) Le moderne GPU C42009 103 / 152
  221. 221. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Teoria sul parallax mapping Si correggono le coordinate del texture fetch per riferirsi al punto B Ma c' bisogno di una nuova informazione: l'altezza del pixel e A. Theodorou (Federico II) Le moderne GPU C42009 104 / 152
  222. 222. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Parallax mapping Come per il normal mapping, ma in pi: u Fragment shader Esegue il fetch della heightmap con le texcoord reali del pixel Scala e trasla l'altezza secondo coecienti empirici Sposta le nuove texcoord verso l'osservatore secondo il valore precedente A. Theodorou (Federico II) Le moderne GPU C42009 105 / 152
  223. 223. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Fragment shader § [...] vec2 TexCoord ; float height ; float scale = 0.04; float bias = 0.02; h e i g h t = s c a l e £ t e x t u r e 2 D ( Tex2 , g l T e x C o o r d [ 0 ] . s t ) . a   bias ; TexCoord = g l T e x C o o r d [ 0 ] . s t + h e i g h t £ n o r m a l i z e ( ecPos ) . xy ; [...] ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 106 / 152
  224. 224. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Screenshot A. Theodorou (Federico II) Le moderne GPU C42009 107 / 152
  225. 225. Sorgenti di esempi Toon shading 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  226. 226. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 108 / 152
  227. 227. Sorgenti di esempi Toon shading Toon shading Implementazione Requisiti: Frame Buer Object (per il post-processing in screen space) Multiple Render Targets (per memorizzare le normali al primo passo) 1 passo Si discretizza l'intensit luminosa in pochi valori ammessi a Si memorizzano in una texture i vettori delle normali in eye-space 2 passo Si applica l'operatore di Sobel ad una versione a scala di grigi della texture precedente Si evidenziano i contorni secondo un valore di soglia e spessore A. Theodorou (Federico II) Le moderne GPU C42009 109 / 152
  228. 228. Sorgenti di esempi Toon shading Toon shading 1 passo, fragment shader (1/2) § v a r y i n g vec3 normal , ecPos ; u n i f o r m sampler2D Tex0 ; void main ( v o i d ) f vec3 n , l i g h t D i r ; f l o a t NdotL ; vec4 colorMap = t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) ; n = n o r m a l i z e ( normal ) ; l i g h t D i r = n o r m a l i z e ( g l L i g h t S o u r c e [ 0 ] . p o s i t i o n . xyz   ecPos ) ; NdotL = dot ( n , l i g h t D i r ) ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 110 / 152
  229. 229. Sorgenti di esempi Toon shading Toon shading 1 passo, fragment shader (2/2) § g l F r a g D a t a [ 0 ] = vec4 ( 0 . 0 ) ; if ( NdotL 0.95) g l F r a g D a t a [ 0 ] = vec4 ( 1 . 0 ) ; else if ( NdotL 0.5) g l F r a g D a t a [ 0 ] = vec4 ( 0 . 7 5 ) ; else if ( NdotL 0.25) g l F r a g D a t a [ 0 ] = vec4 ( 0 . 5 ) ; else if ( NdotL 0.0) g l F r a g D a t a [ 0 ] = vec4 ( 0 . 2 5 ) ; g l F r a g D a t a [ 0 ] £= colorMap ; g l F r a g D a t a [ 1 ] = vec4 ( n , 1 . 0 ) ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 111 / 152
  230. 230. Sorgenti di esempi Toon shading Toon shading 2 passo, fragment shader (1/3) § uniform i n t Width , H e i g h t ; uniform float Thickness ; uniform float Threshold ; uniform sampler2D Tex0 , Tex1 ; void main ( v o i d ) f vec2 ox = vec2 ( T h i c k n e s s / f l o a t ( Width ) , 0 . 0 ) ; vec2 oy = vec2 ( 0 . 0 , T h i c k n e s s / f l o a t ( H e i g h t ) ) ; vec2 uv = g l T e x C o o r d [ 0 ] . s t ; mat3 gray ; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 112 / 152
  231. 231. Sorgenti di esempi Toon shading Toon shading 2 passo, fragment shader (2/3) § int i , j ; vec2 PP = uv   oy ; for ( i = 0; i 3 ; i ++) f g r a y [ i ] [ 0 ] = dot ( t e x t u r e 2 D ( Tex1 , PP   ox ) . rgb , vec3 ( 1 . 0 g r a y [ i ] [ 1 ] = dot ( t e x t u r e 2 D ( Tex1 , PP ) . rgb , vec3 ( 1 . 0 / 3 . 0 ) g r a y [ i ] [ 2 ] = dot ( t e x t u r e 2 D ( Tex1 , PP + ox ) . rgb , vec3 ( 1 . 0 PP += oy ; g mat3 K; K [ 0 ] [ 0 ] =   1.0; K [ 0 ] [ 1 ] =   2.0; K [ 0 ] [ 2 ] =   1.0; K[ 1][ 0] = 0.0; K[1 ][ 1] = 0.0; K[1 ][2 ] = 0.0; K[ 2][ 0] = 1.0; K[2 ][ 1] = 2.0; K[2 ][2 ] = 1.0; ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 113 / 152
  232. 232. Sorgenti di esempi Toon shading Toon shading 2 passo, fragment shader (3/3) § f l o at sx = 0 . 0 ; f l o at sy = 0 . 0 ; for ( i = 0; i 3 ; i ++) f for ( j = 0; j 3 ; j ++) f s x += g r a y [ i ] [ j ] £ K[ i ] [ j ] ; s y += g r a y [ i ] [ j ] £ K[ j ] [ i ] ; g g float d i s t = s q r t ( sx £ sx + sy £ sy ) ; if ( dist Threshold ) g l F r a g C o l o r = vec4 ( 0 . 0 ) ; else g l F r a g C o l o r = t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 114 / 152
  233. 233. Sorgenti di esempi Toon shading Toon shading Screenshot (a) Untextured (b) Textured (c) Grey normal (d) Edges A. Theodorou (Federico II) Le moderne GPU C42009 115 / 152
  234. 234. Sorgenti di esempi Toon shading Toon shading Screenshot (e) Final A. Theodorou (Federico II) Le moderne GPU C42009 116 / 152
  235. 235. Sorgenti di esempi Depth of
  236. 236. eld 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  237. 237. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 117 / 152
  238. 238. Sorgenti di esempi Depth of
  239. 239. eld Depth of
  240. 240. eld Teoria x = s =d 3 x 0 = a(s =d ) 0 =a 00 x =a = (s   f )=f 3 x 00 = a(s   )=f = a(s =f   1) f s 1 1 jx   x j = a   1   a = a s     1 00 0 f s d f d A. Theodorou (Federico II) Le moderne GPU C42009 118 / 152
  241. 241. Sorgenti di esempi Depth of
  242. 242. eld Depth of
  243. 243. eld Implementazione Si compone di 5 passi ed utilizza 4 Frame Buer Object 1 passo: rendering della scena in un FBO e calcolo della quantit di a blur 2 passo: downsampling in un altro FBO avente 1/4 delle dimensioni del precedente 3 passo: applicazione del
  244. 244. ltro gaussiano lungo l'asse X 4 passo: applicazione del
  245. 245. ltro gaussiano lungo l'asse Y 5 passo: interpolazione lineare tra la scena originale e quella ridotta e sfumata A. Theodorou (Federico II) Le moderne GPU C42009 119 / 152
  246. 246. Sorgenti di esempi Depth of
  247. 247. eld Depth of
  248. 248. eld 1 passo, vertex shader § uniform f l o a t focalDistance , focalRange ; varying f l o a t Blur ; void main ( v o i d ) f vec4 PosWV = g l M o d e l V i e w M a t r i x £ gl Vertex ; B l u r = clamp ( abs( PosWV . z   f o c a l D i s t a n c e ) / focalRange , 0.0 , 1 . 0 ) ; gl Position = ftransform (); gl TexCoord [ 0 ] = gl TextureMatrix [ 0 ] £ gl MultiTexCoord0 ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 120 / 152
  249. 249. Sorgenti di esempi Depth of
  250. 250. eld Depth of
  251. 251. eld 1 passo, fragment shader § varying f l o a t Blur ; u n i f o r m sampler2D Tex0 ; void main ( v o i d ) f g l F r a g D a t a [ 0 ] = vec4 ( t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) . rgb , B l u r ) ; g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 121 / 152
  252. 252. Sorgenti di esempi Depth of
  253. 253. eld Depth of
  254. 254. eld 5 passo, fragment shader § u n i f o r m sampler2D Tex0 , Tex1 ; void main ( v o i d ) f vec4 F u l l r e s = t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) ; vec4 B l u r r e d = t e x t u r e 2 D ( Tex1 , g l T e x C o o r d [ 1 ] . s t ) ; gl FragColor = Fullres + Fullres . a £ ( Blurred   Fullres ); g ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 122 / 152
  255. 255. Sorgenti di esempi Depth of
  256. 256. eld Depth of Field Screenshot (a) Depth of Field (b) Quantit di blur a A. Theodorou (Federico II) Le moderne GPU C42009 123 / 152
  257. 257. Sorgenti di esempi Depth of
  258. 258. eld Depth of Field Screenshot (d) Normal + Parallax + DoF A. Theodorou (Federico II) Le moderne GPU C42009 124 / 152
  259. 259. Sorgenti di esempi Deferred shading 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  260. 260. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 125 / 152
  261. 261. Sorgenti di esempi Deferred shading Deferred shading Confronto (1/3) Single-pass, multi-light Per ogni oggetto: renderizzo l'oggetto ed applico l'illuminazione in un solo shader Spreco di shading nel caso di super
  262. 262. ci invisibili Mal si integra con le tecniche di shadowing Poche luci gestibili contemporaneamente C' bisogno di uno shader diverso per ogni combinazione e A. Theodorou (Federico II) Le moderne GPU C42009 126 / 152
  263. 263. Sorgenti di esempi Deferred shading Deferred shading Confronto (2/3) Multi-pass, multi-light Per ogni luce: Per ogni oggetto in uenzato: aggiungo al framebuer il contributo della luce sull'oggetto Spreco di shading nel caso di super
  264. 264. ci invisibili Le chiamate alla funzioni di disegno possono essere anche N (luci ) ¢ N (oggetti ) Molto lavoro ripetuto (trasformazione dei vertici, ...) A. Theodorou (Federico II) Le moderne GPU C42009 127 / 152
  265. 265. Sorgenti di esempi Deferred shading Deferred shading Confronto (3/3) Deferred shading Per ogni oggetto: memorizzo gli attributi che servono a calcolare l'illuminazione nel G-buer Per ogni luce: aggiungo al framebuer il contributo della luce tramite il G-buer Sempli
  266. 266. ca la gestione dell'illuminazione (un solo shader per memorizzare gli attributi) Si integra bene con le tecniche di shadowing Le chiamate alle funzioni di disegno sono al pi N (luci ) + N (oggetti ) u L'illuminazione diventa un lavoro di post-processing in screen space Stesso lavoro per calcolare l'illuminazione di una luce grande o di tante piccole A. Theodorou (Federico II) Le moderne GPU C42009 128 / 152
  267. 267. Sorgenti di esempi Deferred shading Deferred shading Implementazione Requisiti: Texture oating point (per la posizione) Multiple Render Targets (per scrivere tutti gli attributi contemporaneamente) Floating-point blending (per il compositing) Passi: Si ricavano gli attributi per ogni vertice Si interpolano per frammento e si scrivono nel G-buer Si utilizza il G-buer per l'illuminazione A. Theodorou (Federico II) Le moderne GPU C42009 129 / 152
  268. 268. Sorgenti di esempi Deferred shading Deferred shading §due fragment shader I v a r y i n g vec3 p o s i t i o n , normal ; u n i f o r m sampler2D Tex0 ; void main ( v o i d ) f g l F r a g D a t a [ 0 ] = vec4 ( p o s i t i o n . xyz , 1 . 0 ) ; g l F r a g D a t a [ 1 ] = vec4 ( n o r m a l i z e ( normal . xyz ) , 0 . 0 ) ; g l F r a g D a t a [ 2 ] = t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) ; g ¦ ¥ § u n i f o r m sampler2D Tex0 , Tex1 , Tex2 ; [...] vec3 ecPos = t e x t u r e 2 D ( Tex0 , g l T e x C o o r d [ 0 ] . s t ) . xyz ; vec3 normal = t e x t u r e 2 D ( Tex1 , g l T e x C o o r d [ 1 ] . s t ) . xyz ; vec4 colorMap = t e x t u r e 2 D ( Tex2 , g l T e x C o o r d [ 2 ] . s t ) ; [...] ¦ ¥ A. Theodorou (Federico II) Le moderne GPU C42009 130 / 152
  269. 269. Sorgenti di esempi Deferred shading Deferred shading Screenshot A. Theodorou (Federico II) Le moderne GPU C42009 131 / 152
  270. 270. Sorgenti di esempi High Dynamic Range Imaging 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione Supporto OpenGL GL Shading Language 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading Depth of
  271. 271. eld Deferred shading High Dynamic Range Imaging A. Theodorou (Federico II) Le moderne GPU C42009 132 / 152
  272. 272. Sorgenti di esempi High Dynamic Range Imaging HDRI Teoria Immagini dal rapporto di contrasto molto elevato Consente un'impostazione accurata dei valori di esposizione Si presta facilmente all'utilizzo con algoritmi di adattamento temporale dell'esposizione Permette di implementare un eetto di bloom (o glow) realistico Per la visualizzazione a schermo fondamentale il tone-mapping e A. Theodorou (Federico II) Le moderne GPU C42009 133 / 152
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×