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
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
4.3 Resultados 81<br />
4.3.1 Elementos <strong>de</strong> primeira or<strong>de</strong>m<br />
Para testar a abordagem proposta <strong>de</strong> estimativa <strong>de</strong> bases tangentes (vetor normal, vetor tangente<br />
e vetor bitangente), implementamos um conjunto <strong>de</strong> três sha<strong>de</strong>rs HLSL compatíveis com o mo<strong>de</strong>lo<br />
<strong>de</strong> sha<strong>de</strong>r 3.0. Cada sha<strong>de</strong>r realiza um passo do algoritmo <strong>de</strong>scrito na seção 4.2.1. A listagem dos<br />
códigos-fonte é mostrada no apêndice A.<br />
De modo a validar nossa técnica, implementamos uma aplicação <strong>de</strong> teste em C++/Direct<strong>3D</strong> que<br />
carrega na GPU uma geometria estática e, para cada quadro <strong>de</strong> exibição, <strong>de</strong>sloca cada vértice ao<br />
longo <strong>de</strong> seu vetor normal. O valor <strong>de</strong> <strong>de</strong>slocamento é <strong>de</strong>finido por uma textura volumétrica <strong>de</strong> ruído<br />
<strong>de</strong> Perlin amostrada no processador <strong>de</strong> vértices. O acesso à textura é feito <strong>de</strong> tal modo que um <strong>de</strong><br />
seus eixos está associado ao tempo da animação. Assim, diferentes <strong>de</strong>slocamentos <strong>de</strong> geometria<br />
são produzidos para cada quadro <strong>de</strong> exibição. A geometria é ren<strong>de</strong>rizada com iluminação <strong>de</strong> Phong<br />
avaliada para cada pixel, e normal mapping com texturas <strong>de</strong>finidas no espaço tangente. Para obter<br />
resultados satisfatórios <strong>de</strong> iluminação, utilizamos nossa técnica para recalcular as bases tangentes em<br />
cada quadro. Os mo<strong>de</strong>los utilizados foram esferas com diferentes níveis <strong>de</strong> refinamento da malha. A<br />
aparência final <strong>de</strong> um <strong>de</strong>sses mo<strong>de</strong>los após a <strong>de</strong>formação e aplicação do normal mapping é mostrada<br />
na figura 4.1.<br />
O <strong>de</strong>sempenho <strong>de</strong> nosso algoritmo foi medido em um computador AMD Athlon 64 3500+ <strong>de</strong><br />
2.2GHz e 2GB RAM, equipado com uma placa gráfica NVIDIA GeForce 8800 GTX com 768MB.<br />
Para medir o tempo <strong>de</strong> processamento, não consi<strong>de</strong>ramos o tempo necessário a ren<strong>de</strong>rização com a<br />
finalida<strong>de</strong> <strong>de</strong> exibição dos objetos, uma vez que isto <strong>de</strong>pen<strong>de</strong> largamente das técnicas <strong>de</strong> iluminação<br />
e mapeamento <strong>de</strong> <strong>de</strong>talhes <strong>3D</strong> utilizadas. Assim, nossas medições mostram apenas a sobrecarga do<br />
cálculo das bases tangentes.<br />
O gráfico da figura 4.3 mostra uma comparação do tempo <strong>de</strong> processamento necessário para calcu-<br />
lar, na GPU, bases tangentes completas (normal, tangente, bitangente) e apenas normais aos vértices,<br />
em um mo<strong>de</strong>lo com um número crescente <strong>de</strong> vértices. Como esperado, o tempo <strong>de</strong> processamento<br />
aumenta linearmente com relação ao número <strong>de</strong> vértices. O cálculo dos vetores tangente e bitangente<br />
adiciona uma sobrecarga <strong>de</strong> aproximadamente 40% ao cálculo isolado dos vetores normais aos vér-<br />
tices. Os tempos convergem para aproximadamente 0.2 milissegundos na geometria mais simples.<br />
Esta sobrecarga constante é associada ao ajuste dos estados <strong>de</strong> ren<strong>de</strong>rização para os três passos <strong>de</strong><br />
ren<strong>de</strong>rização.<br />
A figura 4.4 apresenta os tempos <strong>de</strong> processamento para calcular bases tangentes e vetores nor-<br />
mais em um mo<strong>de</strong>lo <strong>de</strong> chaleira composto <strong>de</strong> 15.578 vértices e 30.800 faces, utilizando diferentes<br />
abordagens. Em (A) o cálculo é realizado inteiramente na CPU e os resultados são gravados na tex-<br />
tura <strong>de</strong> atributos <strong>de</strong> vértices utilizada posteriormente na GPU; em (B) o cálculo é realizado na CPU<br />
mas os resultados não são transferidos para os mapas <strong>de</strong> atributos na memória <strong>de</strong> ví<strong>de</strong>o para serem