Ray Tracing com Octree
-
Upload
isabelle-rowen -
Category
Documents
-
view
48 -
download
0
description
Transcript of Ray Tracing com Octree
![Page 1: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/1.jpg)
Ray Tracing com Octree
Fundamentos da Computação GráficaThiago Marques Toledo
![Page 2: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/2.jpg)
Objetivos
Implementar um ray tracer básicoTal como nos slides de aulaInteiramente em CPU
Melhorar desempenho com uso de Octree
![Page 3: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/3.jpg)
Ray Tracer Básico
Modelo Blinn-PhongSombraReflexãoAplicação de TexturaSuporte a esferas e caixas alinhadas
![Page 4: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/4.jpg)
Cena Básica com OpenGL
![Page 5: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/5.jpg)
Cena Básica com Ray Tracing
![Page 6: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/6.jpg)
Cena Básica com Ray Tracing
![Page 7: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/7.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/8.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/9.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/10.jpg)
Experiências
![Page 11: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/11.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/12.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/13.jpg)
Octree (1 Nível)
![Page 14: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/14.jpg)
Octree (2 Níveis)
![Page 15: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/15.jpg)
Octree (3 Níveis)
![Page 16: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/16.jpg)
Octree (4 Níveis)
![Page 17: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/17.jpg)
Octree (5 Níveis)
![Page 18: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/18.jpg)
Octree (6 Níveis)
![Page 19: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/19.jpg)
Octree (7 Níveis)
![Page 20: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/20.jpg)
Octree (8 Níveis)
![Page 21: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/21.jpg)
Octree (8 Níveis)
![Page 22: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/22.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/23.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/24.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/25.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/26.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/27.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/28.jpg)
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: Ray Tracing com Octree](https://reader030.fdocuments.net/reader030/viewer/2022033018/56812baf550346895d8fe77c/html5/thumbnails/29.jpg)
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/