introdução às gpus - cin.ufpe.brmarcelow/marcelow/programacao cg... · introdução às gpus...

23
1 Introdução às GPUs Marcelo Walter Marcelo Walter UFPE UFPE atualização/maio 2009 2 Graphics Pipeline Vertex Transformation Primitive Assembly and Rasterization Fragment Texturing and Coloring Raster Operations Fragments Colored Fragments Vertices Transformed Vertices Pixel Updates 3D Application or Game 3D API: OpenGL or Direct 3D 3D API commands FB

Upload: others

Post on 05-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

11

Introdução às GPUs

Marcelo WalterMarcelo WalterUFPEUFPE

atualização/maio 2009

2

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

FB

Page 2: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

22

3

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D API:OpenGL or Direct 3D

3D API commands

glBegin(GL_TRIANGLES);glVertex3f(0.0,0.0,0.0);glVertex3f(1.0,0.0,0.0);glVertex3f(0.5,1.0,0.0);...glEnd();

FB

3D Applicationor Game

4

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1

2

3

4

FB

Page 3: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

33

5

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1

2

3

4

1 2 3 134

FB

6

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1 2 3 134

FB

•transf em coordenadas câmera•iluminação

Page 4: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

44

7

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1’

2 3 1 34

FB

8

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1’2’

3 1 3 4

FB

Page 5: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

55

9

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1’2’3’

1 3 4

FB

10

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1’

2’

3’1 3 4

FB

•Conecta vértices em triângulos•recorte•Eliminação de faces traseiras•rasterização

Page 6: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

66

11

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1 3 4

1’

2’

3’

FB

12

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

Fragments

Colored Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

3 4

FB

•Executa interpolações•Determina cor final do fragmento

Page 7: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

77

13

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

Fragments

Colored Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

4

1’3’

FB

14

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

Fragments

Colored Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

1’3’4’

FB

Page 8: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

88

15

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

FB

•Depth buffer•Blending•Stencil operations

16

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

FB

Page 9: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

99

17

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

FB

18

Graphics Pipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

FB

Page 10: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1010

19

Graphics Pipeline: Paralelização

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

Vertex Transformation

Vertex Transformation

1

2

3

FB

20

Graphics Pipeline: Paralelização

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

Vertex Transformation

Vertex Transformation

1’

2’

3’

FB

Page 11: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1111

21

Graphics Pipeline: Paralelização

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

Fragment Texturing and Coloring

Fragment Texturing and Coloring

Fragment Texturing and Coloring

Fragment Texturing and Coloring

Fragment Texturing and Coloring

FB

22

Graphics Pipeline: Paralelização

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

Fragment Texturing and Coloring

Fragment Texturing and Coloring

Fragment Texturing and Coloring

Fragment Texturing and Coloring

Fragment Texturing and Coloring

FB

Page 12: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1212

23

ProgrammableProgrammable GraphicsPipeline

Vertex Transformation

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

CPU – GPU Boundary

ProgrammableVertex Processor

FB

// In:// eye_space position = TEX7// eye space T = (TEX4.x, TEX5.x, TEX6.x) denormalized// eye space B = (TEX4.y, TEX5.y, TEX6.y) denormalized// eye space N = (TEX4.z, TEX5.z, TEX6.z) denormalized

