Visibility Culling
Transcrição
Visibility Culling
Visibility Culling Conservative Visibility Preprocessing using Extended Projections Durand et al João Carlos Freitas - LCG - Junho 2001 Roteiro • • • • • • • • Motivação Técnicas Existentes Visão Geral Extended Projections Algoritmo - Pré-processamento e Visualização Resultados Conclusões Bibliografia Motivações • Aplicações atuais utilizam número muito grande de polígonos • Excesso de polígonos renderizados inviabiliza visualização de cenas complexas em tempo real • Algoritmos de visibility culling reduzem o número de polígonos que são renderizados • Os algoritmos tentam evitar que sejam renderizados polígonos que não são vistos na cena Técnicas Existentes • Back-face culling • View frustum culling Técnicas Existentes • Occlusion Culling – Identifica as partes visíveis da cena • cell-based: Portais e BSP • point-based: tempo real • preprocess: pré-processamento Visão Geral • Cell: espaço é dividido em células, que contêm os objetos • Viewing cell: região de movimento do observador • PVS - Potentially Visible Set: grupo de objetos que podem ser vistos de um ponto de visão dentro da viewing cell. Quanto menor, melhor. • Extended Projection: operador usado para determinar o PVS de uma célula. Visão Geral • Pré processamento: – Definir viewing cells de uma cena – Calcular o PVS de cada célula • Visualização Interativa: – Renderizar objetos do PVS da viewing cell correspondente – Atualizar viewing cell à medida que observador se movimenta Extended Projections • Projeções em planos a partir de viewpoints • Objetos são divididos em duas categorias: ocultadores (occluders) e ocultados (occludees) • Para um objeto estar oculto para todos os viewpoints de uma viewing cell: – sua projeção estendida deve estar contida na projeção estendida de um occluder (Overlap Test) – deve estar atrás do occluder (Depth Test) Extended Projections • Projection de um occluder: interseção das projeções • Projection de um occludee: união das projeções Extended Projections • Projection de um occluder Extended Projections • Projection de um occludee Extended Projections • Depth Test – se a projeção de um occludee indica que o objeto pode estar invisível, é feito um DepthTest – para cada plano de projeção, é gerado um Depth Map. Cada pixel tem um valor de Depth associado do occluder – O valor do Depth Map é comparado ao do occludee. Se o Depth do occludee for menor, o objeto está visível – Foi usado também um Hierarchical Depth Map, para agilizar as comparações Extended Projections • Reprojection permite Occlusion Sweep com atualização do Occlusion Map Extended Projections • Occlusion Fusion Algoritmo - Pré Processamento • Criação das viewing cells, organizadas numa estrutura hierárquica espacial • Para cada viewing cell, devem ser escolhidos os occluders e os planos de projeção (6 planos) • Os occluders devem ser preferencialmente grandes, próximos da viewing cell e de baixa complexidade de renderização. Devem estar dentro do view frustum • Foi desenvolvido um algoritmo dinâmico que escolhe mais occluders em regiões onde existem muitos occludees visíveis Algoritmo - Pré Processamento • Cada plano de projeção tem associado um Depth Map e um Occlusion Map. • O Occlusion Map contém as Projections de todos os occluders selecionados. • Os occludees são testados recursivamente, para a geração do PVS • As viewing cells podem ser subdivididas caso o PVS seja muito grande. • Foi usado o mecanismo de armazenamento deltaPVS. Algoritmo - Visualização • Foi usada uma estrutura em grafo onde cada nó contém uma flag de visibilidade • Quando o observador entra num novo nó do grafo, a flag dos outros nós é atualizada de acordo com os dados obtidos no pré processamento. Resultados • Para uma cena de uma cidade, com um total de 6M de polígonos: – 96% de occlusion, 60 MB de PVS, 165 minutos, 0.81 s/célula, 18 vezes mais rápido que frustum culling Resultados Conclusões • O método é eficiente para ambientes estáticos. Mas ineficiente para occluders dinâmicos. • O tamanho das cenas após o pré processamento é bem menor. • O overhead de primitivas sendo renderizadas ainda é grande. • A fase de display não requer computação intensiva, ao contrário de métodos que fazem culling em tempo real • Implementação de LOD Bibliografia • Conservative Visibility Preprocessing using Extended Projections, Durand et al, 2000 • Visibility Culling using Hierarchical Occlusion Maps, Zhang et al, 1997 • Gamasutra • Gamedev