CG UFRGS
glslAngel:
Uma Ferramenta de Depuração
para a Linguagem GLSL
{bbgoncalves, oliveira}@inf.ufrgs.br
Bárbara Bellave...
Introdução
2
© Bee Movie, DreamWorks
Introdução (cont.)
3
© Bee Movie, DreamWorks
© Wall-E, Pixar
© Ratatouille, Pixar
Introdução (cont.)
4
© Crysis, Crytek
© Grid, Codemasters
© Far Cry 2, Ubisoft
Como Obter Estes Efeitos?
 Shaders
 Programas desenvolvidos para GPUs.
5
© Crysis, Crytek © Crysis, Crytek
Sem shader Co...
Evolução das Placas Gráficas
6
GeForce GTX 280, 2008Voodoo 1, 1997
• 2 engines de renderização 3D
• 1 processador multimid...
O Pipeline Gráfico
7
© MSDN, http://msdn.microsoft.com
Programação de Shaders
 Evolução similar à programação de CPUs
 Assembly → Alto Nível
 Exemplos de linguagens de alto n...
Exemplo de Shader
9
PSSceneIn VSSkymain(VSSceneIn input)
{
PSSceneIn output;
// Transform the vert to view-space
float4 v4...
GLSL
 Linguagem padrão
 Garante compatibilidade
 Fácil adaptar para aplicações existentes
 Código otimizado para hardw...
Ferramentas Existentes
11
[gDEBugger, 2008]
[FxComposer, 2008]
[glslDevil, 2007]
Objetivos
 Desenvolver um depurador de shaders GLSL
 GLSL é um padrão aberto
 Poucas ferramentas existentes
 Multiplat...
A Ferramenta
 Inspirada na ferramenta glslDevil [Strengert et. Al, 2007]
 Projeto de código aberto
 www.codeplex.com/hl...
A Ferramenta (cont.)
14
Demo 1
Fluxograma de Execução
15
Hospedeiro
(OpenGL)
Biblioteca do Sistema
(c:/Windows/System32/opengl32.dll)
Geometry
Shader
Fra...
Intercepta Chamadas OpenGL
16
Hospedeiro
(OpenGL)
Biblioteca do Sistema
(c:/Windows/System32/opengl32.dll)
Geometry
Shader...
Depurador
Instrumentação do Hospedeiro
17
Hospedeiro
(OpenGL)
Biblioteca Modificada
(../Pasta Local/opengl32.dll)
Geometry...
Instrumentação do Hospedeiro (cont.)
18
Depurador
Hospedeiro
(OpenGL)
Biblioteca Modificada
(../Pasta Local/opengl32.dll)
...
Re-escrita do Shader
19
Shader
Original
varying vec4 dbg_varUser;
void main(){
dbg_varUser = vec4(0.2,0.2,0.1,0.3);
}
*cód...
Depurador
Fluxograma de Execução Final
20
Hospedeiro
(OpenGL)
Biblioteca Modificada
(../Pasta Local/opengl32.dll)
Instrume...
Resultados
21
Demo 2
Conclusões
 Ferramenta de depuração
 Programa OpenGL hospedeiro
 Shader GLSL
 Desenvolvimento integrado da aplicação
...
Sugestões para Projetistas de HW
 Modificações que tornariam tudo mais fácil
 Acesso ao que acontece na placa
 Uso de b...
Trabalhos Futuros
 Suporte à geometry shaders
 Novas formas de interação
 Seleção do vértice para obter informação
 Ot...
Trabalhos Futuros
 Integração com ferramentas existentes
 Shader Designer [Typhoon Labs, 2006]
 Microsoft Visual Studio...
Agradecimentos
 Prof. Manuel Oliveira
 Microsoft
 Grupo de Computação Gráfica
 Leandro Fernandes e Vitor Pamplona
 Mi...
Perguntas?
27
© GLSL, Falanx
Próximos SlideShares
Carregando em…5
×

Defesa TC V1.2.1

88 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
88
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Defesa TC V1.2.1

  1. 1. CG UFRGS glslAngel: Uma Ferramenta de Depuração para a Linguagem GLSL {bbgoncalves, oliveira}@inf.ufrgs.br Bárbara Bellaver Gonçalves Manuel M. Oliveira Orientador
  2. 2. Introdução 2 © Bee Movie, DreamWorks
  3. 3. Introdução (cont.) 3 © Bee Movie, DreamWorks © Wall-E, Pixar © Ratatouille, Pixar
  4. 4. Introdução (cont.) 4 © Crysis, Crytek © Grid, Codemasters © Far Cry 2, Ubisoft
  5. 5. Como Obter Estes Efeitos?  Shaders  Programas desenvolvidos para GPUs. 5 © Crysis, Crytek © Crysis, Crytek Sem shader Com shader
  6. 6. Evolução das Placas Gráficas 6 GeForce GTX 280, 2008Voodoo 1, 1997 • 2 engines de renderização 3D • 1 processador multimidia 2D • 6MB de EDO RAM • 240 Núcleos de processamento • 1GB de memória © Quake 1, Activision © Fallout 3, Bethsoft
  7. 7. O Pipeline Gráfico 7 © MSDN, http://msdn.microsoft.com
  8. 8. Programação de Shaders  Evolução similar à programação de CPUs  Assembly → Alto Nível  Exemplos de linguagens de alto nível  Cg, HLSL e GLSL  Dificuldades atuais:  Programação paralela • Cultura de programação seqüencial é a mais difundida  Ferramentas de desenvolvimento deficitárias • Editores e depuradores separados, por exemplo 8
  9. 9. Exemplo de Shader 9 PSSceneIn VSSkymain(VSSceneIn input) { PSSceneIn output; // Transform the vert to view-space float4 v4Position = mul(float4(input.pos, 1), g_mWorldViewProj); output.pos = v4Position; // Transfer the rest output.tex = input.tex; output.color = float4(1,1,1,1); return output; }
  10. 10. GLSL  Linguagem padrão  Garante compatibilidade  Fácil adaptar para aplicações existentes  Código otimizado para hardware utilizado 10
  11. 11. Ferramentas Existentes 11 [gDEBugger, 2008] [FxComposer, 2008] [glslDevil, 2007]
  12. 12. Objetivos  Desenvolver um depurador de shaders GLSL  GLSL é um padrão aberto  Poucas ferramentas existentes  Multiplataforma (Linux, Windows, etc.)  Principal dificuldade:  Dados não estão facilmente disponíveis 12
  13. 13. A Ferramenta  Inspirada na ferramenta glslDevil [Strengert et. Al, 2007]  Projeto de código aberto  www.codeplex.com/hl2glsl  Permite depurar, editar e compilar o shader 13 Interface Gráfica Biblioteca OpenGL Parser GLSL
  14. 14. A Ferramenta (cont.) 14 Demo 1
  15. 15. Fluxograma de Execução 15 Hospedeiro (OpenGL) Biblioteca do Sistema (c:/Windows/System32/opengl32.dll) Geometry Shader Fragment Shader Vertex Shader
  16. 16. Intercepta Chamadas OpenGL 16 Hospedeiro (OpenGL) Biblioteca do Sistema (c:/Windows/System32/opengl32.dll) Geometry Shader Fragment Shader Vertex Shader Biblioteca Modificada (../Pasta Local/opengl32.dll)
  17. 17. Depurador Instrumentação do Hospedeiro 17 Hospedeiro (OpenGL) Biblioteca Modificada (../Pasta Local/opengl32.dll) Geometry Shader Fragment Shader Vertex Shader Biblioteca do Sistema (c:/Windows/System32/opengl32.dll) glUseProgram  Criar buffers  Definir o que capturar glSwapBuffers  Ler o resultado glBegin  Setar modo de desenho Instrumenta o Código
  18. 18. Instrumentação do Hospedeiro (cont.) 18 Depurador Hospedeiro (OpenGL) Biblioteca Modificada (../Pasta Local/opengl32.dll) Geometry Shader Fragment Shader Vertex Shader Instrumenta o Código Biblioteca do Sistema (c:/Windows/System32/opengl32.dll)
  19. 19. Re-escrita do Shader 19 Shader Original varying vec4 dbg_varUser; void main(){ dbg_varUser = vec4(0.2,0.2,0.1,0.3); } *código gerado Re-escreve shader void main(){ vec4 cor = vec4(0.2,0.2,0.1,0.3); } *código recebido Shader Re-escrito
  20. 20. Depurador Fluxograma de Execução Final 20 Hospedeiro (OpenGL) Biblioteca Modificada (../Pasta Local/opengl32.dll) Instrumenta o Código Biblioteca do Sistema (c:/Windows/System32/opengl32.dll) Geometry Shader Fragment Shader Re-escrito Vertex Shader Re-escrito Re-escreve shader
  21. 21. Resultados 21 Demo 2
  22. 22. Conclusões  Ferramenta de depuração  Programa OpenGL hospedeiro  Shader GLSL  Desenvolvimento integrado da aplicação  Atualmente, é dependente de hardware 22
  23. 23. Sugestões para Projetistas de HW  Modificações que tornariam tudo mais fácil  Acesso ao que acontece na placa  Uso de buffers mais transparente  Melhoria da documentação 23
  24. 24. Trabalhos Futuros  Suporte à geometry shaders  Novas formas de interação  Seleção do vértice para obter informação  Otimização do código  Suporte a mais de um shader do mesmo tipo 24
  25. 25. Trabalhos Futuros  Integração com ferramentas existentes  Shader Designer [Typhoon Labs, 2006]  Microsoft Visual Studio  Ambiente único de desenvolvimento 25 Shader Designer Visual Studio
  26. 26. Agradecimentos  Prof. Manuel Oliveira  Microsoft  Grupo de Computação Gráfica  Leandro Fernandes e Vitor Pamplona  Minha família  Power Trio Quindim  Alexandre Coster, Eduardo Camaratta e Mariane Machado 26
  27. 27. Perguntas? 27 © GLSL, Falanx

×