O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera...

19
1 1 O Pipeline de Renderização Processamento Gráfico Marcelo Walter - UFPE 2 The Graphics Pipeline Processo de sintetizar imagens bidimensionais a partir de câmeras e objetos virtuais Visão em alto nível inicial para aprofundarmos nas próximas aulas Quais as etapas que constituem este processo??

Transcript of O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera...

Page 1: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

1

1

O Pipeline deRenderização

Processamento GráficoMarcelo Walter - UFPE

2

The Graphics Pipeline

• Processo de sintetizar imagensbidimensionais a partir de câmeras eobjetos virtuais

• Visão em alto nível inicial paraaprofundarmos nas próximas aulas

• Quais as etapas que constituem esteprocesso??

Page 2: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

2

3

The Graphics Pipeline

• Três estágiosconceituais

• O desempenho édeterminado peloestágio mais lento

• Sistemas gráficosmodernos:

software:

hardware:

Application

Geometry

Rasterizer

Image

4

The Graphics Pipeline

Page 3: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

3

1 - InstanciamentoTranslação, Rotação, Escala

Coordenadas de OBJETO(3D float)

coordenadas CÂMERA(3D)Após projeção:2D normalizadas

coordenadasTELA (2D integer)

Coordenadas UNIVERSO(3D float)

2 - Recorte

4 - Mapeamento Window/Viewport

3 - Projeção

ResumoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

Adaptação e melhoramentos de uma aula sobre o mesmoassunto (MIT - EECS 6.837 Durand and Cutler)

Page 4: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

4

TransformaçõesModelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

Objetos definidos no seupróprio sistema decoordenadas

Transformações demodelagem orientam osmodelos geométricos numsistema comum decoordenadas (UNIVERSO)

Coordenadas UniversoCoordenadas Objeto

Resumo

ResumoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

Vértices iluminados deacordo com as propriedadesgeométricas e de material

Modelo de Iluminação Local(Flat, Gouraud)

Page 5: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

5

ResumoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

Mapeamentodecoordenadasde Universopara câmera

Escolha daprojeção:perspectiva ouortográfica

ResumoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

TransformaçãoparaCoordenadasNormalizadas

Eliminação deobjetos inteiros epartes de objetoque estão fora doFrustum

câmera NormalizedDeviceCoordinates

Page 6: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

6

ResumoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

NDC Coordenadasde Tela

Os vértices são projetados paracoordenadas de tela

ResumoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

Rasterização das linhas em pixels epossível preenchimento

Interpolação dos valores(profundidade, normal, cor) dos vérticesconforme necessidade

Page 7: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

7

ResumoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

Z-buffer: cadapixel armazena acoordenada zmais próxima

Espaço de ObjetoTransformações

Modelagem

Iluminação(Shading)

TransformaçãoCâmera

Recorte

Projeção

Rasterização

Visibilidade

Espaço da câmera

Espaço de Universo

Espaço de recorte

Espaço de tela

Page 8: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

8

15

Sistemas de Coordenadas

• Objeto Local a cada objeto

• Universo Comum a todos os objetos

• Câmera Derivado a partir da especificação do Frustum de

visibilidade• Clip space/NDC

[-1,-1,-1] [1,1,1]• Tela

(0,0) [largura, altura]

16

O que são Transformações?

• Mapeiam pontos (x,y,z) em um sistema decoordenadas para pontos (x’,y’,z’) em outrosistema de coordenadas

• São utilizadas em CG para: Posicionar objetos na cena Mudar forma dos objetos Criar múltiplas cópias dos objetos Animações Projeção para câmera virtual

Page 9: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

9

17

Classes de Transformações

• Corpos rígidos Preservam distância e ângulos

Translação Rotação

Corpos Rígidos

18

Classes de Transformações

• Similares Preservam ângulos

Translação RotaçãoEscala uniforme

Corpos Rígidos

Similares

Page 10: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

10

19

Transformações Lineares

Translação RotaçãoEscala uniforme

Escala

Reflexão

Deslizamento

Corpos Rígidos

Similares Lineares

Escala ReflexãoDeslizamento(shear)

L(p+q) = L(p) + L(q)L(ap) = aL(p)

20

Transformações Afim

Translação RotaçãoEscala uniforme

Escala

Reflexão

Deslizamento

Corpos Rígidos

Similares Lineares

Afim

Preservam linhas paralelas

Page 11: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

11

21

Representando Transformações

• Genericamente em 2D

22

Transformações 2D - Translação

!

x'= x + tx

y'= y + ty

!

x '

y '

"

# $ %

& ' =

1 0

0 1

"

# $

%

& ' x

y

"

# $ %

& ' +

tx

ty

"

# $ %

& '

Page 12: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

12

23

Transformações 2D - Escala

• Coordenadas são multiplicadospelos fatores de escala

• Tipos de Escala Uniforme:

sx = sy Não-Uniforme

sx <> sy

!

x'= x " sx

y'= y " sy

!

x '

y '

"

# $ %

& ' =

sx 0

0 sy

"

# $

%

& ' x

y

"

# $ %

& ' +

0

0

"

# $ %

& '

24

Transformações 2D - Rotação

• Como chegar à matriz de rotação?

!!

!!

!"!"

!"!"

!"!"

""

cos.sin.'

sin.cos.'

sin.cos.sin.cos.'

