55

Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Embed Size (px)

Citation preview

Page 1: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista
Page 2: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Equipe

Onildo FerrazHélder Manoel Lima e SilvaFelipe Batista

Page 3: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

• O que é OpenGL• Motivações• História• Aplicações• Pipeline• OpenGL x Direct3D• Arquitetura do OpenGL• Bibliotecas

Roteiro

Page 4: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

O que é opengl?

Open Graphics Library

É a especificação de uma API para programação em computação gráfica.

Em outras palavras, OpenGL define um conjunto de funções fazer aplicações em computação gráfica.

Page 5: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL não é...

Uma linguagem de programação

Não tem comandos paracriação e gerenciamento de janelaslidar com entradas do usuário

Não tem comandos de alto-nível para descrição de objetos 3D

Page 6: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Motivação Desenvolver aplicativos gráficos era

difícilFalta de padronizaçãoEsforços duplicados

Era necessário uma plataformaAbstração de hardwarePortávelFácil de usar

Page 7: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

História PHIGS – anos 80 IRIS GL – final dos anos 80 pela SGI OpenGL é criado em 1992 – mantido pela

OpenGL ARB (Architecture Review Board) Evans&Sutherland HP IBM Intel Matrox NVIDIA Sun Silicon Graphics (SGI)

Direct3d – Microsoft 1995 Desde 2006, OpenGL é parte do Khronos Group

Page 8: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Evolução OpenGL 2.0

Substituição do pipeline fixo por shaders OpenGL Shading Language

OpenGL 2.1OpenGL Shading Language revision 1.20sRGB texture formats

OpenGL 3.0DirectX 10 level hardware

Page 9: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Utilizações no mercado

Moonlight Creator

Ferramentas CAD

Page 10: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Modelagem e Desenho

Photopia

Page 11: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Visualização e Simulação

Page 12: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Hardware-Assisted Rendering

glutrad (radiosity, hemicube approximation)

Page 13: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Animação e Efeitos Especiais

Vídeo do trem do filme “The Prototype”

NewTek Light Wave 3d

Page 14: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Jogos

OpenGL Linux Chess

Call of Duty

Quake 3

Counter Strike

Page 15: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline

Page 16: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline Objetos definidos no seu proprio sistema de coordenadas

Transformaçoes de modelagem orientam os objetos de acordo com um sistema de coordenadas comum

UNIVERSO

Page 17: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Transformações

Page 18: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Transformações

AS TRANSFORMACOES AFIM PRESERVAM LINHAS PARALELAS

Page 19: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline Modelo de Phong

Vetor normal

Posição da fonte de luz

Page 20: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Modelo de Phong

Emissão: contribuição que não depende de fontes de luz (fluorescência)

Ambiente: contribuição que não depende da geometria

Difusa: contribuição correspondente ao espalhamento da reflexão lambertiano (independe da posição do observador)

Especular: contribuição referente ao comportamento de superfícies polidas

Page 21: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Componentes do Modelo de Phong

Difusa Especular Ambiente

Page 22: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Reflexão Difusa

Atenuações…

Page 23: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Reflexão Especular

Page 24: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Luz Ambiente

Page 25: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Luz Ambiente

Page 26: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Iluminação - Geometria

A posição dos vértices com relação ao olho e a fonte luminosa contribui no cálculo dos efeitos atmosféricos

O vetor normal é fundamentalNão é calculado automaticamente

Page 27: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Posição da fonte de luz

Page 28: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline Coordenadas em relação a câmera

Tipos de projeção

Page 29: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline Coordenadas em relação a câmera

Tipos de projeção

Page 30: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Transformação de câmera

Page 31: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Projeções - perspectiva

Porção do universo selecionada para visualização

Plano de projeção

Centro de projeção

Page 32: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Projeções - ortogonal

Page 33: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Perspectiva X Ortogonal

Page 34: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline Eliminar o que não está dentro do volume de visualização

Page 35: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline Conversão de polígonos para pixels (DISCRETO)

Page 36: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline Eliminar o que está obstruído

Page 37: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Pipeline

Page 38: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3D

Direct3D é parte da DirectX API proprietária Aceleração 3D em hardware Plataforma Windows

OpenGL API aberta Pode usar aceleração 3D em hardware Maioria dos SO's modernos.

Page 39: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DPortabilidade D3D

Implementado apenas p/ a família Windows Incluindo XBOX e Sega Dreamcast

Há tentativas de portar p/ sistemas Unix Requer engenharia reversa (processo difícil)

OGL Implementado para Windows e UNIX

Mac OS X, Linux, Playstations, Wii, iPhone. SO's que permitem aceleração 3D: API primária

Page 40: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DPortabilidade

OGL Windows suporta aceleração por HW

apenas após a instalação de um driver da fabricante da GPU

Page 41: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DFacilidade de Uso

