OTIMIZAÇÃO DE RENDERIZAÇÃO, UTILIZANDO TÉCNICAS AVANÇADAS DA UNIDADE DE PROCESSAMENTO GRÁFICO.



Documentos relacionados
OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora

Disciplina: Introdução à Informática Profª Érica Barcelos

Tecnologia PCI express. Introdução. Tecnologia PCI Express

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Informática I. Aula 5. Aula 5-13/05/2006 1

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

CPU Unidade Central de Processamento. História e progresso

Prof. Esp. Lucas Cruz

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

Taxa de Gravação da Memória RAM (MegaBytes / segundo) G5 2.7 Ghz (Mac) Linux Kernel

Memórias Prof. Galvez Gonçalves

BARRAMENTO DO SISTEMA

VIRTUALIZAÇÃO CONVENCIONAL

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

Aula 26: Arquiteturas RISC vs. CISC

TRABALHO COM GRANDES MONTAGENS

Técnicas de Manutenção de Computadores

Sistemas Operacionais

Feature-Driven Development

Sistemas Operacionais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

Fundamentos de Sistemas Operacionais

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Usando o Arena em Simulação

Montagem e Manutenção. Luís Guilherme A. Pontes

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

COMPUTAÇÃO GRÁFICA REPRESENTAÇÃO DE IMAGENS

Aula 04 A. Barramentos. Prof. Ricardo Palma

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

CorelDRAW UM PROGRAMA DE DESIGN

Orientação a Objetos

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Tecnologia da Informação. Prof Odilon Zappe Jr

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

3. Arquitetura Básica do Computador

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Placa de vídeo em CUDA

Itinerários de Ônibus Relatório Final

Introdução. Em se tratando de computador, entendemos que memória são dispositivos que armazenam dados com os quais o processador trabalha.

ENGENHARIA DE SOFTWARE I

Introdução a Informática. Prof.: Roberto Franciscatto

Arquiteturas RISC. (Reduced Instructions Set Computers)

Sistemas Operacionais

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Organização e Arquitetura de Computadores

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

CADERNO DE QUESTÕES WINDOWS 8

ULA Sinais de Controle enviados pela UC

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Sistema de Computação

Unidade 13: Paralelismo:

Hardware de Computadores

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Introdução a Informática. Prof.: Roberto Franciscatto

5 Entrada e Saída de Dados:

Imóvel Mix SGI. 1. Acesso ao Sistema 2. Aspectos Gerais 3. Configuração da Empresa 4. Cadastro de Usuários

Sistemas Distribuídos

RISC X CISC - Pipeline

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

Um Driver NDIS Para Interceptação de Datagramas IP

UML - Unified Modeling Language

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Eduardo Bezerra. Editora Campus/Elsevier

1

Sistemas Computacionais II Professor Frederico Sauer

UNEMAT SISTEMA DE INFORMAÇÃO (SI) Professora: Priscila Pelegrini

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

2. Função Produção/Operação/Valor Adicionado

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

Como Gerar documento em PDF com várias Imagens

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)


Processo de Controle das Reposições da loja

Processos Técnicos - Aulas 4 e 5

Gerenciamento de software como ativo de automação industrial

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

2 Diagrama de Caso de Uso

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

CONHEÇA MELHOR SEU COMPUTADOR

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Manual SAGe Versão 1.2 (a partir da versão )

Comparativo de desempenho do Pervasive PSQL v11

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM VÍDEOS

Manual do usuário. Mobile Auto Download

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Introdução ao GED Simone de Abreu

Manual de implantação

7.Conclusão e Trabalhos Futuros

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

Fundamentos de Hardware

Transcrição:

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CENTRO TECNOLÓGICO JEFERSON VIEIRA RAMOS OTIMIZAÇÃO DE RENDERIZAÇÃO, UTILIZANDO TÉCNICAS AVANÇADAS DA UNIDADE DE PROCESSAMENTO GRÁFICO. Florianópolis, novembro de 2008

Jeferson Vieira Ramos OTIMIZAÇÃO DE RENDERIZAÇÃO, UTILIZANDO TÉCNICAS AVANÇADAS DA UNIDADE DE PROCESSAMENTO GRÁFICO Rascunho do projeto de conclusão de curso. Semestre 2008/2. Florianópolis, novembro de 2008

