Computação Gráfica Pipeline Gráfico.

Slides:



Advertisements
Apresentações semelhantes
Computação Gráfica I Conteúdo: Professor: - Objetos gráficos espaciais
Advertisements

Inteligência Artificial
Estruturas de Repetição
OpenGL Computação Gráfica.
Introdução à Programação usando Processing Programação Gráfica 2D Estrutura de Seleção Exercício Estrutura de Seleção 2º Semestre 2009 > PUCPR > Design.
10º CAPÍTULO Segmentação de imagem.
Ferramenta de aprovisionamento de redes de cliente
Integração Numérica – Áreas e Equações
Vetores Representação e características Operações I Decomposição
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
SISTEMAS DE EQUAÇÕES.
António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico.
Projeções e OpenGL Alex F. V. Machado.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
Clipping. b. Triangle Strips Idéia fundamental: minimizar volume de vértices e consequentemente, minimizar cálculos de iluminação, normais, clipping,
COMPUTAÇÃO GRÁFICA.
Introdução a OpenGL (parte final).
DIAGRAMA DE ATIVIDADES
DIM102 1 Curvas e Superfícies 35T56 – Sala 3F4 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.
Sensibilidade / Especificidade
Trabalho 2 – Imagens Panorâmicas
Descarte por visibilidade
Introdução à Lógica de Programação (cont.)
1 Sabendo-se que os pratos das balanças estão em equilíbrio, você seria capaz de dizer: Quantos quadrados corresponde um círculo ? Dica Mais dicas Elaboração:
Computação Gráfica: Rendering e Rasterização
Organização da Memória Principal
Lista Encadeada Circular Lista Duplamente Encadeada
Iluminação e FotoRealismo: R adiosidade Luís Paulo Peixoto dos Santos
Iluminação e FotoRealismo: Radiosidade
An Improved Illumination Model for Shaded Display
Iluminação e FotoRealismo: BRDF e Equação de Rendering
Computação Gráfica Iluminação.
Computação Gráfica Desempenho.
Computação Gráfica Iluminação e Texturas.
Geração de Geometria - Terrenos
Listas Encadeadas.
EXERCÍCIOS PARA GUARDA-REDES
Expressão algébrica a partir da representação gráfica da função
Análise Semântica e Representação Intermédia
Introdução à Computação Gráfica Projeções
Fundamentos da Computação Gráfica Thiago Marques Toledo
Faculdade de Computação Universidade Federal de Mato Grosso do Sul
Salas de Matemática.
Funções e suas propriedades
Busca com informação e exploração
EXERCÍCIOS PARA GUARDA-REDES
Técnicas de Modelagem para Aplicações em Computação Gráfica
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Potencial elétrico Física Giovanni Ávila.
Trabalho e Potencial elétrico (Capítulo 3)
A transformada de Laplace
Computação Gráfica Aula 3 Transformações Geométricas
Computação Gráfica – Visibilidade
Organização e Arquitetura de Computadores
TRANSFORMAÇÕES DE TENSÕES
Preleções Científicas Universidade Estadual do Ceará Pró-Reitoria de Extensão Integrais Múltiplas e Integrais de Volume Ministrante: Prof. K. David Sabóia.
Linguagem e Ambiente Scratch
Hardware assisted rendering of csg models
Jaime Vinícius de Araújo Cirilo- Engenharia de Produção
Mapeamento de Textura: Aspectos Gerais
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Computação Gráfica – Transformações Projetivas
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
IA725 – Computação Gráfica I Mapeamento de textura 27/05/2008
Operações para entrada de dados –Compilação de dados codificação de dados geográficos de uma forma conveniente para o sistema; incluem a digitalização,
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Transcrição da apresentação:

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: DI-UM Computação Gráfica 08/09

Display Lists Os comandos (geometria ou pixels) podem ser compilados numa display list Estes comandos são armazenados de forma eficiente e enviados para o pipeline sempre que a display list é executada. DI-UM Computação Gráfica 08/09

Evaluators Toda a geometria deve ser descrita usando vértices. Curvas e superfícies paramétricas, que são inicialmente descritas usando pontos de controlo e funções base, são convertidas em representações baseadas em vértices pelos evaluators. DI-UM Computação Gráfica 08/09

Operações por vértice Transformações geométricas e projecção no espaço do êcran. Iluminação (cálculo da cor do vértice) Coordenadas de textura DI-UM Computação Gráfica 08/09

