SlideShare uma empresa Scribd logo
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
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 Com shader
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
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í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
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;
}
GLSL
 Linguagem padrão
 Garante compatibilidade
 Fácil adaptar para aplicações existentes
 Código otimizado para hardware utilizado
10
Ferramentas Existentes
11
[gDEBugger, 2008]
[FxComposer, 2008]
[glslDevil, 2007]
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
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
A Ferramenta (cont.)
14
Demo 1
Fluxograma de Execução
15
Hospedeiro
(OpenGL)
Biblioteca do Sistema
(c:/Windows/System32/opengl32.dll)
Geometry
Shader
Fragment
Shader
Vertex
Shader
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)
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
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)
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
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
Resultados
21
Demo 2
Conclusões
 Ferramenta de depuração
 Programa OpenGL hospedeiro
 Shader GLSL
 Desenvolvimento integrado da aplicação
 Atualmente, é dependente de hardware
22
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
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
Trabalhos Futuros
 Integração com ferramentas existentes
 Shader Designer [Typhoon Labs, 2006]
 Microsoft Visual Studio
 Ambiente único de desenvolvimento
25
Shader Designer Visual Studio
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
Perguntas?
27
© GLSL, Falanx

Mais conteúdo relacionado

Semelhante a Defesa TC V1.2.1

Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
Deivid Martins
 
Introdução à OpenGL
Introdução à OpenGLIntrodução à OpenGL
Introdução à OpenGL
Herbet Ferreira Rodrigues
 
Slide blender 3 d apresentação
Slide blender 3 d apresentaçãoSlide blender 3 d apresentação
Slide blender 3 d apresentação
José Nascimento
 
Comparação de sistemas operativos cliente
Comparação de sistemas operativos clienteComparação de sistemas operativos cliente
Comparação de sistemas operativos cliente
André Dias
 
Palestra
PalestraPalestra
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
Diego Santos
 
Desenvolvendo games multiplataforma
Desenvolvendo games multiplataformaDesenvolvendo games multiplataforma
Desenvolvendo games multiplataforma
André Santee
 
Engenharia de Software para Jogos
Engenharia de  Software para JogosEngenharia de  Software para Jogos
Engenharia de Software para Jogos
Ricardo Leite
 
Introdução às Game Engines
Introdução às Game Engines Introdução às Game Engines
Introdução às Game Engines
Jerry Medeiros
 
Game programming
Game programmingGame programming
Game programming
Fabio Fonseca
 
LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.
Marcos Antonio Vieira da Silva
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
Tony Alexander Hild
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de Jogos
Gabriel Giordano Medina
 
Desenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaDesenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma Xna
Ellison Leão
 
Java alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisJava alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionais
Leonardo Simberg
 
Placa mae 7ac
Placa mae 7acPlaca mae 7ac
Placa mae 7ac
xadere4z
 
Debugging fast track
Debugging fast trackDebugging fast track
Debugging fast track
Tales Andrade
 
DirectX11: Fundamentos
DirectX11: FundamentosDirectX11: Fundamentos
DirectX11: Fundamentos
Alexandre Castro
 
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB HarmonyDesenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Daniel Rodrigues de Sousa
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
Campus Party Brasil
 

Semelhante a Defesa TC V1.2.1 (20)

Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Introdução à OpenGL
Introdução à OpenGLIntrodução à OpenGL
Introdução à OpenGL
 
Slide blender 3 d apresentação
Slide blender 3 d apresentaçãoSlide blender 3 d apresentação
Slide blender 3 d apresentação
 
Comparação de sistemas operativos cliente
Comparação de sistemas operativos clienteComparação de sistemas operativos cliente
Comparação de sistemas operativos cliente
 
Palestra
PalestraPalestra
Palestra
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Desenvolvendo games multiplataforma
Desenvolvendo games multiplataformaDesenvolvendo games multiplataforma
Desenvolvendo games multiplataforma
 
Engenharia de Software para Jogos
Engenharia de  Software para JogosEngenharia de  Software para Jogos
Engenharia de Software para Jogos
 
Introdução às Game Engines
Introdução às Game Engines Introdução às Game Engines
Introdução às Game Engines
 
Game programming
Game programmingGame programming
Game programming
 
LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de Jogos
 
Desenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaDesenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma Xna
 
Java alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisJava alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionais
 
Placa mae 7ac
Placa mae 7acPlaca mae 7ac
Placa mae 7ac
 
Debugging fast track
Debugging fast trackDebugging fast track
Debugging fast track
 
DirectX11: Fundamentos
DirectX11: FundamentosDirectX11: Fundamentos
DirectX11: Fundamentos
 
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB HarmonyDesenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
 

Defesa TC V1.2.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
  • 3. Introdução (cont.) 3 © Bee Movie, DreamWorks © Wall-E, Pixar © Ratatouille, Pixar
  • 4. Introdução (cont.) 4 © Crysis, Crytek © Grid, Codemasters © Far Cry 2, Ubisoft
  • 5. Como Obter Estes Efeitos?  Shaders  Programas desenvolvidos para GPUs. 5 © Crysis, Crytek © Crysis, Crytek Sem shader Com shader
  • 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. O Pipeline Gráfico 7 © MSDN, http://msdn.microsoft.com
  • 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. 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. GLSL  Linguagem padrão  Garante compatibilidade  Fácil adaptar para aplicações existentes  Código otimizado para hardware utilizado 10
  • 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. 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
  • 15. Fluxograma de Execução 15 Hospedeiro (OpenGL) Biblioteca do Sistema (c:/Windows/System32/opengl32.dll) Geometry Shader Fragment Shader Vertex Shader
  • 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. 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. 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. 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. 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
  • 22. Conclusões  Ferramenta de depuração  Programa OpenGL hospedeiro  Shader GLSL  Desenvolvimento integrado da aplicação  Atualmente, é dependente de hardware 22
  • 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. 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. 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. 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