Resumo Com a evolução dos dispositivos gráficos é fundamental entender o funcionamento destes para que se consiga tomar boas decisões em um projeto de Computação Gráfica. O Objetivo desse trabalho de conclusão de curso é mostrar como utilizar de forma coerente recursos oferecidos pela OpenGL, com o foco principal no Vertex Buffer Objetc (VBO). Através dos teste e resultados obtidos pelo estudo dos elementos supracitados, buscar eurísticas para que a VBO possa ser utilizada sempre da melhor maneira possível. Para tal, é primeiramente, analisado as vantagens e desvantagens de cada técnica oferecida pela OpenGL e é efetuado testes. Palavras chave: Vertex Buffer Object (VBO), dispositivo gráfico, OpenGL.

Lista de Ilustrações Fig.1. Ilustração de VBO...16 Fig.2. Pipeline gráfico simplificado do OpenGl...16 Fig.3. Protótipo: 507 vértices, com wire...20 Fig.4.Protótipo: 507 vértices, sem wire...20 Fig.5.Protótipo: 124242 vértices, com wire...20 Fig.6.Protótipo: 124242 vértices, sem wire...21

Lista de Tabelas Tab.1. Resultados obtidos com a figura Cow...18 Tab.2. Tabela comparativa, modo Imediato, DL e VBO [ATI]...22 Tab.2. Tabela comparativa, modo Imediato, DL e VBO [NVIDIA]...23

Sumário 1. INTRODUÇÃO...7 1.1 Objetivo Geral...9 1.2 Objetivo Especifico...9 2. OPENGL...11 2.1 Aspectos gerais...11 2.2 O que é OpenGL?...11 3. DISPLAY LIST...12 3.1 O que é Display List?...12 3.2 Aplicação...13 4. VERTEX ARRAY...14 5. VERTEX BUFFER OBJECT...15 6. SISTEMAS DE COMPUTAÇÃO GRÁFICA...16 6.1 Aceleração...17 7. TESTE DE DESEMPENHO...18 7.1 ATI...20 7.1 NVIDIA...21 Conclusão...23 Referências...24

7 1. INTRODUÇÃO A representação gráfica em displays 2D é baseada em pixels, pontos que fazem com que imagens sejam sintetizadas visualmente um dispositivo gerador de imagens. A renderização é um processo muito esperado quando se está produzindo uma cena. Há inúmeras dificuldades de se encontrar as configurações exatas para se obter uma renderização consideravelmente boa, nem sempre é algo familiar se não se conhece os recursos do renderizador. Hoje é possível ver o processo de renderização em inúmeras aplicações, desde um simples tocador de mídia, em sofisticadas animações de um game e até mesmo em filmes. Cada um com suas características e técnicas. Assim como a representação de gráficos 2D a 3D tem como objetivo a imagem resultante. Embora possua uma grande diferença visual entre os objetos 2D e os 3D o resultado, ou seja, aquilo que aparece no display, acaba sendo uma representação 2D. Isso por que os objetos espacias, representados por suas faces, vértices e arestas para que possam ser representados na tela, que é 2D, precisão passar por vários cálculos computacionais. Como exemplo pode ser citado a rasterização. Rasterização No andar final do pipeline de visualização, as primitivas gráficas são enviadas ao dispositivo físico onde são afixadas, depois de realizada a transformação das suas coordenadas para as coordenadas próprias do dispositivo. A afixação das primitivas em unidades do tipo vectorial não apresenta quaisquer problemas, pelo menos no caso de primitivas simples suportadas por essas unidades. Porém, no caso de dispositivos gráficos do tipo de quadrícula, há ainda que converter tais primitivas nas quadrículas dos dispositivos, em operações denominadas de rasterização ou, como também são conhecidas, conversão por varrimento. O objectivo desta operação é determinar quais as quadrículas (pixel) que representarão as primitivas gráficas ( LOPES, J. M, p. 1).

