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.
3.2 Estudo <strong>de</strong> casos 49<br />
Fig. 3.1: Estimativa incorreta do ponto <strong>de</strong> interseção entre a geometria <strong>de</strong>formada na GPU e o raio <strong>de</strong><br />
seleção calculado com ray picking avaliado na CPU.<br />
2002, 2004]. Neste tipo <strong>de</strong> animação, um mo<strong>de</strong>lo estático é submetido à GPU, juntamente com uma<br />
hierarquia <strong>de</strong> matrizes <strong>de</strong> transformação e atributos <strong>de</strong> vértices contendo valores <strong>de</strong> pon<strong>de</strong>ração da<br />
influência <strong>de</strong> cada matriz. Em tempo <strong>de</strong> execução, apenas as matrizes são modificadas e enviadas<br />
novamente à GPU. O processador <strong>de</strong> vértices aplica tais transformações a cada vértice <strong>de</strong> acordo<br />
com os valores <strong>de</strong> pon<strong>de</strong>ração associados, sem precisar recorrer à CPU. O resultado é uma geome-<br />
tria <strong>de</strong>formada, enviada diretamente para ren<strong>de</strong>rização. Para interação, este procedimento é repetido<br />
na CPU <strong>de</strong> modo a obter o mesmo resultado <strong>de</strong> <strong>de</strong>formação, porém sobre o mo<strong>de</strong>lo armazenado na<br />
memória do sistema. Tal abordagem prejudica o <strong>de</strong>sempenho da aplicação em razão da necessida<strong>de</strong><br />
<strong>de</strong> processar a geometria duas vezes durante a interação: uma para visualização e outra para interação.<br />
Outra abordagem, igualmente ineficiente, consiste em <strong>de</strong>ixar <strong>de</strong> utilizar a GPU para <strong>de</strong>formação <strong>de</strong><br />
geometria nos momentos em que o processamento para interação é exigido. Nesses casos, a aplicação<br />
<strong>de</strong>ve enviar a geometria já modificada à GPU, o que gera um gargalo no barramento. Mais do que<br />
isso, tanto a abordagem <strong>de</strong> realizar o cálculo duas vezes (na CPU e na GPU), como a <strong>de</strong> ignorar o<br />
processamento na GPU durante a interação, são inviáveis quando se <strong>de</strong>seja trabalhar com <strong>de</strong>formação<br />
<strong>de</strong> geometria em seu nível <strong>de</strong> fragmentos, pois este caso implicaria a implementação, na CPU, <strong>de</strong> todo<br />
o estágio <strong>de</strong> processamento <strong>de</strong> fragmentos.<br />
A API OpenGL fornece uma abordagem alternativa para a tarefa <strong>de</strong> seleção e posicionamento<br />
através <strong>de</strong> um modo especial <strong>de</strong> ren<strong>de</strong>rização chamado modo <strong>de</strong> seleção [Shreiner et al., 2005]. No<br />
modo <strong>de</strong> seleção, fragmentos <strong>de</strong> pixels não são gerados a partir da rasterização. Em vez disso, se a<br />
geometria produz uma interseção com um “volume <strong>de</strong> recorte” <strong>de</strong>finido pelo volume <strong>de</strong> visualização<br />
e por planos <strong>de</strong> recorte <strong>de</strong>finidos pela aplicação, um evento <strong>de</strong> seleção (selection hit) é gerado e<br />
retornado para a aplicação. <strong>Uma</strong> ilustração <strong>de</strong>sse procedimento é mostrada na figura 3.2. Em geral,<br />
o volume <strong>de</strong> recorte utilizado no modo <strong>de</strong> seleção é configurado <strong>de</strong> forma semelhante ao volume<br />
<strong>de</strong> visualização, porém envolvendo apenas o pixel apontado pelo cursor. Cada selection hit contém