fragout frag program main(vf30 In) {

float m = 30; // power float3 hiCol = float3( 1.0, 0.1, 0.1 ); // lit color float3 lowCol = float3( 0.3, 0.0, 0.0 ); // dark color float3 specCol = float3( 1.0, 1.0, 1.0 ); // specular color

// Get eye-space eye vector. float3 e = normalize( -In.TEX7.xyz );

// Get eye-space normal vector. float3 n = normalize( float3(In.TEX4.z, In.TEX5.z, In.TEX6.z ) );

24

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

CPU – GPU Boundary

Vertex Processor

ProgramFB

ProgrammableProgrammable GraphicsPipeline

Page 13: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1313

25

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

CPU – GPU Boundary

Vertex Processor

Program

Vertex Processor

Vertex Processor

Vertex Processor

FB

ProgrammableProgrammable GraphicsPipeline

26

Primitive Assemblyand Rasterization

Fragment Texturing and Coloring

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

CPU – GPU Boundary

ProgrammableFragment Processor

Program

Vertex Processor

FB

ProgrammableProgrammable GraphicsPipeline

Vertex Processor

Page 14: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1414

27

Primitive Assemblyand Rasterization

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

CPU – GPU Boundary

Fragment Processor

Program

Vertex Processor

FB

ProgrammableProgrammable GraphicsPipeline

Vertex Processor

28

Primitive Assemblyand Rasterization

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

CPU – GPU Boundary

Fragment Processor

Program

Vertex ProcessorFragment Processor

Fragment Processor

Fragment Processor

FB

ProgrammableProgrammable GraphicsPipeline

Vertex Processor

Page 15: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1515

29

Graphics Pipeline: The BigPicture

Primitive Assemblyand Rasterization

Raster Operations

FragmentsColored

Fragments

Vertices

TransformedVertices

Pixel Updates

3D Applicationor Game

3D API:OpenGL or Direct 3D

3D API commands

CPU – GPU Boundary

Fragment ProcessorVertex Processor

FB

30

GPU como um processador de streams (fluxo)•Multiple programmable processing units•Connected by data flows

Application VertexProcessor

FragmentProcessor

Assem

bly &R

asterization

Framebuffer

Operations

Framebuffer

Textures

Program Program

Page 16: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1616

31

Gargalos: Computation Frequencies1’

2’

3’

Primitive Assemblyand Rasterization Fragment ProcessorVertex Processor

134

3 3 −> −> vváriosários

32

Processador de Vértices

•• Totalmente programTotalmente programávelável (SIMD / MIMD)(SIMD / MIMD)•• Processa Processa 4-vectors (RGBA / XYZW)4-vectors (RGBA / XYZW)•• NNão consegue ler informações ão consegue ler informações de de outros vérticesoutros vértices

• No edge, face, nor neighboring vertex info

•• NNão cria nem deleta vérticesão cria nem deleta vértices• 1 vertex in and 1 vertex out

•• Programas podem Programas podem ser ser carregados dinamicamentecarregados dinamicamente•• Vertex Texture FetchVertex Texture Fetch

• Consegue acessar texturas

Page 17: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1717

33

Processador de Vértices

Vertex Processor

temporary registers

inputparameters

Vertex inputattributes Vertex output

attributes

texture memory

34

Atributos de Entrada dos Vértices

Vertex Processor

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

texture coord 0

texture coord 1

texture coord 2

texture coord 3

texture coord 4

texture coord 5

texture coord 6texture coord 7

position

weight

normal

primary color

secondary color

fog

-

-

Page 18: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1818

35

Parâmetros de Entrada

Vertex Processor

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

parameter 0

...

-

...

parameter 1

parameter 2

parameter 3

parameter 4

parameter 127

• modelview• modelview inverse• skinning matrices• other parameters

36

Parâmetros de Entrada

Vertex Processor

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

temporary 0

...

-

...

temporary 1

temporary 2

temporary 3

temporary 4

temporary 12

Page 19: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

1919

37

Atributos de Saída dos Vértices

Vertex Processor

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

x y z w

texture coord 0

texture coord 1

texture coord 2

texture coord 3

texture coord 4

texture coord 5

texture coord 6texture coord 7

clip-space position

front primary color

fog

point size

-

front secondary color

back secondary color

back primary color

38

Processador de Fragmentos

•• Totalmente programTotalmente programávelável (SIMD)(SIMD)•• Processa Processa vectors (4 vectors (4 valores)(valores)(RGBA / XYZW)RGBA / XYZW)•• Acesso Acesso a a TexturasTexturas•• Render to TextureRender to Texture

• Fragmentos transformados em pixels são escritos numatextura e não enviados ao FB

•• Tipicamente mais Tipicamente mais útil útil do do que que o VPo VP• Mais pipelines de fragmentos do que de vértices

Page 20: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

2020

39

Processador de Fragmentos

Fragment Processor

temporary registers

inputparameters

Interpolated vertex attributes

texture memory

Fragment attributes

40

Atributos de Entrada

Fragment Processor

Interpolated vertex attributes

x y z w

x y z w

x y z w

x - - -

color

Secondary color

Texture coordinateFog coordinate

Page 21: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

2121

41

Atributos de Saída

Fragment Processor

Fragment attributes

Frag data

x y z w

z depth

color

x y z w

x y z w

42

Tipos de Dados

•• Scalars:Scalars:float/integer/booleanfloat/integer/boolean• Precisão de 32 ou 16 bits

• ATI suporta 24 bits

• GLSL tem inteiros de 16 bits

•• VectorVector• 3 ou 4 componentes

•• Arrays (de Arrays (de tamanho fixotamanho fixo))

•• No bit operationsNo bit operations•• Matrix data typesMatrix data types•• Texture data typeTexture data type

Page 22: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

2222

43

Data Binding

ModosModos::•• uniformuniform: o : o parparââmetro metro éé fixo dentro fixo dentro de de umauma

chamda glBeginchamda glBegin()()-glEnd-glEnd()()•• varyingvarying: dados : dados interpolados enviados aointerpolados enviados ao

programa programa de de fragmento fragmento (ex. (ex. cor cor pixel,pixel,coordenadas coordenadas de de texturatextura))

•• attributeattribute: dados per-vertex : dados per-vertex enviados enviados à à GPU GPU pelapelaCPU (CPU (coordenadas coordenadas de de vvéérticesrtices, , coordenadas coordenadas dedetexturastexturas, , normaisnormais, etc)., etc).

44

Data Binding

•• DireDireçãoção::•• inin: dados : dados enviados para dentro enviados para dentro dodo

programa programa (ex. vertex coordinates)(ex. vertex coordinates)•• outout: dados : dados enviados para fora enviados para fora do thedo the

programa programa (ex. depth)(ex. depth)•• inoutinout: ambos : ambos acima acima (ex. (ex. corcor))

Page 23: Introdução às GPUs - cin.ufpe.brmarcelow/Marcelow/programacao cg... · Introdução às GPUs Marcelo Walter UFPE atualização/maio 2009 2 Graphics Pipeline Ver tex Tr ansformation

2323

45

Operações e Fluxo de Controle

•• AritmAritmética ética usual e usual e operações algébricas especiaisoperações algébricas especiais(trigonometry, interpolation, discrete derivatives, etc)(trigonometry, interpolation, discrete derivatives, etc)

•• No integer modNo integer mod……•• for-loops, while-do loops, if-then-else statements.for-loops, while-do loops, if-then-else statements.•• discarddiscard permite desabilitar permite desabilitar um um fragmento fragmento e e encerrar encerrar oo

processamentoprocessamento•• Chamadas recursivas nChamadas recursivas não estão suportadasão estão suportadas•• Sempre uma funSempre uma função ção ““mainmain”” default default que comeque começa ça oo

programaprograma