8 Na representação de gráficos 3D, a renderização pode ser feita lentamente, em modelos pré renderizados ou em tempo real, utilizando recursos de aceleração de placas gráficas. Devido a impressionantes evoluções nas placas gráficas, estas que outrora eram utilizadas apenas para enviar sinais para o monitor, hoje apresentam capacidade de processamento independente, podendo efetuar cálculos de renderização em velocidades superiores a unidade central de processamento (CPU) (HARADA; KOSHIZUKA; KAWAGUCHI, 2007). Infelizmente a unidade gráfica de processamento (GPU), ainda esta longe de ter todas as funcionalidades e facilidades do uso da CPU, como recursividade, limitação de memoria, entre outros. O fato desse tipo de arquitetura estar intimamente relacionado ao desenvolvimento de games faz com que elas visem satisfazer esse tipo restrito de necessidades inerentes a essa vertente. No entanto, atualmente isso pode ser facilitado, graças ao aparecimento de algumas API's para placas especificas, como: CUDA (Compute Unified Device Architecture) da NVIDIA e CTM (Close to Metal) da ATI (CARAPETO; FRANCISCO; MAURÍCIO, 2007). CUDA O CUDA é uma nova arquitetura de hardware e software que permite tratar de computação que utiliza paralelismo de dados, sem ter de a transformar para funcionar numa API gráfica. Funciona sobre o hardware gráfico da série 8 da GeForce da NVIDIA. CTM O CTM foi desenhado para expor as capacidades dos processadores de vírgula flutuante existentes no hardware gráfico da ATI. É controlado por um conjunto de comandos, residentes em memória, que inserem parâmetros, especificam endereços de memória e formatos, invalidam e executam a limpeza de caches ou iniciam programas (CARAPETO; FRANCISCO; MAURÍCIO, 2007).

9 placas. Uma vez entendido isso é inimaginável falar de renderização sem mencionar estas O presente processo de pesquisa que será desenvolvido trará técnicas, utilizando a unidade de processamento gráfico, para atingir alta performasse na renderização, de objetos estáticos e dinâmicos. Esse estudo tem com objetivo identificar procedimentos que possibilitem a utilização da placa gráfica com eficiência. Por não se tratar de um processo trivial, o uso indiscriminado pode levar a erros de lógica e até mesmo a queda de desempenho. Por esse motivo é essencial identificar, a partir da literatura, técnicas sofisticadas para obtenção de maior desempenho. Para atingir tal objetivo será utilizada a OpenGl, para interfacear o hardware gráfico. O escolha se deve por ser uma biblioteca de rotinas gráficas livre, extremamente portável e rápida. O caminho que o pesquisador percorre para atender os objetivos de pesquisa no presente projeto serão com a utilização de artigos científicos, impressos e on line, capitulo de livros, testes, dentre outros. 1.1 Objetivo Geral O presente projeto tem por objetivo a execução de testes para técnicas de renderização vislumbrando como objetivo estudar os distintos comportamentos, assim estabelecer uma metodologia para otimização de renderização de um ambiente dinâmico. 1.2 Objetivo Especifico Especificamente esse documento tem por objetivo: Testar diferentes técnicas de renderização em objetos de diferentes naturezas, como estáticos, moveis entre outros, sempre buscando o maior desempenho possível. Analisar os dados obtidos nos teste buscando encontrar eurísticas que garantam que para

cada comportamento existe uma técnica condizente com a situação. Aplicar essas eurísticas em um ambiente dinâmico, onde existam múltiplos objetos com diferentes comportamentos e que possam interagir. Criar um guia, estabelecendo diretrizes para que se possa fazer um levantamento de requisitos necessários para a renderização de múltiplos objetos. 10

