Apresentação - PUC-Rio

Propaganda
Fundamentos da Computação Gráfica


PUC-Rio – Pontifícia Universidade Católica do Rio de Janeiro
 DI – Departamento de Informática
 Mestrado em Informática
 Disciplina: Fundamentos da Computação Gráfica
 Professor: Marcelo Gattass
Pedro Nuno de Souza Moura
Apresentação

Esta apresentação tem por objetivo demonstrar os algoritmos
implementados e os resultados obtidos na otimização do Ray
Tracing.
Agenda

Otimizações no Código

Interseção com Primitivas

Estruturas de Dados Espaciais
Otimizações no Código

Durante os lançamentos dos raios e, principalmente, no cálculo das
interseções, um número muito grande de chamadas às funções da
bibilioteca “algebra.h” é feito.

Excessivo número de passagens por valor do TAD Vetor.

Utilizou-se a diretiva de compilador #define para tentar otimizar.

Visualizou-se um ganho de tempo considerável.
Otimizações no Código

A renderização é realizada pixel a pixel, causando um excessivo
número de interrupções.

Alteração para renderização linha a linha.
Interseções com Primitivas

Para a esfera, verificou-se que é o método mais eficiente constante
na literatura.

Para o triângulo, o método constante no código era o de Badouel,
em que se determina a interseção do raio com o plano e, então,
verifica-se se o ponto está contido no triângulo.

O método estudado foi o de Möller e Trumbore [2].
Interseções com Primitivas

Um triângulo é escrito nas coordenadas baricêntricas:
T (u, v)  (1  u  v)V0  u V1  v V2

A interseção entre o raio e o triângulo é obtido através da resolução
da seguinte igualdade:
O  tD  (1  u  v)V0  u V1  v V2

Cuja fórmula fechada pode ser reescrita da seguinte forma:
t 
1
u  
  (D  E )  E
2
1
v 
(T  E1 )  E2 
 (D  E )  T   1
2

 PE
1
 (T  E1 )  D 
Q  E2 
 P T 


 Q  D 
Comparação

Antes e depois das otimizações feitas.
Comparação

Antes e depois das otimizações feitas.
Comparação

Média de 36,17 % sobre todas as
cenas.
Anteriores (s)
Novos (s)
Diferença
Melhoria
5,0780
3,1250
1,9530
38,46%
8,7810
4,5150
4,2660
48,58%
1,2190
0,9210
0,2980
24,45%
1,5000
1,1090
0,3910
26,07%
1,7040
1,2350
0,4690
27,52%
1,5310
1,0780
0,4530
29,59%
1,3440
1,0000
0,3440
25,60%
3,2970
2,1720
1,1250
34,12%
15,3440
6,7340
8,6100
56,11%
14,9060
12,0000
2,9060
19,50%
3,5000
1,1250
2,3750
67,86%
5,2913
3,1831
2,1082
36,17%
Estruturas de Dados Espaciais

Possibilidades para diminuição do número de raios lançados:

Uso de estruturas espaciais para particionamento do espaço, tais
como Octree e Kdtree.

Uso de Bounding Box e Hierarquia de Volumes Limitantes, para
diminuir o tempo de cálculo de interseções.
Referências Bibliográficas

[1] GLASSNER, Andrew. An Introduction to Ray Tracing.

[2] MÖLLER, Tomas; TRUMBORE, Ben. Fast, Minimum Storage
Ray/Triangle Intersection.

[3] KOMATSU, Kazuhiko; et al. A Fast Ray Frustum-Triangle
Intersection Intersection Algorithm with Precomputation and Early
Termination. In: IPSJ Online Transactions Vol. 1, 2003.

[4] SEGURA, Rafael; FEITO, Francisco. Algorithms to Test RayTriangle Intersection: Comparative Study. Departamento de
Informática, Universidade de Jaén.
Download