Fundamentos da Computação Gráfica Thiago Marques Toledo.

29
Ray Tracing com Octree Fundamentos da Computação Gráfica Thiago Marques Toledo

Transcript of Fundamentos da Computação Gráfica Thiago Marques Toledo.

Page 1: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Ray Tracing com Octree

Fundamentos da Computação GráficaThiago Marques Toledo

Page 2: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Objetivos

Implementar um ray tracer básicoTal como nos slides de aulaInteiramente em CPU

Melhorar desempenho com uso de Octree

Page 3: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Ray Tracer Básico

Modelo Blinn-PhongSombraReflexãoAplicação de TexturaSuporte a esferas e caixas alinhadas

Page 4: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Cena Básica com OpenGL

Page 5: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Cena Básica com Ray Tracing

Page 6: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Cena Básica com Ray Tracing

Page 7: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Experiências

Estruturas CríticasRaio e VetorDevem ser tão pequenos quanto possívelCriação de cópias deve ser evitada

Impacto MUITO grande no desempenhoUso de referências constantes na passagem de funçõesCálculos com vetores durante tratamento de colisão deve ser feito com cuidado

Page 8: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Experiências

Tratamento de InterseçõesNormalmente a primeira implementação é ingênuaNem sempre é necessário saber ponto de colisão e normal relacionada

Testes de raio contra hierarquias de volumePodem existir otimizações

Há muita pesquisa em algoritmos de colisãoSe não é o objeto de pesquisa, procure o mais recente!

É o bottleneck do Ray Tracer

Page 9: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Experiências

Tratamento de InterseçõesRaio x Esfera

Tal como nos slides de aulaAvalia uma equação de segundo grauHá algoritmos mais eficientes

Raio x AABB (avaliando ponto de contato)Método desenvolvido por Kay e KayjiaAvaliação por Slabs (espaço entre dois planos paralelos)Calcula Interseção do Raio com slabs XYZ (pontos T1 e T2)Se o maior T1 (T-Near) for menor que o menor T2 (T-Far)

Há interseção

Page 10: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Experiências

Page 11: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree

Hierarquia de AABBsEspaço é dividido em 8 AABBs sucessivamente

Nível da árvore definido por usuárioNão é necessário descer um nível numa região em que não há objetos

Testes de interseção são feitos a partir da raizSe não houver interseção, toda a área é descartada (filhos não precisam ser testados)

Page 12: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree

Pode-se considerar um volume envolvente representando o objeto na construção da árvoreFalso positivo no teste de intreseção não é um problema

Page 13: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (1 Nível)

Page 14: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (2 Níveis)

Page 15: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (3 Níveis)

Page 16: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (4 Níveis)

Page 17: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (5 Níveis)

Page 18: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (6 Níveis)

Page 19: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (7 Níveis)

Page 20: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (8 Níveis)

Page 21: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree (8 Níveis)

Page 22: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree

OpenGLFrustum CullingNão é necessário enviar para renderização objetos fora do campo de visãoObjetos podem ser referenciados em mais de um nó na hierarquiaNecessário identificar objetos que já foram renderizados

Frame Par/Frame ÍmparNão há ganho quando todos os objetos estão visíveis

Page 23: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree

Ray TracerObjetos fora do frustrum podem influenciar renderizaçãoGanho em diminuir o número de testes de interseção de raioRaio pode cruzar vários nós contendo um mesmo objeto, que deve ser testado uma única vez

Objeto armazena ID e resultado do último raioFalso positivo não é um problema, já que raio precisa sempre ser testado contra objetoPode haver ganho mesmo que todos os objetos estejam visíveis

Page 24: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Octree

Interseção Raio x AABBNão é necessário ponto de contatoÉ crítico para o desempenhoAlgoritmo proposto por EisemannUso de Slabs, mas com pré-processamento para classificação do raioMais rápido que o método anterior, mas não identifica ponto de contato

Page 25: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Comparação de Tempo

0 1 2 3 4 5 6 7 80.0

50.0

100.0

150.0

200.0

250.0 229.8

117.4

27.96.9 4.1 4.7 6.3 8.2 10.5

Cena 640x480 com 9261 Esferas

Níveis da Octree

Tem

po (s

)

Page 26: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Comparação de Tempo

0 1 2 3 4 5 6 7 80.0

50.0

100.0

150.0

200.0

250.0

144.7

80.5

20.85.9 3.4 3.5 4.4 4.8 5.3

Cena 640x480 com 9261 AABBs

Níveis da Octree

Tem

po (s

)

Page 27: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Comparação de Tempo

Diferença grande entre esferas e AABBs229,8s x 144,7sSuperfícies não exatamente do mesmo tamanho…Maior diferença está na eficiência do tratamento de interseçãoAlgoritmo para Esfera é caro

Existem outros melhoresAlgoritmo para AABB tem boa performance

Page 28: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Comparação de Tempo

Ganho máximo em torno de 97,5% em relação à renderização sem OctreeHá um número de níveis a partir do qual é melhor testar todos os objetos

Depende da cena, de tamanho dos objetos, etc.Nas cenas testadas, melhor resultado foi com 4 níveis

Page 29: Fundamentos da Computação Gráfica Thiago Marques Toledo.

Referências

Slides de aulaReal Time Rendering

T. Akenine-Möller, E. Haines, N. HoffmanChapter 16: Intersection Test Methods

http://www.siggraph.org/education/materials/HyperGraph/raytrace/rtinter3.htmhttp://jgt.akpeters.com/papers/EisemannEtAl07/