11 2. OPENGL OpenGL é uma interface de implementação do hardware gráfico. Esse interface consiste de aproximadamente 150 comandos distintos que pode ser usados para a produção interativa de aplicações em três dimensões.(shreine; WOO; NEIDER; DAVIS, 2005) 2.1 Aspectos gerais Na década de 80 cada fabricante de hardware tinha seu próprio conjunto de instruções para processamento gráfico 2D e 3D. Construir aplicações para tais tecnologias era um problema. As aplicações demandavam muito esforço, e por serem proprietários as companhias menores, com baixo capital, acabavam ficando com pouco espaço no mercado. Após a criação do padrão Programmer's Hierarchical, Graphics System (PHIGS), que não obteve sucesso devido a sua complexidade, a Silicon Graphics Inc. (SGI), criou o padrão IRIS GL (sigla para Integrated Raster Imaging System Graphics Library). Considerado de fácil uso, a API tornou se um padrão na industria. Mesmo com um sistema mais fácil no mercado algumas empresas grandes, como a Sun Microsystems, ainda utilizavam o padrão PHIGS. Para tentar conquistar essa empresas a SGI tornou sua API um padrão publico. Como a IRIS continha muito software proprietário (impedindo a de ser publica) e lidava com questões não relacionadas ao desenho 2D e 3D (gerenciamento de janelas, teclado e mouse) foi criado o OpenGL. Padrão mantido, hoje, por grandes empresas como 3DLabs, ATI, Dell, Evans&Sutherland, HP, IBM, Intel, Matrox, nvidia, SUM e Silicon Graphics. (SHREINE; WOO; NEIDER; DAVIS, 2005) 2.2 O que é OpenGL? OpenGL, de acordo com os autores supracitados, é uma interface para auxiliar a utilização do hardware gráfico. Ela é desenhada como uma máquina de estados, independente

12 de hardware, ou seja, pode ser usada em diferentes plataformas. Em algumas implementações OpenGL é desenhada para funcionar mesmo se o computador que mostrara o gráfico não for o mesmo que processara o programa. OpenGL tem dois objetivos principais: Esconder a complexidade de interfaceamento com diferentes aceleradores 3D, presenteando o programador com um API simples e uniforme. Ocultar as diferentes capacidades das plataformas de harware, fazendo com que todas as implementações suportem as ferramentas do OpenGL. Mesmo que seja necessário emular. OpenGL é historicamente influenciado pelo desenvolvimento de aceleradores gráficos, provendo uma base de funcionalidades nos mais comuns hardware: Desenho de ponto, linha e polígono. Pipeline de transformações e iluminação. Mapeamento de textura. Alpha. (SHREINE; WOO; NEIDER; DAVIS, 2005) 3. DISPLAY LIST Display List (DL) é um meio de buscar mais performance, deixando, assim o OpenGL mais rápido. Ela é frequentemente utilizada se é planejado desenhar a mesma geometria muitas vezes. 3.1 O que é Display List? Display list (DL) é um grupo de comandos OpenGL que são armazenados para posterior execução. Ao invocar a DL os comandos que estão nela são executados na ordem

13 em que foram armazenados (SHREINE; WOO; NEIDER; DAVIS, 2005). A primeira vista DL parece um função como outra qualquer. Uma vez definida os comandos a ser armazenados, ela pode ser chamada quantas vezes for necessário. Além disso essas implementações OpenGL permitem que a GPU pegue dados diretamente do sistema de memória com transferência via DMA. Embora seja possível transferir um vértice individual por transferência DMA, os benefícios da redução de ciclos da CPU e do tráfego front side bus são mais do que compensados pelos custos estruturais envolvidos. Exibir DL permiti que mais dados e/ou comandos possam ser transportados em um única transferência. Com isso é possível imaginar, por exemplo, a modelagem de um carro. Definindo cada roda como uma única DL e chamando a quatro vezes com as transformações apropriadas. Embora possa parecer que DL só possua vantagens, ainda é possível citar algumas desvantagens. Em algumas situações os dados geométricos criado em uma DL precisão ser modificados. Isso é impossível. Seria necessário criar uma nova DL com os objetos modificados. Dependendo com que frequência esse objetos são modificados, a potencial avanço de performance adquirido outrora pode ser perdido, além de complicar o controle dela, tendo que manusear constantes criações e deleções de DL. Display list criada por um programa são usados no lado do cliente OpenGL. No final das contas, esses dados são processados pela GPU de uma copia guardada pelo lado servidor OpenGL. Isso cria um duplicata dos dados, quando comparados ao modo imediato. O que pode se tornar um problema quando o espaço é constrito. (WILLIAMS, Ian, 2005) 3.2 Aplicação Antônio Ramires Fernandes no Lighthouse3d, mostra um exemplo que ilustra muito bem o uso da Display List. Em seu aplicativo ele simula a renderização de 36 bonecos de neve, sem textura ou iluminação, rodando no mesmo computador. Com DL: 175.65 fps

