INF 2063 Tópicos em CG II Visualização de Modelos Massivos Peter Dam.

Post on 17-Apr-2015

103 views 0 download

Transcript of INF 2063 Tópicos em CG II Visualização de Modelos Massivos Peter Dam.

INF 2063Tópicos em CG II

Visualização de Modelos Massivos

Peter Dam

Asynchronous BVH Construction for Ray Tracing DynamicScenes on Parallel Multi-Core Architectures

Thiago Ize, Ingo Wald, Steven G. ParkerEurographics 2007

Paper

História (Ray Tracing x Hardware)

• O ray tracing (traçado de raios) data dos anos 90, com o uso de grandes supercomputadores para atingir tempo interativo

• Só recentemente ray tracing foi considerado como possivelmente viável para cenas complexas em tempo real

• Multi-cores, GPUs programáveis e hardware dedicado a ray tracing 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 BVHAsynchronous Rebuild

• 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

- Somente usando técnica de “refit”- Rebuild usando heurística de Lauterbach- Rebuild assíncrono

FPS x Tempo de execução

Resultados

- Método “sweep-build” (BVH melhor, mas demora mais para construir)- Método “approximate build” (BVH pior, mas bem mais rápido para construir)

FPS x Tempo de execução

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