180 likes | 265 Views
INF 2063 Tópicos em CG II Visualização de Modelos Massivos. Peter Dam. Paper. Asynchronous BVH Construction for Ray Tracing Dynamic Scenes on Parallel Multi-Core Architectures. Thiago Ize , Ingo Wald, Steven G. Parker. Eurographics 2007. História (Ray Tracing x Hardware).
E N D
INF 2063Tópicos em CG IIVisualização de Modelos Massivos Peter Dam
Paper Asynchronous BVH Construction for Ray Tracing DynamicScenes on Parallel Multi-Core Architectures Thiago Ize, IngoWald, Steven G. Parker Eurographics 2007
História (Ray Tracing x Hardware) • O raytracing (traçado de raios) data dos anos 90, com o uso de grandes supercomputadores para atingir tempo interativo • Só recentemente raytracing foi considerado como possivelmente viável para cenas complexas em tempo real • Multi-cores, GPUs programáveis e hardware dedicado a raytracing vêm aumentando o desempenho significativamente
História (Ray Tracing x Algoritmos) • Para driblar as limitações de hardware algumas técnicas de aceleração e otimização foram estudadas • Uso de estruturas de aceleração espaciais
Estruturas de AceleraçãoKD-Tree • Até 2005 quase todas as implementações de ray tracing usavam kd-tree. • Aceleração de renderização ótima • Custo de construção é altamente proibitivo • Construído geralmente em pré-processamento • Problemas para cenas dinâmicas
Estruturas de AceleraçãoGrid • Aceleração da renderização média • Custo de construção ótima • Geralmente reconstruído a cada quadro para cenas dinâmicas, já que tem custo linear • Bom para cenas dinâmicas, mas o ganho de desempenho não é muito grande
Estruturas de AceleraçãoBVH • Aceleração da renderização boa • Custo de construção média • Tradicionalmente lenta para construir, então a KD-Tree seria uma opção melhor que BVH • Com as técnias demonstradas no paper a construção é feita em tempo aceitável, fazendo com que o BVH tenha o melhor desempenho para cenas dinâmicas
Atualizando a BVHRefitting • Atualiza a BVH para a nova configuração da cena • Só funciona para cenas que não mudam a quantidade de triângulos ou conectividade de vértices • BVH fica correto, porém não necessariamente eficiente • Gradativamente diminui desempenho
Atualizando a BVHRebuild • Segundo Lauterbach, uma cena funciona bem com “refitting” durante uma certa quantidade de quadros • Usa-se uma heurística para avaliar a eficiência da BVH atual (atualizada com “refitting”) • Se a eficiência está abaixo de um limite, constrói uma nova BVH
Atualizando a BVHAsynchronousRebuild • Mantém uma thread construindo nova BVH • Enquanto a thread construtora trabalha, todas as outras fazem o render e manutenção (refitting) da BVH atual • Quando a nova BVH estiver pronta, muda para esta nova e descarta a antiga, disparando a construção de uma nova BVH
Métodos de Construção • O algoritmo assíncrono de atualização independe do método de construção • Pode demorar quanto tempo quiser para reconstruir a BVH, mas a estrutura estará defasada exatamente o tempo de construção • Encontrar método de construção que equilibre tempo de construção com qualidade da estrutura
Cenas Cena: “Bart Museum” Dados: 262K triângulos; gerado para testes de estresse; grandes deformações Cena: “Fairy Forest 2” Dados: 394K triângulos; animações com keyframes; quase todos os triângulos deformam a cada quadro; cena semelhante à de um jogo
Resultados • Todos os testes feitos com render em tamanho 1024 x 1024 • Não foram lançados raios secundários (sombra, reflexão, etc.) pois a técnica trata da construção da estrutura de aceleração e estes raios só impactam no tempo de renderização, e não de construção da estrutura • Tempo de construção na cena BART: 170ms • Tempo de construção na cena Fairy Forest: 230ms
Resultados - Somente usando técnica de “refit” - Rebuild usando heurística de Lauterbach - Rebuild assíncrono FPS x Tempo de execução
Resultados • Dependente da quantidade de núcleos do sistema • Quanto mais núcleos, mais visível é a vantagem desta técnica • Com poucos (menos de 4) núcleos a técnica até mesmo reduz a velocidade
Resultados FPS x Tempo de execução - Somente usando técnica de “refit” - Rebuild usando heurística de Lauterbach - Rebuild assíncrono
Resultados FPS x Tempo de execução - Método “sweep-build” (BVH melhor, mas demora mais para construir) - Método “approximate build” (BVH pior, mas bem mais rápido para construir) Diferença entre os métodos de construção. Como a técnica de “sweep-build” demora mais, há um número maior de quadros renderizados usando a BVH “refitted”, resultando em um desempenho pior. Além disso, quando a nova BVH fica pronta ela já está desatualizada.
Conclusão • Para cenas que deformam pouco, somente usar o método “refitting” pode ser melhor • Para cenas pequenas onde reconstruir completamente a estrutura a cada quadro é possível este método também é desnecessário • Não há queda abrupta de desempenho para reconstruir BVH • Ótima escalabilidade