A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Hardware assisted rendering of csg models

Apresentações semelhantes


Apresentação em tema: "Hardware assisted rendering of csg models"— Transcrição da apresentação:

1 Hardware assisted rendering of csg models
Fabiano Segadaes Romeiro Orientadores: Luiz Velho Luiz Henrique de Figueiredo

2 Motivação CSG: Modelagem hierárquica de objetos complexos
Objetos gerados por combinações booleanas de primitivos simples

3 Motivação Interatividade é importante:
Facilita o processo de design do objeto Permite visualização por vários angulos. Porém é difícil: escalabilidade.

4 Abordagens anteriores
Boundary representations Depth-layering (Goldfeather) Recentemente: algoritmos que usam os recursos da GPU (Wiegand, Rappoport, Stewart, Guha, etc) Blist, Depth-peeling (Hable)

5 Abordagens anteriores
Abordagens mais recentes usando GPU são bandwith limited Depth-peeling e depth-layering usam o stencil buffer – limitação no número de primitivos

6 Abordagem Superfícies de objetos CSG tem representação local simples
Exceções são pontos pertencentes a interseção de superfícies de 3 ou mais primitivos 1o item - Localmente superficie pode ser representada por um primitivo ou operação booleana de dois primitivos

7 Abordagem Dividir espacialmente o objeto até que:
Em cada célula a representação seja simples Ou a célula corresponda a menos de um determinado número de pixels Renderizar cada célula na GPU por traçado de raios 1b – nesse caso a celula não e renderizada > corrsponde a excecao mencionada no slide anterior

8 Subdivisão Espacial Octree é usada para obter células com representação local simples Célula inicial: bounding box do objeto Cada célula da octree mantém a representação local simplificada da restrição do objeto à célula em questão

9 Subdivisão Espacial Subdivisão em uma dada célula pára quando:
Representação local é simples o suficiente Célula não contém superfície do objeto csg Célula ocupa menos de determinado número de pixels na tela 1o item: simples o suficiente para ser renderizada efetivamente na GPU 2o item: celula no interior do objeto ou não intersecta o objeto 3o item: células fora do campo de visão ocupam 0 pixels e portanto – tradeoff entre qualidade e velocidade

10 Subdivisão Espacial – Obtenção da representação local simplificada
Procedimento recursivo simplifica a representação em cada célula usando a representação simplificada de sua célula pai como ponto de partida Procedimento verifica

11 Subdivisão Espacial – Obtenção da representação local simplificada
Procedimento testa interseção da célula com primitivos na representação local associada a ela. Seguindo uma série de regras de redução a representação é simplificada. 2o item: dependendo do resultado da interseção dos primitivos e das operações booleanas entre eles

12 Subdivisão Espacial Após construída a octree ela é percorrida de maneira front-to-back. Cada célula cuja representação simplificada é não-nula e não contém mais de 3 primitivos tem o objeto csg formado pela sua representação simplificada renderizada na GPU

13 Traçado de raios na GPU Existem diversas abordagens recentes para o traçado de raios na GPU Extensão do traçado de raios de primitivos de Toledo et al para traçado de raios de operações booleanas entre dois primitivos

14 Traçado de raios na GPU - primitivos
Bounding box do primitivo é renderizada e vertex e pixel shaders apropriados são carregados Em cada pixel das faces das bounding boxes o pixel shader determina se o raio partindo da camera até o pixel em questão intersecta ou não o primitivo. Caso afirmativo o cálculo do shading é realizado Para realizar o traçado de raios de primitivos a bounding box do primitivo em questão é renderizada e vertex e pixel shaders apropriados são carregados

15 Traçado de raios na GPU - primitivos
Para renderizar a restrição de primitivos a uma determinada célula: Renderizada a restrição do bounding box do primitivo à célula e para cada pixel Segmentos do raio que intersectam o primitivo e a célula são intersectados para obter o segmento determinante Dependendo do segmento resultante o pixel é descartado ou renderizado após sua cor ser calculada. É necessário calcular a interseção do raio com a célula 1b- em cada pixel

