Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Daniel Streck
Título: Renderizador 3D para aplicações gráficas utilizando Vulkan
 
Introdução:
Pode-se afirmar que para criar a ilusão de imagem em movimento em vídeos ou aplicações gráficas, a taxa de quadros para que uma aplicação possa ser denominada de tempo-real começa a partir dos 15 quadros por segundo. Portanto, há necessidade de garantir alta performance para que aplicações interativas se tornem agradáveis para os usuários (AKENINE-MÖLLER; HAINES; HOFFMAN, 2008, p.1). Para atingir altos níveis de performance, APIs são comumente empregadas para programação de aplicações que utilizam o hardware com recursos de computação gráfica. Uma das entidades que mantém tais APIs é o grupo Khronos, que tem como objetivo criar e manter especificações abertas de APIs para computação paralela, computação gráfica, mídias dinâmicas, visão computacional e processamento de sensores em uma gama variada de plataformas (KHRONOS, 2016c). Algumas das especificações mantidas pelo grupo começaram a evoluir de maneira separada, tais como o OpenGL (uma API gráfica utilizada em plataformas desktop e consoles) e o OpenGL ES (OpenGL for Embedded Systems) para mobile. Devido a isso, a iniciativa do OpenGL começou a se fragmentar e evoluir independentemente, o que causou falta de conformidade e compatibilidade entre aplicações do OpenGL ES e OpenGL (KHRONOS, 2016c). Devido a esta fragmentação, desenvolvedores começaram a apontar outras inconsistências e possíveis melhorias para a API. Isto resultou em uma iniciativa sem precedentes a partir de desenvolvedores proeminentes das indústrias de desenvolvimento de jogos digitais, tanto de hardware quanto software, para especificação do futuro do OpenGL, que veio a se tornar o Vulkan (KHRONOS, 2016c). Algumas das vantagens propostas pela especificação do Vulkan, em relação às APIs anteriores, são a uniformidade entre plataformas, suporte ao envio de comandos assíncronos da CPU para GPU e a disponibilização explicita de suas funções com pouco overhead. Estas mudanças transferem maior responsabilidade para o desenvolvedor, para utilizá-las de forma que atenda melhor cada aplicação em particular. Através dessas funções, possibilita-se que a API se comporte de maneira extremamente previsível (SAMSUNG, 2016). Diante do exposto, desenvolveu-se um estudo exploratório da API Vulkan, realizando a implementação de uma biblioteca para renderização de cenas 3D e análise da performance obtida em comparação com a API OpenGL.