Montagem das primitivas View Frustrum clipping. Back face culling, depth evaluation and perspective division Output: Primitivas geométricas transformadas com info sobre cor e coordenadas de texturas para cada vértice DI-UM Computação Gráfica 08/09

Operações por pixel Transformação de formatos, transformações aplicadas às texturas Leituras do frame buffer. DI-UM Computação Gráfica 08/09

Montagem de texturas Texture objects. Muti-texturing. Essencialmente, optimizações ao armazenamento e acesso (read/write) a texturas DI-UM Computação Gráfica 08/09

Rasterização 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) DI-UM Computação Gráfica 08/09

Operações por fragmento 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. DI-UM Computação Gráfica 08/09

Redundância Iluminação View Frustrum & Back face culling Raster Texturização Alpha & Z Test 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 DI-UM Computação Gráfica 08/09

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 DI-UM Computação Gráfica 08/09

View Frustrum Culling Determinar a forma do frustrum Definição do frustrum gluPerspective(fov, ratio, nearDist, farDist); gluLookAt(px,py,pz, lx,ly,lz, ux,uy,uz) Hnear = 2 * tan(fov / 2) * nearDist Wnear = Hnear * ratio Hfar = 2 * tan(fov / 2) * farDist Wfar = Hfar * ratio DI-UM Computação Gráfica 08/09

View Frustrum Culling Determinar os 6 planos que definem o frustrum: Determinar os 8 pontos que constituem os cantos do frustrum Extrair as 6 equações do plano (Nota: as normais devem apontar para dentro do frustrum) DI-UM Computação Gráfica 08/09

View Frustrum Culling fc = p + d * farDist nc = p + d * nearDist uHf2 = up * Hfar/2 uHn2 = up * Hnear/2 rHf2 = right * Wfar/2 rHn2 = right * Wnear/2 ftl = fc + (uHf2) - (rHf2) ntl = nc + (uHn2) - (rHn2) ftr = fc + (uHf2) + (rHf2) ntr = nc + (uHn2) + (rHn2) fbl = fc - (uHf2) - (rHf2) nbl = nc - (uHn2) - (rHn2) fbr = fc - (uHf2) + (rHf2) nbr = nc - (uHn2) + (rHn2) DI-UM Computação Gráfica 08/09

View Frustrum Culling Uma vez determinados os planos podemos testar se as primitivas geométricas estão dentro ou fora do frustrum Utilizamos a distância com sinal para determinar de que lado do plano está um ponto: Se a distância é positiva encontra-se do lado para o qual a normal aponta Se é negativa então encontra-se do outro lado No caso do view frustrum extraímos as equações dos 6 planos de forma a que a normal aponte para dentro do frustrum Distância negativa Distância positiva DI-UM Computação Gráfica 08/09

View Frustrum Culling Pontos: Um ponto está dentro do frustrum se a sua distância for positiva a todos os 6 planos int pointInFrustum(Vec3 &p) { int result = INSIDE; for(int i=0; i < 6; i++) { if (pl[i].distance(p) < 0) return OUTSIDE; } return(result); } DI-UM Computação Gráfica 08/09

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 DI-UM Computação Gráfica 08/09

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) 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 DI-UM Computação Gráfica 08/09

View Frustrum Culling Esferas A esfera está fora do frustrum se o seu centro está do lado errado de pelo menos um dos planos e o raio é menor que a distância do centro ao plano int sphereInFrustum(Vec3 &p, float radius) { float distance; int result = INSIDE; for(int i=0; i < 6; i++) { distance = pl[i].distance(p); if (distance < -radius) return OUTSIDE; } return(result); DI-UM Computação Gráfica 08/09

View Frustrum Culling AAB Uma AAB pode ter todos os vértices fora do frustrum e ainda assim pertencer ao frustrum DI-UM Computação Gráfica 08/09

View Frustrum Culling AAB Solução: Rejeitar uma AAB apenas se todos os seus vértices estão do lado errado do mesmo plano! Esta abordagem leva a aceitar algumas AAB que não pertencem ao frustrum DI-UM Computação Gráfica 08/09

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 DI-UM Computação Gráfica 08/09

Referências OpenGL Reference Manual, OpenGL Architecture Review Board. OpenGL Programming Guide (The Red Book) www.lighthouse3d.com DI-UM Computação Gráfica 08/09