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

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

Fundamentos da Computação Gráfica Thiago Marques Toledo.

Apresentações semelhantes


Apresentação em tema: "Fundamentos da Computação Gráfica Thiago Marques Toledo."— Transcrição da apresentação:

1 Fundamentos da Computação Gráfica Thiago Marques Toledo

2 Implementar um ray tracer básico Tal como nos slides de aula Inteiramente em CPU Melhorar desempenho com uso de Octree

3 Modelo Blinn-Phong Sombra Reflexão Aplicação de Textura Suporte a esferas e caixas alinhadas

4

5

6

7 Estruturas Críticas Raio e Vetor Devem ser tão pequenos quanto possível Criação de cópias deve ser evitada Impacto MUITO grande no desempenho Uso de referências constantes na passagem de funções Cálculos com vetores durante tratamento de colisão deve ser feito com cuidado

8 Tratamento de Interseções Normalmente a primeira implementação é ingênua Nem sempre é necessário saber ponto de colisão e normal relacionada Testes de raio contra hierarquias de volume Podem existir otimizações Há muita pesquisa em algoritmos de colisão Se não é o objeto de pesquisa, procure o mais recente! É o bottleneck do Ray Tracer

9 Tratamento de Interseções Raio x Esfera Tal como nos slides de aula Avalia uma equação de segundo grau Há algoritmos mais eficientes Raio x AABB (avaliando ponto de contato) Método desenvolvido por Kay e Kayjia Avaliação por Slabs (espaço entre dois planos paralelos) Calcula Interseção do Raio com slabs XYZ (pontos T1 e T2) Se o maior T1 (T-Near) for menor que o menor T2 (T-Far) Há interseção

10

11 Hierarquia de AABBs Espaço é dividido em 8 AABBs sucessivamente Nível da árvore definido por usuário Não é necessário descer um nível numa região em que não há objetos Testes de interseção são feitos a partir da raiz Se não houver interseção, toda a área é descartada (filhos não precisam ser testados)

12 Pode-se considerar um volume envolvente representando o objeto na construção da árvore Falso positivo no teste de intreseção não é um problema

13

14

15

16

17

18

19

20

21

22 OpenGL Frustum Culling Não é necessário enviar para renderização objetos fora do campo de visão Objetos podem ser referenciados em mais de um nó na hierarquia Necessário identificar objetos que já foram renderizados Frame Par/Frame Ímpar Não há ganho quando todos os objetos estão visíveis

23 Ray Tracer Objetos fora do frustrum podem influenciar renderização Ganho em diminuir o número de testes de interseção de raio Raio pode cruzar vários nós contendo um mesmo objeto, que deve ser testado uma única vez Objeto armazena ID e resultado do último raio Falso positivo não é um problema, já que raio precisa sempre ser testado contra objeto Pode haver ganho mesmo que todos os objetos estejam visíveis

24 Interseção Raio x AABB Não é necessário ponto de contato É crítico para o desempenho Algoritmo proposto por Eisemann Uso de Slabs, mas com pré-processamento para classificação do raio Mais rápido que o método anterior, mas não identifica ponto de contato

25

26

27 Diferença grande entre esferas e AABBs 229,8s x 144,7s Superfícies não exatamente do mesmo tamanho… Maior diferença está na eficiência do tratamento de interseção Algoritmo para Esfera é caro Existem outros melhores Algoritmo para AABB tem boa performance

28 Ganho máximo em torno de 97,5% em relação à renderização sem Octree Há um número de níveis a partir do qual é melhor testar todos os objetos Depende da cena, de tamanho dos objetos, etc. Nas cenas testadas, melhor resultado foi com 4 níveis

29 Slides de aula Real Time Rendering T. Akenine-Möller, E. Haines, N. Hoffman Chapter 16: Intersection Test Methods raph/raytrace/rtinter3.htm


Carregar ppt "Fundamentos da Computação Gráfica Thiago Marques Toledo."

Apresentações semelhantes


Anúncios Google