sin.sin.cos.cos.'

)sin(.' )cos(.'

sin. cos.

yxy

yxx

rry

rrx

ryrx

ryrx

+=

#=

+=

#=

+=+=

==

!"!"!"

!"!"!"

sin.sincos.cos)cos(

cos.sinsin.cos)sin(

#=+

+=+

!

x '

y '

"

# $ %

& ' =

cos( )sin(

sin( cos(

"

# $

%

& ' x

y

"

# $ %

& ' +

0

0

"

# $ %

& '

Page 13: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

13

25

Transformações 2D – Reflexão

• Ao longo do eixo X

• Ao longo do eixo Y

• XY

!

x '

y '

"

# $ %

& ' =

1 0

0 (1

"

# $

%

& ' x

y

"

# $ %

& ' +

0

0

"

# $ %

& ' =

x

(y

"

# $

%

& '

!

x '

y '

"

# $ %

& ' =

(1 0

0 1

"

# $

%

& ' x

y

"

# $ %

& ' +

0

0

"

# $ %

& ' =

(x

y

"

# $

%

& '

!

x '

y '

"

# $ %

& ' =

(1 0

0 (1

"

# $

%

& ' x

y

"

# $ %

& ' +

0

0

"

# $ %

& ' =

(x

(y

"

# $

%

& '

26

Transformações 2D – Deslizamento

• Deslizamento na direção x

• Deslizamento na direção y!

x '

y '

"

# $ %

& ' =

1 Shx

0 1

"

# $

%

& ' x

y

"

# $ %

& ' +

0

0

"

# $ %

& ' =

x + y ( Shxy

"

# $

%

& '

!

x '

y '

"

# $ %

& ' =

1 0

Shy 1

"

# $

%

& ' x

y

"

# $ %

& ' +

0

0

"

# $ %

& ' =

x

Shx ( x + y

"

# $

%

& '

Page 14: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

14

27

Resumo Transformações 2D

• Notação matricial simplifica escrita Translação expressa como uma soma de vetores Escala e Rotação expressas como multiplicação

• Porém, é interessante uma notaçãouniforme e consistente Permitir que se expresse as três operações de

maneira idêntica Permitir que se expresse a combinação destas

três operações também de maneira idêntica• Como fazer isso?

28

Coordenadas Homogêneas

• Adiciona uma outra dimensão w• 2D -> 3D

(x,y) -> (x,y,w)• 3D -> 4D

(x,y,z) -> (x,y,z,w)• w = 0, pontos no infinito

Útil em projeções;• Homogeneizar: dividir por w• Em CG SEMPRE se usa w=1!

Page 15: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

15

29

Qual a vantagem?

! x

! y

! w

"

#

$ $ $

%

&

' ' '

=

1 0 tx

0 1 ty

0 0 1

"

#

$ $ $

%

&

' ' '

x

y

w

"

#

$ $ $

%

&

' ' '

! x

! y

! w

"

# $

% $

=

=

=

x + wtx

y + wty

w

! x

! w

! y

! w

=

=

xw + t

x

y

w + ty

" # $

Translação agora também pode serrepresentada por multiplicação de matrizes!!

30

Escala – Coord. Homogêneas

! x

! y

! w

"

#

$ $ $

%

&

' ' '

=

sx0 0

0 sy0

0 0 1

"

#

$ $ $

%

&

' ' '

x

y

w

"

#

$ $ $

%

&

' ' '

! x

! y

! w

"

# $

% $

=

=

=

sxx

syy

w

! x

! w

! y

! w

=

=

sx

xw

sy

y

w

" # $

Page 16: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

16

31

Rotação – Coord. Homogêneas

! x

! y

! w

"

#

$ $ $

%

&

' ' '

=

cos( ) sin( 0

sin( cos( 0

0 0 1

"

#

$ $ $

%

&

' ' '

x

y

w

"

#

$ $ $

%

&

' ' '

! x

! y

! w

"

# $

% $

=

=

=

cos&x ' sin&y

sin &x + cos&y

w

! x

! w

! y

! w

=

=

cos" xw# sin" y

w

sin" xw

+ cos" y

w

$ % &

32

Composição de Transformações

!

p'= T(Sp) = TSp

Escala seguida de Translação

Page 17: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

17

33

Composição de Transformações

!

p'= S(Tp) = STp

Translação seguida de Escala

34

• Multiplicação de Matrizes não écomutativa

• Ordem das operações influenciadiretamente Rotação seguida de translação é diferente

de translação seguida de rotação

• http://www.cs.princeton.edu/~min/cs426/jar/transform.html

Composição de Transformações

Page 18: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

18

35

Translação/Escala 3D

• Translação – glTranslatef(tx, ty, tz)

T(tx, ty, tz):

• Escala – glScalef(Sx, Sy, Sz)

S(Sx, Sy, Sz):!

1 0 0 tx

0 1 0 ty

0 0 1 tz

0 0 0 1

"

#

$ $ $ $

%

&

' ' ' '

!

Sx 0 0 0

0 Sy 0 0

0 0 Sz 0

0 0 0 1

"

#

$ $ $ $

%

&

' ' ' '

36

Rotação 3D

• Rotação

!

zR (") :

cos" #sin" 0 0

sin" cos" 0 0

0 0 1 0

0 0 0 1

$

%

& & & &

'

(

) ) ) )

!!!!

"

#

$$$$

%

&

'

1000

0cossin0

0sincos0

0001

:)(x ((

(((R

!!!!

"

#

$$$$

%

&

'

1000

0cos0sin

0010

0sin0cos

:)(y ((

((

(R

Page 19: O Pipeline de Renderizaçãomarcelow/Marcelow/programacao_pg_files/intropi… · Frustum câmera Normalized Device Coordinates. 6 Resumo Transformações Modelagem Iluminação (Shading)

19

37

Rotação - Eixo genérico

• glRotatef(angle,x,y,z)

onde c = cos θ s = sin θ

Fórmula de Rodrigues