14 Sem DL: 55.45 fps É importante salientar que esses valores podem sofrer alguma mudança com diferentes arquiteturas de hardware ou até mesmo dos software. Também é importante notar que, colocar todo o código dentro da DL pode prejudicar o desempenho. A lista pode se tornar excessivamente grande e as transferências para memória podem degradar o desempenho. 4. VERTEX ARRAY Como uma alternativa a Display List, OpenGL, implementa Vertex Array (VA). Ele permite que os dados sejam agrupados e tratados como um bloco único, que provoca a transferência de dados alguns ganhos proporcionados pela exibição de listas. VA, permite também, que dados como geometrias e cores sejam intercalados, o que pode ser útil para a criação e referenciação. Infelizmente, VA assume que qualquer dado nele não serão alterados. Isso resulta que, quando chamado um objeto usando VA, os dados no array devem ser validados. Isso adiciona overhead para a transferência de dados. Vertex array não sofre, no entanto, a da limitação do armazenamento de duas cópias dos dados. Alguns problemas: Ele quebra o paradigma cliente/servidor (o cliente toma o controle do gerenciamento da memória). Ele não prove um gerente interno de memória. A única coisa que o VAR faz é prover um grande gancho de memória na memória do servidor. (WILLIAMS, Ian, 2005)

15 5. VERTEX BUFFER OBJECT Vertex Buffer Object (VBO), assim como Display List é um bom meio de ganhar desempenho para objetos dinâmicos. VBO foi desenhada para permitir que o Vertex Array possa ser criado diretamente no dispositivo de memória gráfica. Ou seja, evitando, assim, excesso de transferência no barramento. Se o buffer objecto for usado para armazenar dados de pixel, ele é chamado de Pixel Buffer Object (PBO). É uma poderosa ferramenta que permite armazenar dados em memória de alta performance, no lado do servidor OpenGL. Para tal ela prove algumas funções de acesso ao array usadas no VA, como glvertexpointer, glnormalpointer, gltexcoordpointer, etc. Ao ser criada ela prove um gancho da memória (buffer) que será usado através de um identificador (assim como em DL). É possível dizer que VBO lida com uma espécie de VA com um gerente de memória interno. Esse gerente de memória pode escolher o melhor tipo de memória (system, vídeo ou AGP), será alocada, dependendo do modo como o buffer será usado. Resumidamente, a VBO permite facilmente acessar dados da GPU sem a necessidade de passar pela CPU, o que pode acarretar num avanço em áreas que necessitam de objetos mutáveis com alto desempenho como, simulações fluidos, tecidos, entre outros. A figura, abaixo, ilustra os modos da VBO:

16 Fig.1. Ilustração de VBO (NVIDIA Corporation.Using Vertex Buffer Objects, 2003) Como esse trabalho visa o estudo da renderização, principalmente, de objetos dinâmicos, VBO será o foca da atenção, ao longo deste documento. Além disso, de acordo como o documento The OpenGL Graphics System: A Specification, Display List, assim como suas respectivas funções, é um modelo deprecado. Ou seja, é esperado que sejam completamente removida em futuras versões do OpenGl. (SEGAL, Mark; AKELEY, Kurt, 2008) 6. SISTEMAS DE COMPUTAÇÃO GRÁFICA. Os sistemas de computação gráfica apresentam uma arquitetura de pipeline no qual os dados 3D numa cena são mostrados cruzando diferentes estágios. Dependendo da aplicação ou do tipo de dados, é possível que alguns estágios tornem se gargalos, assim reduzindo drasticamente a performance dos dispositivos gráficos. É essencial que se localize esses gargalos para que os dispositivos gráficos possam trabalhar adequadamente. A figura abaixo, mostra o diagrama de estágios do pipeline gráfico do OpengL.

