Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
      Potenz...
Sommario



Sommario


1   Introduzione
       Primo approccio
       Panoramica storica
2   La GPU in azione
      Potenz...
Sommario



Sommario


1   Introduzione
       Primo approccio
       Panoramica storica
2   La GPU in azione
      Potenz...
Sommario



Sommario


1   Introduzione
       Primo approccio
       Panoramica storica
2   La GPU in azione
      Potenz...
Introduzione   Primo approccio




1   Introduzione
       Primo approccio
       Panoramica storica
2   La GPU in azione
...
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit at...
cata)
     Tessellation engine (SM 5.0)
     Centinaia di gigaFLOPS in single-precision
     Decine di gigaFLOPS in double...
che



    A. Theodorou (LD2009)          Le moderne GPU                  24/10/09   4 / 105
Introduzione   Primo approccio



Primo approccio
La pipeline
ssa




    A. Theodorou (LD2009)        Le moderne GPU              24/10/09   5 / 105
Introduzione   Primo approccio



Primo approccio
La pipeline programmabile (SM 4.0)




    A. Theodorou (LD2009)        ...
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 quattro fasi distinte:
         ...
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 quattro fasi distinte:
         ...
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 quattro fasi distinte:
         ...
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 quattro fasi distinte:
         ...
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 quattro fasi distinte:
         ...
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 quattro fasi distinte:
         ...
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 quattro fasi distinte:
         ...
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 quattro fasi distinte:
         ...
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (archite...
cata)
     Viene istruito da un dispatcher che gestisce il work-load
     Opera seguendo un design superscalare
     Lavor...
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (archite...
cata)
     Viene istruito da un dispatcher che gestisce il work-load
     Opera seguendo un design superscalare
     Lavor...
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (archite...
cata)
     Viene istruito da un dispatcher che gestisce il work-load
     Opera seguendo un design superscalare
     Lavor...
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (archite...
cata)
     Viene istruito da un dispatcher che gestisce il work-load
     Opera seguendo un design superscalare
     Lavor...
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (archite...
cata)
     Viene istruito da un dispatcher che gestisce il work-load
     Opera seguendo un design superscalare
     Lavor...
Introduzione   Primo approccio



Primo approccio
Architettura a shader uni
cati




                             Figura: Architettura discreta




                            Figura: Architettura uni
cata
    A. Theodorou (LD2009)              Le moderne GPU              24/10/09   9 / 105
Introduzione   Primo approccio



Primo approccio
Tassellazione




     (a) Wireframe senza tassellazione                ...
Introduzione   Panoramica storica




1   Introduzione
       Primo approccio
       Panoramica storica
2   La GPU in azio...
Introduzione   Panoramica storica



Panoramica storica
Quadro generale

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



Panoramica storica
Le prime generazioni
      OpenGL 1.1 e Direct3D 5.0
      01/08/1...
Introduzione   Panoramica storica



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



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



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




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