16 Traçado de raios na GPU – operações booleanas de primitivos
Modificações em cima do algoritmo para primitivos: Complemento Interseção Diferença União complemento - o segmento de raio correspondente a interseção com o primitivo é complementado antes de ser intersectado com o segmento de raio correspondente a interseção com a célula intersecao - Os segmentos de raio correspondentes as interseções com os primitivos são intersectados e o resultado é intersectado com o segmento de raio correspondente a interseção com a célula diferenca - Análogo a interseção, porém um dos segmentos de raio correspondentes as interseções com os primitivos é complementado Uniao - Para implementar a união de primitivos os mesmos são renderizados individualmente e o depth buffer se responsabiliza por manter a consistência

17 Modelagem e visualização interativa
Importante: CAD e engenharia de partes Modificacoes em cima do algoritmo para atingir visualizacao interativa

18 Modelagem e visualização interativa
A medida que o objeto CSG é visualizado podem ocorrer: Mudanças de iluminação Mudanças no objeto CSG Mudanças na localização/direção da camera Mudanca de iluminacao: À medida que fonte de luz se move a octree associada ao objeto não se altera – para renderiza-lo sob essa nova configuração basta percorrer a octree novamente, fazendo o traçado de raio nas células na GPU Mudanca de objeto csg: Porém a medida que o objeto se altera a octree precisa ser recalculada. Mudanca de camera: A medida que a camera se move a projecao das celulas na tela passa a ocupar um numero diferente de pixels – CONTINUA NO PROX SLIDE

19 Modelagem e visualização interativa
No caso em que o objeto se altera: Somente é necessário recalcular a octree nas partes em que o objeto se alterou Renderizar novamente somente estas partes. Otimização: verificar se células estão oclusas antes de renderiza-las Dificuldade: realizar um occlusion query pode não compensar tendo em vista que o mesmo introduz stalls no pipeline da GPU. SOLUÇÃO: abordagem hierarquica No caso em que o objeto se altera, somente é necessário recalcular a octree nas partes em que o objeto se alterou, e renderizar novamente somente estas partes (as demais permanecem inalteradas). Uma possível otimização é a verificação se as células estão oclusas antes de realizar o traçado de raios nas mesmas, de forma a economizar tempo da GPU. Porém realizar um occlusion query porém pode não valer a pena tendo em vista que o mesmo introduz stalls no pipeline da GPU SOLUCAO: abordagem hierárquica

20 Resultados Testes realizados com objetos representativos do uso comum de CSG Enfoque dado a performance da operação mais complexa (diferença) Verificação de corretude - realizadas comparações com o povray Escalabilidade testada usando-se modelos de crescente complexidade

21 Resultados - Modelos de menor complexidade escalam na mesma proporcao que o instruction throughput - Modelos mais complexos apresentam outros gargalos: complexidade da octree – subdivisao/cpu bound, bandwidth (passagens de parametros para pixel;vertex shaders)

22 Resultados

23 Resultados Performance mostrou-se, como esperado, dependente de dois fatores: Complexidade de profundidade Área ocupada pelo objeto na tela

24 Resultados – occlusion queries

25 Resultados – occlusion queries

26 Resultados – occlusion queries

27 Resultados – occlusion queries

28 Resultados – occlusion queries
Mais útil em determinados viewpoints Maior impacto em GPUs mais lentas Nível hierárquico ótimo em que testar para oclusão varia – processo de otimização que detecte nível ótimo geraria constante ganho de performance independente de viewpoint. maior impacto em GPUs mais lentas: testar por oclusao somente vale a pena quando o tempo total gasto na verificacao da oclusao eh menor que o tempo necessario para renderizar as celulas que estavam oclusas

29 Resultados - corretude

30 Resultados - corretude

31 Resultados - corretude

32 Resultados - corretude
Quase nenhum artefato visível Artefatos existem onde são esperados: nos pontos pertencentes a superfícies de 3 primitivos diferentes

33 Conclusões Abordagem mais dependente de instruction throughput do que bandwidth em modelos razoavelmente complexos Modelos muito complexos começam a ser limitados pela CPU e pela CPU/GPU bandwidth

34 Trabalhos futuros Inter-object shadows
rocedimento de otimização para occlusion queries Volumetric rendering Mais primitivos


Carregar ppt "Hardware assisted rendering of csg models"

Apresentações semelhantes


Anúncios Google