17 Fig.2. Pipeline gráfico simplificado do OpenGl (CASTELLÓ; RAMOS; CHOVER, 2005) 6.1 Aceleração Diferentes metodologias podem ser usada para remover esses gargalos existentes nos sistemas gráficos. O principal problema pode ser encontrar o motivo por trás desses gargalos. Para problemas conhecidos, OpenGl prove métodos específicos, para o tratamento de cada um. Desdo os método imediatos (os menos recomendados) até métodos mais avançados como os introduzidos anteriormente, Display List (recomendado para objetos geométricos estáticos) e Vertex Buffer Object (usado normalmente para objetos que sofrem constantes transformações em seus vértices). Através dos estudos mostrados a seguir, por Castelló, Ramos e Chover na Tab.1., VBO mostrou uma característica importante a ser observada. Mesmo com um desempenho menor, como esperado, que a Display List, vbo se mostrou muito eficiente. Ou seja, para objetos genéricos, que não se conheça seu comportamento durante toda sua existência, é recomendado a utilização da VBO. Isso já ocorre em estudos em que o tempo de renderização é levado em consideração como no caso do artigos, Real time 3D computed tomographic reconstruction using commodity graphics hardware em que a VBO e a PBO são usados em conjuntos com o barramento PCI Express para um aumento de performance (XU;

18 MUELLER, 2007). Tab.1. Resultados obtidos com a figura Cow 7. TESTE DE DESEMPENHO Estudo comparativo entre VBO, DL, e o modo Imediato. Para tais serão aplicados, para a VBO, suas diferentes flags, STATIC, DYNAMIC e STREM. No estudo dos efeito da atualização dos vértices na VBO será usado o pior caso, ou seja, atualização de todos os vértices. Tais testes serão feitos em dois computadores diferentes com configurações distintas. Nesse computadores destacam se a utilização de marcas distintas de placas de vídeo, ATI e nvidia. Tais placas foram escolhidas por serem as placas gráficas de alto desempenho com maior fatia do mercado. Os resultados dos testes são obtidos através de um protótipo desenvolvido especificamente para esse fim.

19 Fig.3. Protótipo: 507 vértices, com wire. Fig.4.Protótipo: 507 vértices, sem wire.

20 Fig.5.Protótipo: 124242 vértices, com wire. Fig.6.Protótipo: 124242 vértices, sem wire. 7.1 ATI O computador com ATI usada para os teste possui a seguinte configuração:

21 Placa de Video: ATI Technologies Inc RS482 [Radeon Xpress 200]. Processador: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ processors. Memória RAM: 1931032 KB. Quantidade de vértices 507 124242 VBO VBO Modo Wireframe Fps Imediato Sim 2.35831 Não 2.40554 STATIC_DRAW Sim 256.27 Não 315.76 STREAM_DRAW Sim 257.756 Não 314.705 DYNAMIC_DRAW Sim 256.126 Não 315.316 Display List Sim 251.281 Não 317.362 Imediato Sim ** Não ** STATIC_DRAW Sim 5.69205 Não 6.55219 STREAM_DRAW Sim 5.69674 Não 6.56185 DYNAMIC_DRAW Sim 5.70677 Não 6.59073 Display List Sim 18.0255 Não 39.5942 Tab.2. Tabela comparativa, modo Imediato, DL e VBO [ATI] 7.1 NVIDIA O computador com NVIDIA usada para os teste possui a seguinte configuração:

22 Placa de Video: GeForce 8600 GT. Processador: AMD Athlon(tm) 64 X2 Dual Core Processor 4400+. Memória RAM: 1931032 KB. Quantidade de vértices 507 124242 VBO VBO Modo Wireframe Fps Imediato Sim 481.277 Não 454.402 STATIC_DRAW Sim 924.772 Não 1482.3 STREAM_DRAW Sim 904.495 Não 1548.36 DYNAMIC_DRAW Sim 905.079 Não 1573.22 Display List Sim 978.373 Não 2124.81 Imediato Sim 1.76376 Não 1.76971 STATIC_DRAW Sim 26.174 Não 98.38 STREAM_DRAW Sim 42.1023 Não 109.726 DYNAMIC_DRAW Sim 28.5337 Não 97.6158 Display List Sim 29.0233 Não 183.322 Tab.2. Tabela comparativa, modo Imediato, DL e VBO [NVIDIA]

23 Conclusão Mesmo sem atingir todos os objetivos, já é possível perceber que a VBO traz algumas vantagens em sua utilização. Seu comportamento nos teste demonstrou que mesmo que não tenha tido o mesmo desempenho que a Display List, ainda sim é equiparável a essa, com a vantagem de poder ser modificada em tempo de execução. Os resultados são animadores na espectativa de concluir os próximos objetivos. O próximo passo, agora é, estudar como avaliar estes resultados. Pesquisar como classificar os objetos de acordo com o mais coerente modo da VBO e um possível mapeamento de requisitos em uma simulação. Além disso, é importante observar que, uma vez que os programas desemvolvidos a partir desses estudos estarão sendo atualizados com relação ao OpenGL 3.0, já que DL, mais usado anteriormente, esta prestes a desaparecer. Espera se que num futuro próximo, com o lançamento do OpenGL 3.0 e a Display List deprecated, que as novas placas de vídeo procurem otimizar a VBO no próprio hardware.