No início D3D frustrava muitos programadores.

John Carmack pediu à MS para abandoná-lo em favor do OGL (1997)

Após muita evolução, a crítica mudou John Carmack diz ser uma das melhores

APIs com que já trabalhou (2007) OpenGL não teve esse problema

Page 42: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DLinhas diferentes de pensamento

D3D foi feita p/ ser uma interface p/ HW 3D OGL foi feita p/ ser um sistema de

renderização 3D que pode ser acelerado por HW

D3D espera que a aplicação gerencie os recursos de HW

Desenvolvedor aloca os recursos OpenGL faz o driver gerenciar os recursos de

HW

Page 43: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DLinhas diferentes de pensamento

Ambas as APIs provêem aproximadamente o mesmo nível de funcionalidade

Page 44: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DUso no mercado profissional

OGL sempre dominou o D3D Muitas placas gráficas suportavam

apenas OGL. Hoje em dia é diferente Razões históricas

Aplicações gráficas originalmente escritas em IRIS GL, e depois portadas para OGL.

Page 45: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DUso no mercado profissional

Outra razão: Marketing e Design D3D não foi marketeada nem criada para

este propósito OGL é uma API 3D de propósito mais geral

Page 46: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DUso no mercado de jogos

No início cada placa aceleradora tinha seu software exclusivo

Tempo da Voodoo da 3dfx e da Matroxx Software de uma não rodava na outra

OGL e D3D emergiram como competidores Suporte da indústria a uma biblioteca multi-

plataforma 1990: Domínio do OpenGL

Facilidade de uso

Page 47: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DUso no mercado de jogos

1990: Domínio do OpenGL Facilidade de uso

2000: Desenvolvedores passaram a preferir D3D

Desde 1990 D3D sofreu várias melhorias Hegemonia do Windows no mercado de

jogos para Desktop

Page 48: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

OpenGL x Direct3DUso no mercado de jogos

2005: Chegada da sexta e sétima geração de consoles

De Sega Dreamcast a Playstation 3 O mercado de consoles cresceu muito Desenvolvimento multi-console passou a ser

mais visado OpenGL -> suportado por todos os

consoles, exceto os da Microsoft OpenGL passou a ser mais interessante

Page 49: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Arquitetura do OpenGL

Conjunto de centenas de funções Acesso a praticamente todos os recursos do

HW de vídeo Internamente é uma máquina de estados

Cada estado diz à placa de vídeo o que fazer Cuidado com os estados indesejados

Cliente-servidor Protocolo padronizado

Page 50: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Arquitetura do OpenGL

Comandos não são imediatamente jogados para o HW

Otimiza o uso da rede e abre margem p/ outras otimizações

Page 51: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Bibliotecas relacionadas ao OpenGL

OpenGL Utility Library (GLU) Fornece diversas rotinas para auxiliar na

montagem de matrizes de visualização e projeção, desenho de superfícies e imagens 3D.

Biblioteca fornecida juntamente com todas as implementações do OpenGL

Todas as funções desta biblioteca têm o prefixo glu.

Page 52: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Bibliotecas relacionadas ao OpenGL

OpenGL foi feito para ser independente de qualquer sistema de janelas.

Consequentemente não tem comandos para abrir janelas ou ler eventos do teclado e mouse

Infelizmente é impossível escrever um programa gráfico completo sem o uso de ao menos uma janela

Page 53: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Bibliotecas relacionadas ao OpenGL

Para cada ambiente de janelas, existe uma biblioteca que estende a funcionalidade do sistema para suportar renderização OGL.

O sistema X possui o GLX O Windows possui a extensão WGL O IBM OS/2 tem o PGL

Page 54: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Bibliotecas relacionadas ao OpenGL

OpenGL Utility Toolkit (GLUT) Sistema de janela independente de sistema Criado por Mark Kilgard Esconde as complexidades das APIs de

diferentes ambientes de janelas Interface simples para a criação de uma

aplicação OpenGL

Page 55: Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista

Referências OpenGL Programming Guide (Woo, Neider, Davis -

Addison-Wesley ) http://www.humus.ca/index.php?page=News http://www.soe.ucsc.edu/classes/cmps203/Fall04/finalreports/P

rojectPaper_JerryYee.pdf http://tools.devshed.com/c/a/Web-Development/OpenGL-vs-Dir

ectX-A-Comparison/ http://en.wikipedia.org/wiki/Comparison_of_OpenGL_and_Dire

ct3D http://www.xmission.com/~legalize/d3d-vs-opengl.html http://www.inf.pucrs.br/~manssour/OpenGL/ http://www.songho.ca/opengl/gl_pipeline.html http://www.cgl.uwaterloo.ca/~vtluu/Talks/OpenGL/ http://www.inf.ufrgs.br/~nedel/inf01047/05-openGL.pdf www.cin.ufpe.br/~marcelow