Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)
description
Transcript of Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)
21/04/23 OpenGl 1/24
Grasielle Valença (gval)Marcela Bezerra (mbs)
Thiago Burgo (tbb)Paulo Thiago (ptgs)
Introdução a MultimídiaOpenGL
OpenGl 2/24
Roteiro
• Introdução– Conceito e Motivação– História– Comparativo - Análise de Competidores(Directx)– Utilização de Mercado
• Como Utilizar– Operação Normal– Principais Conceitos OpenGL– Formas de Representação Gráfica
• Representação Gráfica Bidimensional• Representação Gráfica Tridimensional
– Bibliotecas– Características do OpenGL
• Estado da Arte• Dúvidas?
Introdução
21/04/23 OpenGl 4/24
Conceito e Motivação
• O sistema gráfico mais popular atualmente e o OpenGL (GL - Graphics Library) que provê características avançadas e pode ser utilizado em modo imediato ou com display list.
• Oferecendo uma interface entre o software e o hardware gráfico, que aproveita recursos gráficos do um componente .
• OpenGL é um padrão relativamente novo e é baseado na biblioteca GL das workstations IRIS da Silicon Graphics.
21/04/23 OpenGl 5/24
Conceito e Motivação
• Código fonte disponível (MesaGL ou Mesa3D) • É um pacote de ferramentas que consiste em
um conjunto de procedimentos e funções.• Permite manipulação gráficas fundamentais em
2D, 3D ao X.• Inclui especificação de parâmetros(matrizes de
transformação e coeficientes de iluminação)• Métodos de Antialiasing e operações sobre
pixels. • Pode ser usado com ou sem sistema de janela.
21/04/23 OpenGl 6/24
Conceito e Motivação
• Ferramentas CAD.• Realidade virtual.• Simulações e visualizações científicas.• Desenvolvimento no campo dos videogames.• API implementada para várias plataformas• ARB (Architecture Review Board)
– 3DLabs, Apple, ATI, Dell Computer, Evans & Sutherland, Hewlett- Packard, IBM, Intel, Matrox, Microsoft, NVIDIA, SGI e Sun.
21/04/23 OpenGl 7/24
História
• Na década de 1980, era um verdadeiro desafio desenvolver softwares capazes de manipular uma vasta gama de hardwares gráficos: Os desenvolvedores de software escreviam interfaces gráficas e controladoras específicas para cada componente, um processo caro e cansativo.
21/04/23 OpenGl 8/24
História
• Em 1990, a Silicon Grafics (SGI) foi líder no desenvolvimento de gráficos 3D. A API gráfica da empresa, o Iris GL, era considerado o Estado da Arte da época.
• A API concorrente, PHIGS, além de difícil de usar, estava defasada em funcionalidade em relação ao OpenGL, que já fornecia renderização imediata.
21/04/23 OpenGl 9/24
História
• SGI converteu o padrão IrisGL em um padrão aberto, para competir com o hardware para aplicações 3D suportadas pelas extensões do PHIGS (Sun Microsystems, HP e IBM ) .
• APIs programáveis Íris Inventor e Íris Performer, para manter os clientes presos ao hardware da SGI e da IBM por alguns anos até evoluir com o suporte de vendas do OpenGL.
• O Padrão OpenGL é lançado em 1º de Julho de 1992.
21/04/23 OpenGl 10/24
História
• A Microsoft libera o Direct3D em 1995, o que se tornaria o concorrente principal da tecnologia OpenGL. Em 1997, a Microsoft e a SGI iniciaram o Projeto Farenheit, que tinha com objetivo unificar as tecnologias gráficas, com a inclusão da HP em 1998. O projeto é abandonado em 1999.
21/04/23 OpenGl 11/24
História
• Versão 1.3 – Foi liberada em 14/08/2001 sendo a terceira revisão desde a
original 1.0.– Compatível com as versões anteriores. – Mapeamento de textura previamente definido
• Compressão de Textura, Texturas mapeadas em um cubo, Multisample, MultiTextura.
• Versão 1.4– Lançada em 24/07/2002, também compatível com as versões
anteriores. – Fixed-function GL pipeline é encontrada nessa versão– Programa de extensão de vértice
21/04/23 OpenGl 12/24
História
• Versão 1.5– Lançada em 29/07/2003,também compatível com as
versões anteriores. – Linguagem de especificação para OpenGL Shading
e o GL_ARB_shader_objects, GL_ARB_vertex_shader, and GL_ARB_fragment_shader.
– Shading, de alto-nível, pode ser carregada e usada no lugar do fixed-function pipeline.
• Versão 2.0
Como Utilizar
21/04/23 OpenGl 14/24
Operação Normal
• Seqüência de operações:– Abra uma janela gráfica;– Utilizar uma ou mais bibliotecas auxiliares que
permitam abrir uma janelas na tela do computador:• tais como GLUT, WGL (para Windows), glX (para o sistema
XWindow), AGL (para Apple) ou PGL (para OS/2).
– Prepare OpenGL para desenhar na janela– Defina como OpenGL irá desenhar nesta janelapor
exemplo, se será utilizado double buffering ou single buffering, e se as imagens serão geradas utilizando mapa de cores indexado ou diretamente no formato RGB.
21/04/23 OpenGl 15/24
Operação Normal
– Defina o sistema de coordenadas e o estado inicial do OpenGL
– Defina limites inferior e superior dos eixos coordenados. Defina as fontes de luz existentes, cores para desenho de polígonos, modos de preenchimento de superfícies etc.
• Loop– Trate os eventos de mouse e teclado;– Mude a cena com base nos eventos
ocorridos;– Redesenhe a cena com OpenGL.
21/04/23 OpenGl 16/24
Principais Conceitos OpenGL• Modos de desenho de pontos
(escrita/xor/transparência);• Ajuste de largura de linhas;• Aplicação de transparência ;• Ativação/desativação de serrilhamento (aliasing);• Mapeamento de superfícies com textura;• Seleção de janela de desenho;• Manipulação de fontes/tipos de iluminação e
sombreamento;• Transformação de sistemas de coordenadas;• Transformações em perspectiva;• Combinação de imagens (blending).
21/04/23 OpenGl 17/24
Formas de Representação Gráfica• Representação Gráfica Bidimensional
– Se caracteriza por transferência de mapa de bits entre áreas de memória, onde cada mapa de bits existente na memória do computador ou da placa de vídeo representa uma figura.
– Realizando a transferência de bits a uma taxa de constante, é possível reproduzir a sensação de animação igual ocorre com os desenhos animados.
– Sprite é o nome dado ao composto de uma seqüência de imagens
– Usa-se uma técnica conhecida como double buffering
21/04/23 OpenGl 18/24
Formas de Representação Gráfica• Representação Gráfica Bidimensional • Dois Tipos de Cenários:
– Cenários retangulares (2D): • Os baseados em textura possuem uma figura em
background, que pode ou não se movimentar dando a
impressão de que o mundo está se mexendo. • Os baseados em tiles dividem o mundo em pequenos
retângulos, onde cada um deles cuida de exibir a figura de
fundo e os sprites que estejam em seu domínio. – Cenários isométricos:utilizam uma visão em
perspectiva, o que cria a impressão de profundidade no jogo e possibilita uma boa jogabilidade.
21/04/23 OpenGl 19/24
Formas de Representação Gráfica• Representação Gráfica Tridimensional
– Caracteriza por objetos representados por malhas de triângulos.
– Para cada triângulo, texturas podem ser mapeadas fazendo com que os objetos fiquem mais reais.
– Técnicas como iluminação dinâmica, neblina volumétrica, skybox, espelhamento e sistema de partículas.
– Cenários:• Cenários puramente 3D;• Cenários isométricos.
21/04/23 OpenGl 20/24
Formas de Representação Gráfica
• Representação Gráfica Tridimensional– Possuem um hardware especializado para
realizar as operações que envolvem cálculos 3D.
– Código dos jogos tridimensionais é mais complexo que os 2D.
21/04/23 OpenGl 21/24
Características do OpenGL• Vista do Programador
• Especificar as características dos objetos a serem visualizados• Descrição das suas propriedades• Determina a forma como as cenas criadas devem ser
visualizadas• Câmara virtual simples
• Posicionamento e orientação são realizados através de um número reduzido de funções.
• Funções para entrada através de um modelo de evento• Máquina de Estados
• Dados que processa são a descrição de objetos geométricos (como segmentos de reta e polígonos) ou indivisíveis (como mapas de bits).
• Pipeline Gráfico
21/04/23 OpenGl 22/24
Pipeline Gráfico
21/04/23 OpenGl 23/24
Pipeline Gráfico•Vertex Transformation
•Dados de entrada:• Vértices com as coordenadas tal como especificadas na aplicação, e outros atributos como normais, cores,
coordenadas de textura.• Estado do OpenGL
•Operações:• Transformação do vértice de acordo com as matrizesModelView e Projection;• Transformação de normais;• Iluminação do vértice;• Geração/Transformação das coordenadas de textura.
21/04/23 OpenGl 24/24
Pipeline Gráfico•Primitive Assembly
•Dados de entrada:•Vértices transformados•Informação de conectividade (GL_TRIANGLE, GL_QUAD,...)
•Operações:•Construção de primitivas gráficas com vértices já transformados• Clipping contra view frustum• Back face culling• Early Z culling
21/04/23 OpenGl 25/24
Pipeline Gráfico•Rasterization
•Dados de Entrada•Primitivas construídas na fase anterior
•Operações•Determina o conjunto de pixels cobertos por uma primitivageométrica•Para cada pixel é calculado o seu conjunto de atributos por•Interpolação dos atributos dos vértices da primitiva
•Resultado: conjunto de fragmentos
21/04/23 OpenGl 26/24
Pipeline Gráfico•Texturização e Cor
•Os dados de entrada desta fase são os valores interpolados na fase anterior para cada fragmento•Nesta fase aplicam-se as texturas e calcula-se a cor do fragmento.
•Raster Operations•Dados de entrada
• Localização do pixel• fragmentos processados (cor e profundidade)
•Operações• Teste de scissor, alpha, stencil, profundidade (sem early Z cull)• Operações de blending: combina a cor do fragmento com a•Cor do pixel existente no color buffer
21/04/23 OpenGl 27/24
Pipeline Gráfico• Resumo Visual
21/04/23 OpenGl 28/24
Tipos de Funções OpenGL•Funções primitivas
•Geométricas •Imagem
•Funções de Atributos•Aspecto gráfico das primitivas
•Funções de Visualização •Propriedades da câmara virtual
•Funções de Apresentação e Interação•Permitem controlar as janelas e empregar mouses e teclados
•Funções de Controle•Determinar as características de uma dada implementação
21/04/23 OpenGl 29/24
Biblioteca• GLU - OpenGL Utility Library: Define as matrizes
para projeção e orientação da visualização, e fazer o rendering de uma superfície.
• GLUT - OpenGL Utility Toolkit: – é um toolkit independente de plataforma– que inclui alguns elementos GUI (Graphical User Interface),
• pop-up e suporte para joystick. – Escrita por Mark Kilgard.– O seu principal objetivo é esconder a complexidade das APIs
dos diferentes sistemas de janelas.– As funções usam o prefixo glut. – É interessante comentar que a GLUT substitiu a GLAUX.
21/04/23 OpenGl 30/24
Biblioteca• GLX - OpenGL Extension to the X Window System
• OpenGL para máquinas que usam o X Window System• Funções GLX usam o prefixo glX. Para Microsoft Windows
95/98/NT• Funções WGL fornecem as janelas para a interface OpenGL• IBM/OS2, a PGL é a Presentation Manager para a interface
OpenGL, e suas funções usam o prefixo pgl.• Apple, a AGL é a interface para sistemas que suportam
OpenGL, e as funções AGL usam o prefixo agl
21/04/23 OpenGl 31/24
Biblioteca• FSG - Fahrenheit Scene Graph
• Toolkit orientado à objetos e baseado em OpenGL• Fornece objetos e métodos para a criação de aplicações
gráficas 3D interativas• Escrito em C++• Habilidade de trocar dados em outros formatos gráficos
Iluminação
21/04/23 OpenGl 32/24
• Essencial para a representação de um ambiente 3D• Maior realidade = Maior custo computacional e menos
performance• O modelo de iluminação e sombreamento do OpenGL foi
projetado para ser extremamente eficiente e muito geral.• O OpenGL prioriza a performance e por isso optou por usar um
modelo de iluminação simplista e pouco realista, o Modelo de Phong (Iluminação local)
• O modelo de iluminação local considera que a cor de um determinado ponto depende somente da sua relação com as fontes de luz contidas na cena, sem considerar os outros objetos.
Iluminação
21/04/23 OpenGl 33/24
• O modelo adotado pelo OpenGL não modela sombras, reflexão diretas e indiretas, refração e outros fenômenos físicos, no entanto disponibiliza truques para simular esses efeitos
Iluminação – Fontes de Luz
21/04/23 OpenGl 34/24
• No Mundo Real:• Fontes luminosas podem assumir o diferentes
formas, tamanhos e intensidades/cores.• A natureza complexa da luz torna sua
representação complexa. Muitas variáveis devem ser consideradas.
• No OpenGL:• Por simplificação/performance cada fonte de luz é
considerada pontual (adimensional) e tem intensidade constante e é representada por um valor RGB.
• Um valor constante simula as interreflexões
Iluminação – Atenuação
21/04/23 OpenGl 35/24
• A atenuação é a perda gradativa de intensidade luminosa à medida em que objetos se afastam da fonte luminosa.
• É um efeito de reprodução simples e que traz ótimos resultados visuais
OpenGL Shaders - GLSL
21/04/23 OpenGl 36/24
• GLSL – OpenGL Shading Language• O suporte a sharders nada mais é que a possibilidade de carregar programas baseados em uma linguagem de Shader que permite adicionar funcionalidades de processamento gráfico que não foram previamente inseridos no ambiente 3D.• Tem ainda a vantagem de trabalhar diretamente com a GPU (Unidade de Processamento Gráfico)• Se divide basicamente em três tipos
OpenGL Shaders - Tipos
21/04/23 OpenGl 37/24
• Tanto o DirectX quanto OpenGL usam três tipos de shaders:•Vertex shaders: afeta os vertices de um modelo 3D modificando propriedade como posicao, cor, coordenada de textura etc.• Geometry shaders: possibilidade de adicionar ou remover vértices/faces de um modelo, pode ser usado tambem para gerar dinamicamente modelos o que seria muito custoso se feito pelo CPU.• Pixel shaders: Intera pixel a pixel pelo modelo 3D fazendo modificacoes mais refinadas, tais como BumpMapping, NormalMapping etc.
21/04/23 OpenGl 38/24
21/04/23 OpenGl 39/24
21/04/23 OpenGl 40/24
21/04/23 OpenGl 41/24
21/04/23 OpenGl 42/24
21/04/23 OpenGl 43/24
21/04/23 OpenGl 44/24
21/04/23 OpenGl 45/24
Dúvidas
21/04/23 OpenGl 47/24
Grasielle Valença (gval)Marcela Bezerra (mbs)
Thiago Burgo (tbb)Paulo Thiago (ptgs)
Introdução a MultimídiaOpenGL