antónio ramires fernandes & luís paulo santos – adaptado por alex f. v. machado computação...

20
António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Upload: internet

Post on 17-Apr-2015

112 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. MachadoAntónio Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado

Computação Gráfica

Pipeline Gráfico

Page 2: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Definições

• Pipeline:Como é chamado o conjunto das etapas de realização de um processo quando este envolve mais de um estágio.

• Pipeline Gráfico:Ou Pipeline de Renderização, se refere ao conjunto dos processos que acontecem via hardware por meio de uma placa de vídeo que envolve desde a definição de vértices até a renderização decorrente na tela.

Page 3: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Pipeline Gráfico

• O pipeline gráfico normalmente aceita como entrada cenários 3D e resulta em uma imagem raster 2D de saída.

• OpenGL e Direct3D são dois modelos de pipeline gráfico aprovados como padrão na indústria.

Page 4: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Pipeline Gráfico

• Uma representação possível:

Page 5: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Pipeline Gráfico

• A ordem das operações no OpenGL pode ser vista como seguindo a ordem representada pelo pipeline abaixo:

5

Page 6: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Display Lists

6

Os comandos (geometria ou pixels) podem ser compilados numa display listEstes comandos são armazenados de forma eficiente e enviados para o pipeline sempre que a display list é executada.

Page 7: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Evaluators

7

Toda a geometria deve ser descrita usando vértices. Curvas e superfícies paramétricas, que são inicialmente descritas usando pontos de controle e funções base, são convertidas em representações baseadas em vértices pelos evaluators.

Page 8: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Operações por vértice

8

Transformações geométricas e projecção no espaço do êcran.Iluminação (cálculo da cor do vértice)Coordenadas de textura

Page 9: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Montagem das primitivas

9

View Frustrum clipping.Back face culling, depth evaluation and perspective divisionOutput: Primitivas geométricas transformadas com info sobre cor e coordenadas de texturas para cada vértice

Page 10: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Operações por pixel

10

Transformação de formatos, transformações aplicadas às texturasLeituras do frame buffer.

Page 11: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Montagem de texturas

11

Texture objects.Muti-texturing.Essencialmente, optimizações ao armazenamento e acesso (read/write) a texturas

Page 12: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Rasterização

12

Conversão das primitivas geométricas em fragmentos.Cada fragmento corresponde a um pixel no frame buffer.Cálculo dos fragmentos correspondentes ao interior de um polígono.Cálculo cor, profundidade e coord. de textura por fragmento (interpolação)

Page 13: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Operações por fragmento

13

Aplicação de um texel a cada fragmento. Cálculo de nevoeiro (fog).Alpha-test e depth-buffer test (remoção de superfícies ocludidas)Blending, dithering and masking.Escrita final no frame buffer.

Page 14: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Redundância

• Todos os vértices são iluminados, antes de ser feito qualquer tipo de culling

• Todas as primitivas que passam o teste de culling dão origem a fragmentos e todos os fragmentos recebem uma cor, coordenadas de textura e um texel antes do teste do Z-buffer

Corolário:• São processados muitos vértices e fragmentos que

acabarão por não ser visíveis

14

Iluminação RasterView Frustrum

&Back face culling

Texturização Alpha & ZTest

Page 15: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

View Frustrum Culling

• Detectar, por software (i.e., no CPU), quais as primitivas geométricas que não são visíveis por não pertencerem ao campo de visão da câmara

15

Page 16: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

View Frustrum Culling

• Determinar a forma do frustrum

16

Definição do frustrumgluPerspective(fov, ratio, nearDist, farDist);gluLookAt(px,py,pz, lx,ly,lz, ux,uy,uz)

Page 17: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

View Frustrum Culling

• Objectos– Testar se TODOS os vértices de TODOS os polígonos

que constituem um objecto estão fora do frustrum não é suficiente para garantir que o objecto está totalmente fora do frustrum

– De qualquer forma, testar todos os vértices poderia levar mais tempo do que deixar ser o sistema gráfico a fazer o clipping

17

Page 18: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

View Frustrum Culling

• Objectos– Uma alternativa é calcular um volume elementar que

contenha toda a geometria do objecto e testar se este volume está dentro do frustrum

– Volumes elementares: esferas e Axis Aligned Boxes (AAB)

18

Dependendo da forma do objecto o volume pode ser mais ou menos eficaz, isto é, ser considerado dentro do frustrum sem que nenhum triângulo aí contido esteja efectivamente dentro do frustrum

Page 19: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

View Frustrum Culling

• Hierarquia de Volumes– Para cenas complexas pode-se justificar utilizar

hierarquias: se uma AAB de nível mais elevado não pertence ao frustrum, então não se justifica testar as interiores

19

Page 20: António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico

Shader

- O shader consiste em modificar o pipeline gráfico em dois pontos: Vértices e Pixels.

- No tratamento do vértice pode-se mudar a cor, vetor de reflexão, posição, etc. Tem melhor desempenho que o outro.

- No tratamento de pixels pode fazer alterações de cor e posição, é mais pesado pois executa em todos os pixels da imagem.

- Para programar Shader é necessário verificar se o programa usado (modelador 3d, game engine) tem suporte a shader e como importá-los.

- Depois pode-se programar em HLSL (específico do DirectX), GLSL (específico do OpenGL) ou NVidia's Cg (funciona como HLSL + GLSL).