Panoramica storica
La settima generazione
19/11/2007: ATI Radeon HD 3870 (RV670XT, 66...
Introduzione   Panoramica storica



Panoramica storica
L'ottava generazione
23/09/2009: ATI Radeon HD5870 (R870, 2150M tr...
La GPU in azione   Potenza elaborativa




1   Introduzione
       Primo approccio
       Panoramica storica
2   La GPU in...
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
Legge di Moore




    A. Theodorou (LD2009)            Le m...
La GPU in azione   Applicazioni general purpose




1   Introduzione
       Primo approccio
       Panoramica storica
2   ...
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
     Middle...
sico: Nvidia PhysX (ex Ageia)
     Stage nella pipeline Direct3D 11: Compute shader
     Vecchie librerie open-source: Bro...
La GPU in azione   Applicazioni general purpose



Applicazioni general purpose
Nvidia Tesla: soluzione ad hoc




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



Applicazioni general purpose
Fast Fourier Transforms




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



Applicazioni GPGPU
Nvidia Gelato




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



Applicazioni GPGPU
Furryball




                Renderer GPU in tempo ...
La GPU in azione   Applicazioni general purpose



Applicazioni GPGPU
OpenVIDIA




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



Applicazioni GPGPU
Fluidodinamica




  Calcolo del sistema di equazion...
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: S...
La GPU in azione   Applicazioni general purpose



Applicazioni GPGPU
Folding@Home




     CPU: 4 mol/day
     PS3: 100 m...
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 t...
La GPU in azione   Applicazioni general purpose



Applicazioni GPGPU
Video encoder




 Badaboom ed Avivo Converter sfrut...
ca video
    A. Theodorou (LD2009)            Le moderne GPU                           24/10/09   37 / 105
La GPU in azione   Applicazioni general purpose



Applicazioni GPGPU
Ulteriori applicazioni




           60 su 621 appl...
La GPU in azione   Applicazioni tradizionali




1   Introduzione
       Primo approccio
       Panoramica storica
2   La ...
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
Final Night Round 3 (20/2/2006)




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



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




  ...
La GPU in azione   Applicazioni tradizionali



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




    A. Theo...
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)




    ...
La GPU in azione   Applicazioni tradizionali



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




   ...
La GPU in azione   Applicazioni tradizionali



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




    A. ...
La GPU in azione   Applicazioni tradizionali



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




    ...
Upcoming SlideShare
Loading in …5
×

Le moderne GPU - LD2009

1,125 views

Published on

Le Moderne GPU: Cosa è possibile fare oggi e cenni su come farlo.
Presentata a Napoli durante il Linux Day 2009 il giorno 24 Ottobre 2009.
Versione ridotta ed aggiornata di quella presentata in aula C4.

Published in: Technology, Art & Photos
  • Be the first to comment

  • Be the first to like this

Le moderne GPU - LD2009

  1. 1. Le moderne GPU Cosa possibile fare oggi e cenni su come farlo e Angelo Encelo Theodorou Linux Day 2009 24 Ottobre 2009 A. Theodorou (LD2009) Le moderne GPU 24/10/09 1 / 105
  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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 2 / 105
  3. 3. Sommario Sommario 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 2 / 105
  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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 2 / 105
  5. 5. Sommario Sommario 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 2 / 105
  6. 6. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 3 / 105
  7. 7. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  8. 8. cata) Tessellation engine (SM 5.0) 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
  9. 9. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  10. 10. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  11. 11. cata) Tessellation engine (SM 5.0) 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
  12. 12. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  13. 13. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  14. 14. cata) Tessellation engine (SM 5.0) 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
  15. 15. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  16. 16. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  17. 17. cata) Tessellation engine (SM 5.0) 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
  18. 18. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  19. 19. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  20. 20. cata) Tessellation engine (SM 5.0) 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
  21. 21. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  22. 22. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  23. 23. cata) Tessellation engine (SM 5.0) 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
  24. 24. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  25. 25. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  26. 26. cata) Tessellation engine (SM 5.0) 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
  27. 27. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  28. 28. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  29. 29. cata) Tessellation engine (SM 5.0) 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
  30. 30. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  31. 31. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  32. 32. cata) Tessellation engine (SM 5.0) 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
  33. 33. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  34. 34. Introduzione Primo approccio Primo approccio La pipeline
  35. 35. ssa A. Theodorou (LD2009) Le moderne GPU 24/10/09 5 / 105
  36. 36. Introduzione Primo approccio Primo approccio La pipeline programmabile (SM 4.0) A. Theodorou (LD2009) Le moderne GPU 24/10/09 6 / 105
  37. 37. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  38. 38. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  39. 39. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  40. 40. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  41. 41. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  42. 42. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  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 quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  46. 46. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  47. 47. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  48. 48. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  49. 49. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  50. 50. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  51. 51. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  52. 52. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  53. 53. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  54. 54. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  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 quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  58. 58. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  59. 59. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  60. 60. care un solo elemento alla volta (gathering/scattering) o Pu intervenire in quattro fasi distinte: o Trasformazione dei vertici Assemblaggio delle primitive Tassellazione (SM 5.0) Colorazione dei frammenti A. Theodorou (LD2009) Le moderne GPU 24/10/09 7 / 105
  61. 61. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  62. 62. 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 (LD2009) Le moderne GPU 24/10/09 8 / 105
  63. 63. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  64. 64. 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 (LD2009) Le moderne GPU 24/10/09 8 / 105
  65. 65. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  66. 66. 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 (LD2009) Le moderne GPU 24/10/09 8 / 105
  67. 67. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  68. 68. 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 (LD2009) Le moderne GPU 24/10/09 8 / 105
  69. 69. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  70. 70. 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 (LD2009) Le moderne GPU 24/10/09 8 / 105
  71. 71. Introduzione Primo approccio Primo approccio Architettura a shader uni
  72. 72. cati Figura: Architettura discreta Figura: Architettura uni
  73. 73. cata A. Theodorou (LD2009) Le moderne GPU 24/10/09 9 / 105
  74. 74. Introduzione Primo approccio Primo approccio Tassellazione (a) Wireframe senza tassellazione (b) Wireframe con tassellazione A. Theodorou (LD2009) Le moderne GPU 24/10/09 10 / 105
  75. 75. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 11 / 105
  76. 76. 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
  77. 77. cazione delle unit di calcolo (SM 4.0) a 7 Generazione (2008): Un'evoluzione prestazionale (SM 4.1) 8 Generazione (2009): Tassellazione programmabile (SM 5.0) A. Theodorou (LD2009) Le moderne GPU 24/10/09 12 / 105
  78. 78. Introduzione Panoramica storica Panoramica storica Le prime generazioni OpenGL 1.1 e Direct3D 5.0 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) OpenGL 1.3 e Direct3D 7.0 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) OpenGL 1.4 e Direct3D 8.0/8.1 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) (c) (d) (e) (f) (g) (h) (i) NV20 (j) (k) NV3 NV4 Rage NV10 R100 NV15 R200 NV25 A. Theodorou (LD2009) 128 Le moderne GPU 24/10/09 13 / 105
  79. 79. 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) ! OpenGL 1.5/2.0 e Direct3D 9.0b Vertex Shader 2.0 Pixel Shader 2.0 (programmabili direttamente) Precisione FP16/FP32 (l) R300 (m) NV30 (n) R420 A. Theodorou (LD2009) Le moderne GPU 24/10/09 14 / 105
  80. 80. 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) ! 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 (o) NV40 (p) G70 (q) R520 A. Theodorou (LD2009) Le moderne GPU 24/10/09 15 / 105
  81. 81. 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) ! OpenGL 2.0/2.1 e Direct3D 10 Vertex e Pixel Shader 4.0 Geometry Shader 4.0 Archittettura uni
  82. 82. cata Design superscalare (r) G80 (s) (t) G92 R600XT A. Theodorou (LD2009) Le moderne GPU 24/10/09 16 / 105
  83. 83. 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) ! 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 (u) (v) G200 (w) RV670XT RV770XT A. Theodorou (LD2009) Le moderne GPU 24/10/09 17 / 105
  84. 84. Introduzione Panoramica storica Panoramica storica L'ottava generazione 23/09/2009: ATI Radeon HD5870 (R870, 2150M transistor) xx/xx/2010: Nvidia Fermi (G300, 3000M transistor) ! OpenGL 2.1/3.2 e Direct3D 11 Shader Model 5.0 Tesselletion engine Incremento nelle performance doppia precisione (x) RV870 (y) G300 A. Theodorou (LD2009) Le moderne GPU 24/10/09 18 / 105
  85. 85. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 19 / 105
  86. 86. La GPU in azione Potenza elaborativa Potenza elaborativa Riferimenti numerici Processore Core Transistor (M) Frequenza (MHz) York
  87. 87. eld (QX9970) 4 core 220+600 3200 Xenon (XBox 360) 3 core 165 3200 Cell (PS3) 1 PPE+6 SPE 234 3200 RV870 (HD5870) 1600 sp 2154 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
  88. 88. eld (QX9970) 51.1 25.5 12.8 Xenon (XBox 360) 115.2 12 21.6 Cell (PS3) 204 15 12.8 RV870 (HD5870) 2720 544 153.6 GT200b (GTX285) 1209.5 88.8 159 R700 (HD4870X2) 2400 480 115.2x2 GT200b (GTX295) 1788 131.3 111.9x2 A. Theodorou (LD2009) Le moderne GPU 24/10/09 20 / 105
  89. 89. 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 (LD2009) Le moderne GPU 24/10/09 21 / 105
  90. 90. La GPU in azione Potenza elaborativa Potenza elaborativa Legge di Moore A. Theodorou (LD2009) Le moderne GPU 24/10/09 22 / 105
  91. 91. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 23 / 105
  92. 92. 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
  93. 93. che a standard aperto: OpenCL (Open Computing Language) Librerie dei produttori di HW: CUDA e Brook++/CAL Middleware
  94. 94. sico: Nvidia PhysX (ex Ageia) Stage nella pipeline Direct3D 11: Compute shader Vecchie librerie open-source: BrookGPU, Sh A. Theodorou (LD2009) Le moderne GPU 24/10/09 24 / 105
  95. 95. 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
  96. 96. catamente per applicazioni GPGPU tramite CUDA La controparte AMD chiamata FireStream e A. Theodorou (LD2009) Le moderne GPU 24/10/09 25 / 105
  97. 97. 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 (LD2009) Le moderne GPU 24/10/09 26 / 105
  98. 98. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Nvidia Gelato Renderer ad accelerazione hardware non in tempo reale A. Theodorou (LD2009) Le moderne GPU 24/10/09 27 / 105
  99. 99. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Furryball Renderer GPU in tempo reale per Autodesk Maya A. Theodorou (LD2009) Le moderne GPU 24/10/09 28 / 105
  100. 100. La GPU in azione Applicazioni general purpose Applicazioni GPGPU OpenVIDIA Computer vision con supporto all'accelerazione della GPU A. Theodorou (LD2009) Le moderne GPU 24/10/09 29 / 105
  101. 101. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Fluidodinamica Calcolo del sistema di equazioni dierenziali di Navier-Stokes sulla GPU A. Theodorou (LD2009) Le moderne GPU 24/10/09 30 / 105
  102. 102. 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 (LD2009) Le moderne GPU 24/10/09 31 / 105
  103. 103. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Ricostruzione tomogra
  104. 104. 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 (LD2009) Le moderne GPU 24/10/09 32 / 105
  105. 105. 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 (LD2009) Le moderne GPU 24/10/09 33 / 105
  106. 106. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Password recovery ElcomSoft Distributed Password Recovery http://www.elcomsoft.com/edpr.html A. Theodorou (LD2009) Le moderne GPU 24/10/09 34 / 105
  107. 107. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Nurien tech demo Fisica dei capelli e degli abiti accelerata dalla GPU A. Theodorou (LD2009) Le moderne GPU 24/10/09 35 / 105
  108. 108. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Froblins Demo L'IA degli oltre tremila agenti gestita dalla GPU e A. Theodorou (LD2009) Le moderne GPU 24/10/09 36 / 105
  109. 109. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Video encoder Badaboom ed Avivo Converter sfruttano la GPU durante la codi
  110. 110. ca video A. Theodorou (LD2009) Le moderne GPU 24/10/09 37 / 105
  111. 111. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Ulteriori applicazioni 60 su 621 applicazioni dal sito CUDA Zone (Ottobre 2009) A. Theodorou (LD2009) Le moderne GPU 24/10/09 38 / 105
  112. 112. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 39 / 105
  113. 113. 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
  114. 114. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (LD2009) Le moderne GPU 24/10/09 40 / 105
  115. 115. 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
  116. 116. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (LD2009) Le moderne GPU 24/10/09 40 / 105
  117. 117. 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
  118. 118. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (LD2009) Le moderne GPU 24/10/09 40 / 105
  119. 119. 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
  120. 120. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (LD2009) Le moderne GPU 24/10/09 40 / 105
  121. 121. 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
  122. 122. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (LD2009) Le moderne GPU 24/10/09 40 / 105
  123. 123. 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
  124. 124. ca Porta ad una ricaduta tecnologica anche in altri settori (educativo, medico, industriale, militare) A. Theodorou (LD2009) Le moderne GPU 24/10/09 40 / 105
  125. 125. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Final Night Round 3 (20/2/2006) A. Theodorou (LD2009) Le moderne GPU 24/10/09 41 / 105
  126. 126. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Gears of War (Unreal Engine 3, 9/11/2006) A. Theodorou (LD2009) Le moderne GPU 24/10/09 42 / 105
  127. 127. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Crysis (CryEngine 2, 13/11/2007) A. Theodorou (LD2009) Le moderne GPU 24/10/09 43 / 105
  128. 128. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Assassin's Creed (Scimitar Engine, 14/11/2007) A. Theodorou (LD2009) Le moderne GPU 24/10/09 44 / 105
  129. 129. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Mass Eect (Unreal Engine 3, 20/11/2007) A. Theodorou (LD2009) Le moderne GPU 24/10/09 45 / 105
  130. 130. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Dead Space (Unreal Engine 3, 14/10/2008) A. Theodorou (LD2009) Le moderne GPU 24/10/09 46 / 105
  131. 131. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Far Cry 2 (Dunia Engine, 21/10/2008) A. Theodorou (LD2009) Le moderne GPU 24/10/09 47 / 105
  132. 132. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Fallout 3 (Gamebryo Engine, 28/10/2008) A. Theodorou (LD2009) Le moderne GPU 24/10/09 48 / 105
  133. 133. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Mirror's Edge (Unreal Engine 3, 12/11/2008) A. Theodorou (LD2009) Le moderne GPU 24/10/09 49 / 105
  134. 134. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Prince of Persia (Anvil Engine, 2/12/2008) A. Theodorou (LD2009) Le moderne GPU 24/10/09 50 / 105
  135. 135. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Killzone 2 (25/2/2009) A. Theodorou (LD2009) Le moderne GPU 24/10/09 51 / 105
  136. 136. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Ghostbuster: The Videogame (Infernal Engine, 16/6/2009) A. Theodorou (LD2009) Le moderne GPU 24/10/09 52 / 105
  137. 137. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Batman: Akrham Asylum (Unreal Engine 3, 25/8/2009) A. Theodorou (LD2009) Le moderne GPU 24/10/09 53 / 105
  138. 138. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali Borderlands (Unreal Engine 3, 20/10/2009) A. Theodorou (LD2009) Le moderne GPU 24/10/09 54 / 105
  139. 139. La GPU in azione Applicazioni tradizionali Applicazioni tradizionali R.A.G.E. (id Tech 5, 2010) A. Theodorou (LD2009) Le moderne GPU 24/10/09 55 / 105
  140. 140. Cenni sulla programmazione GL Shading Language 1.20 1 Introduzione Primo approccio Panoramica storica 2 La GPU in azione Potenza elaborativa Applicazioni general purpose Applicazioni tradizionali 3 Cenni sulla programmazione GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 56 / 105
  141. 141. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Sommario Tipi di dato Inizializzatori e costruttori Quali
  142. 142. catori Flusso di controllo Swizzling Operazioni component-wise Funzioni built-in Variabili built-in Codice di esempio A. Theodorou (LD2009) Le moderne GPU 24/10/09 57 / 105
  143. 143. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Tipi di dato Scalari: float, int, bool f g f g Vettori: e*|i|b vec 2|3|4 , oating-point, interi o booleani f g Matrici: mat 2|3|4 , matrici quadrate oating-point f gf Sampler: sampler 1|2|3 D e*|Cube|Shadow , permettono di g eettuare il fetch da una texture Supporto a strutture ed array A. Theodorou (LD2009) Le moderne GPU 24/10/09 58 / 105
  144. 144. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 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 (LD2009) Le moderne GPU 24/10/09 59 / 105
  145. 145. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Quali
  146. 146. catori attribute Informazioni destinate al vertex shader che variano spesso nell'applicazione, anche tra la de
  147. 147. 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 (LD2009) Le moderne GPU 24/10/09 60 / 105
  148. 148. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 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 (LD2009) Le moderne GPU 24/10/09 61 / 105
  149. 149. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 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 (LD2009) Le moderne GPU 24/10/09 62 / 105
  150. 150. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 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 (LD2009) Le moderne GPU 24/10/09 63 / 105
  151. 151. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 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 (LD2009) Le moderne GPU 24/10/09 64 / 105
  152. 152. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Funzioni built-in (2/2) Supportano l'overloading degli argomenti Matriciali: matrixCompMult() Relazioni tra vettori: lessThan(), greatherThan(), equal(), notEqual(), ... f Accesso alle texture: texture 1|2|3 D, texture 1|2|3 DProj, g f g f g f texture 1|2|3 DLod, texture 1|2|3 DCube, shadow 1|2|3 D, ... g f g Solo frammenti: dFdx(), dFdy(), fwidth() Rumore: noise 1|2|3|4 ()f g A. Theodorou (LD2009) Le moderne GPU 24/10/09 65 / 105
  153. 153. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Variabili built-in Input del vertex shader: gl Color, gl Normal, gl Vertex, gl MultiTexCoord 0..N , ... f g 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, ... Nota: Dalla versione 1.40 in poi la maggior parte di esse disponibile solo in e modalit compatible a A. Theodorou (LD2009) Le moderne GPU 24/10/09 66 / 105
  154. 154. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Codice di esempio § Listing 1: Vertex shader void main ( v o i d ) f g l P o s i t i o n = f t r a n s f o r m ( ) ; // d e p r e c a t e d d a l l a 1 . 3 0 // 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 (LD2009) Le moderne GPU 24/10/09 67 / 105
  155. 155. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 68 / 105
  156. 156. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Blinn-Phong re ection model A. Theodorou (LD2009) Le moderne GPU 24/10/09 69 / 105
  157. 157. 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
  158. 158. ssa A. Theodorou (LD2009) Le moderne GPU 24/10/09 70 / 105
  159. 159. 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 (LD2009) Le moderne GPU 24/10/09 71 / 105
  160. 160. 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 (LD2009) Le moderne GPU 24/10/09 72 / 105
  161. 161. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Vertex shader (3/3) § NdotL = dot ( normal , l i g h t D i r ) ; 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 = dot ( normal , h a l f V e c t o r ) ; 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 (LD2009) Le moderne GPU 24/10/09 73 / 105
  162. 162. 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 (LD2009) Le moderne GPU 24/10/09 74 / 105
  163. 163. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Screenshot (a) GLSL parallax (b) GLSL multilight Per-pixel lighting A. Theodorou (LD2009) Le moderne GPU 24/10/09 75 / 105
  164. 164. 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
  165. 165. 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 (LD2009) Le moderne GPU 24/10/09 76 / 105
  166. 166. 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 (LD2009) Le moderne GPU 24/10/09 77 / 105
  167. 167. 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 (LD2009) Le moderne GPU 24/10/09 78 / 105
  168. 168. 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 (LD2009) Le moderne GPU 24/10/09 79 / 105
  169. 169. 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 (LD2009) Le moderne GPU 24/10/09 80 / 105
  170. 170. 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 (LD2009) Le moderne GPU 24/10/09 81 / 105
  171. 171. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Screenshot (c) GLSL parallax (d) GLSL multilight Per-vertex lighting A. Theodorou (LD2009) Le moderne GPU 24/10/09 82 / 105
  172. 172. 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 (LD2009) Le moderne GPU 24/10/09 83 / 105
  173. 173. 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 (LD2009) Le moderne GPU 24/10/09 84 / 105
  174. 174. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Screenshot A. Theodorou (LD2009) Le moderne GPU 24/10/09 85 / 105
  175. 175. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 86 / 105
  176. 176. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Tangent space A. Theodorou (LD2009) Le moderne GPU 24/10/09 87 / 105
  177. 177. 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 (LD2009) Le moderne GPU 24/10/09 88 / 105
  178. 178. 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 (LD2009) Le moderne GPU 24/10/09 89 / 105
  179. 179. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Fragment shader § u n i f o r m sampler2D Tex2 ; [...] vec4normalMap = t e x t u r e 2 D ( Tex2 , g l T e x C o o r d [ 0 ] . s t ) ; normal = n o r m a l i z e ( 2 . 0 £ normalMap . rgb   1 . 0 ) ; [...] ¦ ¥ A. Theodorou (LD2009) Le moderne GPU 24/10/09 90 / 105
  180. 180. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Screenshot A. Theodorou (LD2009) Le moderne GPU 24/10/09 91 / 105
  181. 181. 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 (LD2009) Le moderne GPU 24/10/09 92 / 105
  182. 182. 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 (LD2009) Le moderne GPU 24/10/09 93 / 105
  183. 183. 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 (LD2009) Le moderne GPU 24/10/09 94 / 105
  184. 184. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Screenshot A. Theodorou (LD2009) Le moderne GPU 24/10/09 95 / 105
  185. 185. 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 GL Shading Language 1.20 4 Sorgenti di esempi Gouraud e Phong shading Normal e parallax mapping Toon shading A. Theodorou (LD2009) Le moderne GPU 24/10/09 96 / 105
  186. 186. 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 (LD2009) Le moderne GPU 24/10/09 97 / 105
  187. 187. 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 (LD2009) Le moderne GPU 24/10/09 98 / 105
  188. 188. 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 (LD2009) Le moderne GPU 24/10/09 99 / 105
  189. 189. 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 (LD2009) Le moderne GPU 24/10/09 100 / 105
  190. 190. 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 (LD2009) Le moderne GPU 24/10/09 101 / 105
  191. 191. 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 (LD2009) Le moderne GPU 24/10/09 102 / 105
  192. 192. Sorgenti di esempi Toon shading Toon shading Screenshot (a) Untextured (b) Textured (c) Grey normal (d) Edges A. Theodorou (LD2009) Le moderne GPU 24/10/09 103 / 105
  193. 193. Sorgenti di esempi Toon shading Toon shading Screenshot (e) Final A. Theodorou (LD2009) Le moderne GPU 24/10/09 104 / 105
  194. 194. Approfondimenti Approfondimenti Alcuni link interessanti http://www.khronos.org/opengl/ http://www.3dshaders.com/home/ http://www.lighthouse3d.com/opengl/glsl/ http://www.codesampler.com/oglsrc.htm http://www.humus.ca/index.php?page=3D http://www.clockworkcoders.com/oglsl/index.html http://www.ozone3d.net/tutorials/ http://http.developer.nvidia.com/GPUGems/gpugems part01.html http://http.developer.nvidia.com/GPUGems2/gpugems2 part01.html http://http.developer.nvidia.com/GPUGems3/gpugems3 part01.html http://encelo.netsons.org/programming/opengl http://encelo.netsons.org/blog A. Theodorou (LD2009) Le moderne GPU 24/10/09 105 / 105

×