24 Referências SHREINE, Dave; WOO, Mason; NEIDER, Jackie; DAVIS, Tom. OpenGL programming Guide 2.0. 5 ed. OpenGL Architecture Review Board. Estados Unidos. ADDISON WESLEY.2005. NVIDIA Corporation.Using Vertex Buffer Objects (VBOs).nVidia.Canada.2003 FERNANDES, Antônio Ramires. Display Lists Tutorial.Lighthouse3d. Disponível em: <http://www.lighthouse3d.com/opengl/displaylists/index.php?1>. Acesso em: 15 mai. 2008. MOLOFEE, Jeff. DisplayList: Lesson 12. NeHe. 1999. Disponível em: <http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=12>. Acesso em: 16 mai.2008. NVIDIA. What is a GPU?. NVIDIA. 2006. Disponível em: <http://www.nvidia.com/content/ nsist/module/what_gpu.asp?partner=>. Acesso em : 07 jun. 2008. RICCIO, Christophe;GUINOT, Jerome.OpenGL Vertex Buffer Objects. Ozone3d. 1 mai. 2006 7 jan. 2007. Disponível em: <http://www.ozone3d.net/tutorials/opengl_vbo_p1.php>. Acesso em:15 mai. 2008. HARADA, Takahiro; KOSHIZUKA, Seiichi; KAWAGUCHI, Yoichiro. Smoothed Particle Hydrodynamics on GPUs. The Visual Computer manuscript. Tokyo. Japão. 2007. Disponível em: <http://www.iii.u tokyo.ac.jp/~takahiroharada/projects/sph.html> Acesso em: 25 nov. 2008 LOPES, J. M. Brisson. Rasterização. Computação Gráfica. Disponível em: <http://www.inf.ufrgs.br/cg/cmp143/2006/rasterizacao.pdf>. Acesso em: 15 mai.2008. WILLIAMS, Ian; HART, Evan. Efficient rendering of geometric data using OpenGL VBOs in SPECviewperf. SPEC. 11 set. 2005. Disponível em: <http://www.spec.org/gwpg/gpc.static/vbo_whitepaper.html>. Acesso em: 24 nov. 2008. SEGAL, Mark; AKELEY, Kurt. The OpenGL Graphics System: A Specification. The Khronos Group Inc. 11 ago. 2008. Disponível em: <http://www.opengl.org/registry/doc/glspec30.20080811.pdf>. Acesso em: 24 nov. 2008. CASTELLÓ, Pascual; RAMOS, José Francisco; CHOVER, Miguel. A Comparative Study of Acceleration Techniques for Geometric Visualization. Department of Computer Languages and Systems. 2005. Disponível em:

25 <http://www.springerlink.com/content/lnapg20p6un7b2ay/>. Acesso em: 24 nov. 2008. KUEHNE, Bob; TRUE, Tom; COMMIKE, Alan; SHREINER, Dave. Performance OpenGL: Platform Independent Techniques or A bunch of good habits that will help the performance of any OpenGL program. SIGGRAPH 2005 Course # 19. 2005. Disponível em: <http://portal.acm.org/citation.cfm?id=1198684>. Acesso em: 24 nov. 2008. XU, Fang; MUELLER, Klaus. Real time 3D computed tomographic reconstruction using commodity graphics hardware.physics in Medicine and Biology. 17 mai. 2007. Disponível em:<http://www.iop.org/ej/article/0031 9155/52/12/006/pmb7_12_006.pdf>. Acesso em: 24 nov. 2008 CARAPETO, Ricardo R.; FRANCISCO, Silas M.; MAURÍCIO, João G. Programação em GPU: CUDA, CTM. nov. 2007. Disponível em: <http://algos.inescid.pt/~jcm/cpd/papers/4a4/gpu Programming.pdf>. Acesso em: 26 nov. 2008.