Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar...

52
Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 [email protected]

Transcript of Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar...

Page 1: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Traçado de Raios de Cenas Dinâmicas na GPU

Autor: Paulo Ivson Netto SantosOrientador: Waldemar Celes Filho

23 de Março de 2009

[email protected]

Page 2: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

2

Sumário

Motivação Estado da Arte Contribuições do Trabalho Construção da Grade Uniforme Traçado de Raios Resultados Conclusão Trabalhos Futuros

Page 3: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Motivação

Por que o traçado de raios?

Por que usar a GPU?

Page 4: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

4

Vantagens

Eficiência O(log(n)) na complexidade da cena Descarte de visibilidade e oclusão Instanciação

Imagens: [Wald et al. 2003]

Page 5: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

5

Vantagens

Alta qualidade de imagem Efeitos de sombreamento Cálculos fisicamente corretos Iluminação Global

Imagens: [Wald et al. 2003]

Page 6: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

6

Iluminação Global

Imagens: [Wald et al. 2003]

Page 7: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

7

Placa Gráfica GPUs se tornaram eficientes e flexíveis

Centenas de processadores em paralelo Suporta precisão de 32-bits de ponto flutuante Oferece muitos GFLOPS

Placas gráficas em cada PC e estação de trabalho

GF

LOP

S

G80 = GeForce 8800 GTX

G71 = GeForce 7900 GTX

G70 = GeForce 7800 GTX

NV40 = GeForce 6800 Ultra

NV35 = GeForce FX 5950 Ultra

NV30 = GeForce FX 5800

Imagens: Nvidia

Page 8: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

8

Desafios Constantes enormes

1 raio ~ 1.000 ciclos da CPU Precisa de muitos raios

~1M pixels/quadro 4x anti-serrilhamento 25 quadros/seg 10 raios/pixel Um bilhão de raios por segundo…

Sem hardware especializado Rasterização tem evoluído há 20 anos!

Sem API unificada OpenGL vs OpenRT

Page 9: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Estado da Arte

Como obter desempenho interativo

Page 10: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

10

Explorar Paralelismo

Agrupar raios próximos Instruções SIMD Raios primários

Utilizar vários processadores Clusters de PCs Placas gráficas

Page 11: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

11

Reduzir Interseções

Interseção com primitivas 90% do processamento

Estrutura de Aceleração (EA) Minimizar interseções

Trocar pelo custo de percorrer a estrutura Reduzir complexidade do algoritmo

O(n) → O(log(n))

Page 12: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

12

Cenas Dinâmicas

Movimento de corpo rígido Transformar raio para espaço local do objeto

Animação estruturada Pré-construir EAs para cada quadro-chave Deformar volumes envolventes da EA

Não estruturada Reconstruir ou adaptar EA a cada quadro

Page 13: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

13

Trabalhos Relacionados CPU

Ray Tracing Animated Scenes using Coherent Grid Traversal [Wald et al. 2006]

Ray Tracing Deformable Scenes using Dynamic Bounding Volume Hierarchies[Wald et al. 2007]

Highly Parallel Fast KD-Tree Construction for Interactive Ray Tracing of Dynamic Scenes[Shevtsov et al. 2007]

GPU Real-Time KD-Tree Construction on Graphics Hardware

[Zhou et al. 2008]

Page 14: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Contribuições do Trabalho

Solução proposta

Page 15: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

15

Objetivos

Explorar paralelismo da GPU Cenas dinâmicas

Movimento de corpo rígido Deformações Movimento não-estruturado

Estrutura de Aceleração Grade Uniforme Reconstruir quando houver movimento

Page 16: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

16

Algoritmos na GPU

Construção da Grade Uniforme em paralelo Percurso e interseção de raios Cálculo de sombreamento

Texturas Sombras Reflexões

Page 17: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

17

Resumo da SoluçãoMateriais

Coords TexCena

Normais

Vértices

Configurargrade

Enviar dados para GPU

Reconstruir grade

Traçar raios

sim

não

Inicialização

Visualização

laçoprincipal

Novo quadro-chave?

Page 18: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Construção da Grade Uniforme

Implementação em paralelo

Page 19: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

19

Algoritmo Básico

1. Encontrar AABB da cena

2. Determinar no. de células

3. Construir listas de triângulos contidos em cada célula

4. Construir índice ID célula → lista de primitivas

3

V

kNdxNx 3

V

kNdyNy 3

V

kNdzNz

Percurso de Raios

ID célula(1)

Início da lista atualInício da próx. lista

(2, 6)

ID primitivas(7, 1, 3, 9)

0 2 6 11 15

22

