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)
• 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ção
KD-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ção
Grid
• 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ção
BVH
• 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 BVH
Refitting
• 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 BVH
Rebuild
• 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 BVH
Asynchronous 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
FPS x Tempo de execução
- Somente usando técnica de “refit”
- Rebuild usando heurística de Lauterbach
- Rebuild assíncrono
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
Download

Peter_INF2063_T1 - PUC-Rio