Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
4.3 Resultados 83<br />
utilizados em outras etapas da arquitetura <strong>de</strong> interação; em (C) o cálculo é realizado na GPU usando<br />
nossa técnica; em (D) o processamento é feito na GPU mas a valência máxima <strong>de</strong> vértices é limitada a<br />
8, tornando possível compilar o sha<strong>de</strong>r sem o uso <strong>de</strong> instruções <strong>de</strong> fluxo <strong>de</strong> controle dinâmico; em (E)<br />
o cálculo também é realizado na GPU, com valência máxima <strong>de</strong> vértices limitada a 4. Os resultados<br />
da abordagem (B) são utilizados aqui apenas para mostrar o quanto a eficiência aumenta quando não<br />
está sendo consi<strong>de</strong>rada a sobrecarga resultante da transferência <strong>de</strong> dados entre a CPU e a GPU. De<br />
qualquer forma, tanto nos casos (A) e (B), o tempo <strong>de</strong> processamento é muito maior do que o tempo<br />
obtido do cálculo na GPU.<br />
A eficiência em (D) e (E) aumenta porque o número <strong>de</strong> faces avaliadas é menor, mas também<br />
porque o laço utilizado para acumular os vetores tangentes às faces po<strong>de</strong> ser <strong>de</strong>senrolado comple-<br />
tamente pelo compilador do sha<strong>de</strong>r. Em geral, malhas triangulares têm uma valência média <strong>de</strong> 6<br />
vértices, porém com vértices isolados que po<strong>de</strong>m conter até centenas <strong>de</strong> faces adjacentes [Kälberer<br />
et al., 2004]. A diferença <strong>de</strong> <strong>de</strong>sempenho entre o algoritmo com valência arbitrária <strong>de</strong> vértices e<br />
valência <strong>de</strong> vértices limitada a 6 é <strong>de</strong> 25% (base tangente) a 30% (apenas vetor normal).<br />
Em comparação com os mesmos algoritmos executados na CPU, a robustez das estimativas <strong>de</strong>-<br />
pen<strong>de</strong> exclusivamente do formato numérico utilizado pelos registradores e texturas. Em nosso caso<br />
utilizamos o formato <strong>de</strong> ponto flutuante <strong>de</strong> 32 bits (IEEE 754, s23e8), conforme consta da especifi-<br />
cação das APIs gráficas. Assim, os resultados são equivalentes aos produzidos por um algoritmo na<br />
CPU utilizando ponto flutuante <strong>de</strong> precisão simples.<br />
4.3.2 Elementos <strong>de</strong> segunda e terceira or<strong>de</strong>m<br />
Para validar nossa proposta <strong>de</strong> estimativa <strong>de</strong> elementos <strong>de</strong> geometria diferencial <strong>de</strong> segunda e ter-<br />
ceira or<strong>de</strong>m consi<strong>de</strong>rando os requisitos apresentados na seção 4.2, realizamos testes <strong>de</strong> <strong>de</strong>sempenho<br />
e testes <strong>de</strong> robustez sobre malhas triangulares obtidas <strong>de</strong> mo<strong>de</strong>los digitalizados e malhas obtidas da<br />
amostragem <strong>de</strong> superfícies analíticas.<br />
A implementação do algoritmo foi realizada tanto com processamento na CPU como processa-<br />
mento na GPU. Na CPU, o algoritmo foi implementado em C++ usando a biblioteca LAPACK <strong>de</strong><br />
álgebra linear [An<strong>de</strong>rson et al., 1999]. Também implementamos com esta biblioteca os métodos <strong>de</strong><br />
estimativa baseados apenas na vizinhança <strong>de</strong> 1-anel <strong>de</strong> vértices, como a aproximação por superfícies<br />
quadráticas, superfícies cúbicas [Goldfeather and Interrante, 2004], aproximação pela curvatura nor-<br />
mal e média <strong>de</strong> tensores segundo Rusinkiewicz [2004]. Isto foi feito para uniformizar os métodos<br />
numéricos utilizados em comum pelos algoritmos citados e assim obter resultados mais confiáveis<br />
para os testes <strong>de</strong> robustez. Nesse caso, os métodos <strong>de</strong> resolução <strong>de</strong> sistema <strong>de</strong> equações lineares e<br />
extração <strong>de</strong> autovalores e autovetores é fornecido pela biblioteca LAPACK e é o mesmo para todos<br />
os algoritmos.