3 2 7 1 3

9 11 6 2 4

5 7 4 6 8

8 3 7 5 13

12 11 14 21 5

Page 20: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

20

Desafios em Paralelo

Como paralelizar a construção das listas? Por primitiva

Conflitos de escrita na mesma célula Por célula

Inúmeros acessos a muitos dados

Como construir índice para as listas? Determinar início e tamanho de cada lista

Page 21: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

21

Observação

Difícil Obter primitivas ocupadas por cada célula

Fácil Obter células ocupadas por cada primitiva

Page 22: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

22

Idéia Fundamental

Escrever pares (ID célula, ID primitiva) Ordenados por ID primitiva Reordenar pares de acordo com ID célula

4 7 9 7 13

7 14 7 9 12

10 12 4 5 4

8 14 8 10 2

Ordenar por ID célula4 5 4 7 4

8 9 7 9 12

10 2 10 12 13

7 14 7 14 8

(ID célula, ID primitiva)

Page 23: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

23

Algoritmo

1. Obter quantas células cada primitiva ocupa

2. Acumular valores da Etapa 1

3. Escrever pares (ID célula, ID primitiva) usando índices da Etapa 2

4. Ordenar pares da Etapa 3

5. Dado ID célula, encontrar sua lista dentre pares ordenados da Etapa 4

Page 24: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

24

Etapa 1

Objetivos Obter quantas células cada primitiva ocupa

Implementação Fragment shader Estimativa pela AABB de cada triângulo Escrever total de células em cada pixel

Exemplo

Page 25: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

25

Etapa 2

Objetivos Acumular valores da Etapa 1 Índices para listas de células ocupadas por primitiva

Implementação Soma de prefixos em paralelo CUDA Data-Parallel Primitives (CUDPP) Acumular um valor adicional no final

Exemplo

Page 26: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

26

Etapa 3 – Considerações

Objetivos Escrever pares (ID célula, ID primitiva) Usar índices acumulados da Etapa 2

Uma operação de escrita

Várias operações de escrita

Uma passada Fragment shaderCUDA

Geometry shader

Várias passadas

Vertex shader -

Page 27: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

27

Etapa 3 – Solução Proposta

Dado ID par na saída Obter ID célula e ID primitiva

Dentre os valores da Etapa 2 Busca binária pelo maior valor Vmáx menor que ID par

ID primitiva = índice de Vmáx na Etapa 2

ID célula = ID célula inicial + (ID par – Vmáx)

Exemplo

Page 28: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

28

Etapa 4

Objetivos Ordenar pares da Etapa 3 de acordo com ID célula

Implementação CUDA Radix-sort

Exemplo

Page 29: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

29

Etapa 5

Objetivos Construir índices para acessar listas da Etapa 4

Implementação Busca binária pelo ID célula nas listas ordenadas Obter início e tamanho de cada lista Fragment shader

Exemplo

Page 30: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

30

Vantagens

Paralelismo Sem conflitos de escrita Sem múltiplos valores de saída

Banda de memória Poucos acessos a dados

Implementação eficiente na GPU Soma de prefixos Ordenação Busca binária

Page 31: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Traçado de Raios

Implementação na GPU

Page 32: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

32

Algoritmo ConceitualEnviar dados

para GPU

Materiais

Coords Tex

Normais

Vértices

Reconstruir grade Dados da Grade

Índices da Grade

Inicializar percurso de

raios

Obter próx. célula não-

vazia

Obter interseção

mais próxima

Sombreamento

Cor de fundo

sombra, reflexão

sim

não

sim

não

não

sim

Novo quadro-chave?

Índices da Grade

Vértices

Dados da Grade

Materiais

Coords Tex

Normais

Page 33: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

33

Rotinas Principais

Percurso de raios 3D-DDA [Amanatides and Woo 1987]

Interseção raio x triângulo Coordenadas baricêntricas [Möller and Trumbore 1997]

Sombreamento Phong + texturas Raios de sombra Raios de reflexão

Page 34: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

34

Implementação na GPU

Várias etapas

Raiosprimários

Raios de

sombraSombreamento

interseçõesinterseções em sombra cor final

Reflexão: passada adicional com blend

Page 35: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Resultados

Análise de desempenho

Page 36: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

36

Roteiro Construção da Grade Uniforme Cenas de Teste Desempenho

Cenas Estáticas Cenas Dinâmicas

Trabalhos Relacionados Etapas de Visualização

Configuração de testes Nvidia GeForce 8800 Ultra Resolução de 1024 x 1024

Page 37: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

37

Construção da Grade Uniforme

De 2x a 3x mais rápido que CPU Lento para cenas pequenas (API gráfica)

