190 likes | 292 Views
Ian Medeiros Joner Duarte Vanessa Leite. Otimização de Raytracing. Raytracing.
E N D
Ian Medeiros Joner Duarte Vanessa Leite Otimização de Raytracing
Raytracing O termo raytracing é usado livremente para designar uma infinidade de diferentes abordagens ao problema de rendering, desde que baseados no princípio de interseção de uma semireta (raio) com primitivas geométricas.
Raytracing: Complexidade O algoritmo usado para determinar a visibilidade ao longo de um raio requer que cada raio seja interseptado (testado) com TODAS as primitivas geométricas da cena O tempo para cada raio é, portanto, linear com o número de primitivas N:
No entanto, cada raio não passa próximo da maioria das primitivas Raytracing: Complexidade
Raytracing: otimizações iniciais • Melhorias no código: • Utilização de #define • Mudança de código economizando uma chamada isInShadow • Utilização de Paralelismo: • OpenMP
O objetivo das estruturas de aceleração é diminuir o número de interseções por raio Isso pode ser feito utilizando-se dois critérios: Permitindo a rejeição rápida e simultânea de grupos de primitivas Se possível, ordenando o processo de procura (intersecções), tal que as primitivas mais próximas da origem do raio sejam processadas primeiro, evitando processar as mais distantes se for encontrada uma interseção. Raytracing: Estruturas de Aceleração
Duas abordagens: Subdivisão do espaço: Grades regulares, Octrees, Kd-Ttrees – permitem aplicar os critérios 1 e 2 Subdivisão dos objetos: Bound Volume Hierarchy (BVH) – permite aplicar o critério 1. Raytracing: Estruturas de Aceleração
O espaço 3D é subdividido montando-se uma grade regular que o subdivide em espaços com mesma dimensão Raytracing: Grade regular
Vantagens: Construção muito rápida Desvantagens: Travessia pouco eficiente devido à má distribuição das primitivas pelos espaços Raytracing: Grade regular
O espaço é hierarquicamente e adaptativamente subdividido em 8 espaços Compromisso entre construção e travessia Raytracing: Octree
O espaço é subdividido em dois por um plano Cada um dos subespaços resultantes é depois subdividido da mesma forma até atingir um critério de parada Travessia mais eficiente se um bom critério de subdivisão for utilizado (ex: SAH) Quanto mais sofisticado o critério de subdivisão maior é o tempo necessário para a construção da árvore. Raytracing: KD-Tree
Raytracing: KD-Tree (SAH) SAH (Surface Area Heuristic) é uma heurística que leva em consideração a probabilidade de um determinado objeto ser interceptado ou não por um raio. CustoDivisao = CustoTravessia + P[pedaçoEsquerda |Cena] C(pedaçoEsquerda) + P[pedaçoDireita| Cena] C(pedaçoDireita)
X Y Z A C B D Raytracing: KD-Tree X Z tmin B Y D C A tmax
Os objetos são agrupados dentro de bounding volumes. Cada um desses grupos é depois subdividido hierarquicamente por outros volumes Raytracing: Bounding Volume Hierarchy
Não ordena o espaço Construção semelhante à KD-Tree Travessia ligeiramente inferior à KD-Tree Raytracing: Bounding Volume Hierarchy
A complexidade do raytracing com a utilização de estruturas de aceleração é logaritmica com relação ao número de estruturas na cena: O tempo de construção depende do critério de subdivisão do espaço/agrupamento de primitivas Raytracing: Complexidade 2
Critérios sofisticados (como o SAH para KD-Tree) resultam em travessias muito eficientes, entretanto exigem um tempo de construção muito elevado. Raytracing: Complexidade 2
Highly Parallel Fast KD-tree Construction for Interactive Ray Tracing of Dynamic Scenes - EUROGRAPHICS 2007 / D. Cohen-Or and P. Slavík Interactive k-D Tree GPU Raytracing (Daniel Reiter Horn, Jeremy Sugerman, Mike Houston, Pat Hanrahan – Stanford University) Construção eficiente de kd-trees para primitivas triangulares (Alessandro Ribeiro da Silva, Wallace Santos Lages - UFMG) Ray Tracing Interactivo: Estrutura de Aceleração - Ademar Gonçalves - Universidade do Minho, Braga, 2009 Referências