SlideShare une entreprise Scribd logo
1  sur  132
Télécharger pour lire hors ligne
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
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
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
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
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
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
Introduzione   Primo approccio



Primo aprroccio
La GPU oggi


Caratteristiche salienti delle Graphics Processing Unit attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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 attuali:
     Vertex, Geometry e Fragment shader (architettura uni
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
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)            Le moderne GPU              24/10/09   6 / 105
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo shader




     Il sorgente  speci
cato dal programmatore
                 e
     Viene eseguito in parallelo su pi unit autonome
                                      u     a
     Pu modi
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
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (architettura uni
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
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (architettura uni
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
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (architettura uni
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
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (architettura uni
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
Introduzione   Primo approccio



Primo approccio
Lo stream processor




     Esegue un qualsiasi tipo di shader (architettura uni
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
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                 (b) Wireframe con tassellazione



    A. Theodorou (LD2009)             Le moderne GPU                         24/10/09    10 / 105
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
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
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
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
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
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
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
cata
    Design superscalare




                            (r) G80    (s)                (t) G92
                                       R600XT

    A. Theodorou (LD2009)             Le moderne GPU                 24/10/09   16 / 105
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
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
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
La GPU in azione   Potenza elaborativa



Potenza elaborativa
Riferimenti numerici

  Processore                Core                   Transistor (M)        Frequenza (MHz)
  York
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
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
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
La GPU in azione   Potenza elaborativa



Potenza elaborativa
Legge di Moore




    A. Theodorou (LD2009)            Le moderne GPU                  24/10/09   22 / 105
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
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
che a standard aperto: OpenCL (Open Computing Language)
     Librerie dei produttori di HW: CUDA e Brook++/CAL
     Middleware
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
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
catamente per applicazioni GPGPU tramite CUDA
La controparte AMD  chiamata FireStream
                     e
    A. Theodorou (LD2009)                 Le moderne GPU                           24/10/09   25 / 105
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
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
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
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
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
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
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: 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
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
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
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
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
La GPU in azione   Applicazioni general purpose



Applicazioni GPGPU
Video encoder




 Badaboom ed Avivo Converter sfruttano la GPU durante la codi
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 applicazioni dal sito CUDA Zone (Ottobre 2009)
     A. Theodorou (LD2009)            Le moderne GPU                           24/10/09   38 / 105
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Contenu connexe

Similaire à Le moderne GPU - LD2009

Algoritmi ed architetture per la risoluzione di problemi di visual search
Algoritmi ed architetture per la risoluzione di problemi di visual searchAlgoritmi ed architetture per la risoluzione di problemi di visual search
Algoritmi ed architetture per la risoluzione di problemi di visual searchAlessandro D'Ambrosio
 
Morello020408 B
Morello020408 BMorello020408 B
Morello020408 Bguestb48c1
 
Fpga il componente universale 2010-11-09
Fpga  il componente universale   2010-11-09Fpga  il componente universale   2010-11-09
Fpga il componente universale 2010-11-09Ionela
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesMaurizio Antonelli
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86Massimiliano Torregiani
 
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Daniele Ferla
 
Object printing for dummies [veneziacamp format]
Object printing for dummies [veneziacamp format]Object printing for dummies [veneziacamp format]
Object printing for dummies [veneziacamp format]Leo Sorge
 
Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...
Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...
Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...laboratoridalbasso
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embeddedDaniele Costarella
 
RGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 SintheraRGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 SintheraLuca Turco
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeDeveler S.r.l.
 
IOT: protocolli long range
IOT: protocolli long rangeIOT: protocolli long range
IOT: protocolli long rangeFabio Gatti
 

Similaire à Le moderne GPU - LD2009 (20)

Algoritmi ed architetture per la risoluzione di problemi di visual search
Algoritmi ed architetture per la risoluzione di problemi di visual searchAlgoritmi ed architetture per la risoluzione di problemi di visual search
Algoritmi ed architetture per la risoluzione di problemi di visual search
 
Morello020408 B
Morello020408 BMorello020408 B
Morello020408 B
 
Fpga il componente universale 2010-11-09
Fpga  il componente universale   2010-11-09Fpga  il componente universale   2010-11-09
Fpga il componente universale 2010-11-09
 
Io, Android
Io, AndroidIo, Android
Io, Android
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slides
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86
 
Presentazione tesi 2.0
Presentazione tesi 2.0Presentazione tesi 2.0
Presentazione tesi 2.0
 
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
 
Scheda video word
Scheda video wordScheda video word
Scheda video word
 
Object printing for dummies [veneziacamp format]
Object printing for dummies [veneziacamp format]Object printing for dummies [veneziacamp format]
Object printing for dummies [veneziacamp format]
 
Multimedia con GNU/Linux
Multimedia con GNU/LinuxMultimedia con GNU/Linux
Multimedia con GNU/Linux
 
Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...
Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...
Ldb OpenLab_Corcione-introduzione ai materiali adottati nella modellazione e ...
 
Raspy Fi: Open source never sounded so good (by Michelangelo Guarise)
Raspy Fi: Open source never sounded so good (by Michelangelo Guarise)Raspy Fi: Open source never sounded so good (by Michelangelo Guarise)
Raspy Fi: Open source never sounded so good (by Michelangelo Guarise)
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
 
RGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 SintheraRGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 Sinthera
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
 
IOT: protocolli long range
IOT: protocolli long rangeIOT: protocolli long range
IOT: protocolli long range
 
Thread
ThreadThread
Thread
 
E1 Memorie
E1 MemorieE1 Memorie
E1 Memorie
 
Cuda 16 12 09
Cuda 16 12 09Cuda 16 12 09
Cuda 16 12 09
 

Le moderne GPU - LD2009

  • 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. 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. 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. 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. 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. 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. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 10. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 13. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 16. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 19. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 22. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 25. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 28. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 31. Introduzione Primo approccio Primo aprroccio La GPU oggi Caratteristiche salienti delle Graphics Processing Unit attuali: Vertex, Geometry e Fragment shader (architettura uni
  • 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. che A. Theodorou (LD2009) Le moderne GPU 24/10/09 4 / 105
  • 34. Introduzione Primo approccio Primo approccio La pipeline
  • 35. ssa A. Theodorou (LD2009) Le moderne GPU 24/10/09 5 / 105
  • 36. Introduzione Primo approccio Primo approccio La pipeline programmabile (SM 4.0) A. Theodorou (LD2009) Le moderne GPU 24/10/09 6 / 105
  • 37. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 38. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 41. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 44. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 47. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 50. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 53. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 56. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo shader Il sorgente speci
  • 59. cato dal programmatore e Viene eseguito in parallelo su pi unit autonome u a Pu modi
  • 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. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  • 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. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  • 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. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  • 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. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  • 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. Introduzione Primo approccio Primo approccio Lo stream processor Esegue un qualsiasi tipo di shader (architettura uni
  • 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. Introduzione Primo approccio Primo approccio Architettura a shader uni
  • 72. cati Figura: Architettura discreta Figura: Architettura uni
  • 73. cata A. Theodorou (LD2009) Le moderne GPU 24/10/09 9 / 105
  • 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. 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. 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. 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. 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. 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. 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. 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. cata Design superscalare (r) G80 (s) (t) G92 R600XT A. Theodorou (LD2009) Le moderne GPU 24/10/09 16 / 105
  • 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. 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. 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. La GPU in azione Potenza elaborativa Potenza elaborativa Riferimenti numerici Processore Core Transistor (M) Frequenza (MHz) York
  • 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. 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. 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. La GPU in azione Potenza elaborativa Potenza elaborativa Legge di Moore A. Theodorou (LD2009) Le moderne GPU 24/10/09 22 / 105
  • 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. 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. che a standard aperto: OpenCL (Open Computing Language) Librerie dei produttori di HW: CUDA e Brook++/CAL Middleware
  • 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. 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. catamente per applicazioni GPGPU tramite CUDA La controparte AMD chiamata FireStream e A. Theodorou (LD2009) Le moderne GPU 24/10/09 25 / 105
  • 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. 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. 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. 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. 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. 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. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Ricostruzione tomogra
  • 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. 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. 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. 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. 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. La GPU in azione Applicazioni general purpose Applicazioni GPGPU Video encoder Badaboom ed Avivo Converter sfruttano la GPU durante la codi
  • 110. ca video A. Theodorou (LD2009) Le moderne GPU 24/10/09 37 / 105
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Sommario Tipi di dato Inizializzatori e costruttori Quali
  • 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. 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. 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. Cenni sulla programmazione GL Shading Language 1.20 GL Shading Language 1.20 Quali
  • 146. catori attribute Informazioni destinate al vertex shader che variano spesso nell'applicazione, anche tra la de
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. ssa A. Theodorou (LD2009) Le moderne GPU 24/10/09 70 / 105
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Sorgenti di esempi Gouraud e Phong shading Gouraud e Phong shading Screenshot A. Theodorou (LD2009) Le moderne GPU 24/10/09 85 / 105
  • 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. 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. 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. 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. 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. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Screenshot A. Theodorou (LD2009) Le moderne GPU 24/10/09 91 / 105
  • 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. 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. 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. Sorgenti di esempi Normal e parallax mapping Normal e parallax mapping Screenshot A. Theodorou (LD2009) Le moderne GPU 24/10/09 95 / 105
  • 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. 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. 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. 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. 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. 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. 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. 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. Sorgenti di esempi Toon shading Toon shading Screenshot (e) Final A. Theodorou (LD2009) Le moderne GPU 24/10/09 104 / 105
  • 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