Tempo para reconstrução (ms)

Page 38: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

38

Cenas de Teste - CAD

Boat(50K tris)

MonoBR(112K tris)

P40(470K tris)

Page 39: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

39

Cenas de Teste - Benchmarks

Ben(78K tris)

Hand(16K tris)

Wood-doll(5K tris)

Page 40: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

40

Cenas de Teste - Benchmarks

Toys(11K tris)

Marbles(9K tris)

Forest(174K tris)

Page 41: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

41

Cenas Estáticas - CAD

Resultados P-40 Escalabilidade Descarte por oclusão

Sombras Cerca de 50% mais lento

Reflexões Pior para modelos grandes

Quadros por segundo (fps)

Page 42: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

42

Cenas Estáticas - Benchmarks

“Forest” é pior caso para Grade Uniforme “Teapot in a stadium”

Sombras Até 50% mais lento

Reflexões Até 85% mais lento “Forest” pior (modelo grande)

Quadros por segundo (fps)

Page 43: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

43

Cenas Dinâmicas - Benchmarks

Reconstrução da Grade Uniforme Custo pequeno (-10%) Exceto “Forest” (-30%)

Quadros por segundo (fps)

Page 44: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

44

Trabalhos Relacionados

Desempenho até 4x mais rápido que BVH e Grade na CPU “Toys”

Melhor que CPU kd-tree e pior que GPU kd-tree “Forest”

Pior que ambas pesquisas com kd-tree

Quadros por segundo (fps)

Page 45: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

45

Etapas de Visualização

Enviar dados para GPU é rápido Construção da Grade mais rápida que CPU Kd-tree mais lenta para ser construída Gargalo: etapa de traçado de raios

Tempo de cada etapa (ms)

Page 46: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

46

Demonstração

Vídeos

Page 47: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Conclusão

Revisão dos resultados e proposta inicial

Page 48: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

48

Objetivos Atingidos

Construção da Grade Uniforme na GPU Implementação em paralelo Rápida e escalável

Traçado de raios de cenas dinâmicas Desempenho interativo Sombras, reflexões

Page 49: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

49

Contribuições

Construção da Grade Uniforme na GPU Mais rápido que pesquisas similares na CPU

Traçado de raios na GPU Mais rápido que Grade e BVH na CPU Cenas esparsas

Mais lento que kd-tree na CPU e GPU Várias melhorias possíveis

Page 50: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

Trabalhos Futuros

Melhorias e novas pesquisas

Page 51: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

51

Próximos Passos

Grades hierárquicas Várias Grades (movimento de corpo rígido) Distância até próxima célula ocupada Outras estruturas na GPU (BIH, BVH) Traçar pacotes de raios Simulação física

Page 52: Traçado de Raios de Cenas Dinâmicas na GPU Autor: Paulo Ivson Netto Santos Orientador: Waldemar Celes Filho 23 de Março de 2009 psantos@tecgraf.puc-rio.br.

52

Bibliografia AMANATIDES, J.; WOO, A. A fast voxel traversal algorithm for ray tracing. In: IN EUROGRAPHICS

'87, p. 3-10, 1987.

MOLLER, T. A.; TRUMBORE, B. Fast, minimum storage ray-triangle intersection. JGTOOLS: Journal of Graphics Tools, 2, 1997.

SHEVTSOV, M.; SOUPIKOV, A. ; KAPUSTIN, A. Highly parallel fast kd-tree construction for interactive ray tracing of dynamic scenes. Comput. Graph. Forum, 26(3):395-404, 2007.

WALD, I.; PURCELL, T. J.; SCHMITTLER, J.; BENTHIN, C. ; SLUSALLEK, P. Realtime Ray Tracing and its use for Interactive Global Illumination. In: Eurographics State of the Art Reports, 2003.

WALD, I.; IZE, T.; KENSLER, A.; KNOLL, A. ; PARKER, S. G. Ray Tracing Animated Scenes using Coherent Grid Traversal. ACM Transactions on Graphics, p. 485-493, 2006. (Proceedings of ACM SIGGRAPH 2006).

WALD, I.; BOULOS, S. ; SHIRLEY, P. Ray Tracing Deformable Scenes using Dynamic Bounding Volume Hierarchies. ACM Transactions on Graphics, 26(1), 2007.

ZHOU, K.; HOU, Q.; WANG, R. ; GUO, B. Real-time kd-tree construction on graphics hardware. In: SIGGRAPH ASIA '08: ACM SIGGRAPH ASIA 2008 PAPERS, p. 1-11, New York, NY, USA, 2008. ACM.