470 likes | 584 Views
Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs). Introdução a Multimídia OpenGL. Roteiro. Introdução Conceito e Motivação História Comparativo - Análise de Competidores(Directx) Utilização de Mercado Como Utilizar Operação Normal
E N D
Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs) Introdução a Multimídia OpenGL OpenGl
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? OpenGl
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. OpenGl
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. OpenGl
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. OpenGl
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. OpenGl
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. OpenGl
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. OpenGl
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. OpenGl
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 OpenGl
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 OpenGl
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. OpenGl
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. OpenGl
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). OpenGl
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 OpenGl
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. OpenGl
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. OpenGl
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. OpenGl
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 OpenGl
Pipeline Gráfico OpenGl
Pipeline Gráfico • VertexTransformation • 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 matrizes • ModelView e Projection; • • Transformação de normais; • • Iluminação do vértice; • • Geração/Transformação das coordenadas de textura. OpenGl
Pipeline Gráfico • PrimitiveAssembly • 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 viewfrustum • Back face culling • Early Z culling OpenGl
Pipeline Gráfico • Rasterization • Dados de Entrada • Primitivas construídas na fase anterior • Operações • Determina o conjunto de pixels cobertos por uma primitiva • geométrica • Para cada pixel é calculado o seu conjunto de atributos por • Interpolação dos atributos dos vértices da primitiva • Resultado: conjunto de fragmentos OpenGl
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 OpenGl
Pipeline Gráfico • Resumo Visual OpenGl
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 OpenGl
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. OpenGl
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 OpenGl
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 OpenGl
Iluminação • 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. OpenGl
Iluminação • 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 OpenGl
Iluminação – Fontes de Luz • 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 OpenGl
Iluminação – Atenuação • 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
OpenGL Shaders - GLSL • 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
OpenGL Shaders - Tipos • 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. OpenGl
Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs) Introdução a Multimídia OpenGL OpenGl