03.04.2013 Views

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

1.1 Motivação 3<br />

tataram que a or<strong>de</strong>nação <strong>de</strong> 16 milhões <strong>de</strong> registros <strong>de</strong> um banco <strong>de</strong> dados po<strong>de</strong>ria ser realizada em<br />

apenas 2 segundos em uma placa gráfica NVIDIA GeForce 7800 GTX. O mesmo processamento era<br />

realizado em no mínimo 15 segundos usando a função qsort (ANSI C) otimizada no compilador<br />

Intel C++ com instruções SSE (Streaming SIMD Extensions), e sendo executado numa CPU Intel<br />

Pentium 4 <strong>de</strong> 3.2 GHz utilizando a tecnologia Hyper-Threading.<br />

Hoje, o maior mercado consumidor <strong>de</strong> hardware gráfico programável e principal responsável<br />

pelo impulso do <strong>de</strong>senvolvimento <strong>de</strong> novas tecnologias é o mercado <strong>de</strong> entretenimento digital (e.g.,<br />

jogos para computadores e vi<strong>de</strong>o games). Para essas aplicações, o uso não convencional das GPUs<br />

tem sido comumente concentrado na realização <strong>de</strong> tarefas <strong>de</strong> animação e mo<strong>de</strong>lagem geométrica em<br />

malhas triangulares. Embora anteriormente a GPU fosse utilizada apenas para a aceleração das eta-<br />

pas <strong>de</strong> transformação geométrica, cálculo <strong>de</strong> iluminação e rasterização, verificou-se que tarefas mais<br />

complexas <strong>de</strong> processamento <strong>de</strong> geometria tais como mesh skinning [Dempski, 2002], simulação <strong>de</strong><br />

ondas no oceano [Isidoro et al., 2002], mo<strong>de</strong>lagem procedural <strong>de</strong> terrenos [Green, 2002], simulação<br />

<strong>de</strong> tecidos [Zeller, 2005] e mapeamento <strong>de</strong> <strong>de</strong>slocamento [Kryachko, 2005] po<strong>de</strong>riam ser realiza-<br />

das totalmente na GPU. Essa estratégia, além <strong>de</strong> aproveitar melhor o paralelismo entre a CPU e a<br />

GPU, também se beneficia da ampla largura <strong>de</strong> banda existente no acesso a recursos armazenados<br />

em memória <strong>de</strong> ví<strong>de</strong>o local: <strong>de</strong> 8 GB/s do barramento PCI Express 16X para mais <strong>de</strong> 50 GB/s da<br />

memória <strong>de</strong> ví<strong>de</strong>o local em uma placa NVIDIA GeForce 7900 GTX [Kilgariff and Fernando, 2005].<br />

Atualmente, o barramento <strong>de</strong> uma placa NVIDIA GeForce 8800 Ultra tem uma largura <strong>de</strong> banda <strong>de</strong><br />

103.7 GB/s.<br />

<strong>Uma</strong> ilustração do acesso a recursos da memória <strong>de</strong> ví<strong>de</strong>o e memória do sistema é mostrada na<br />

figura 1.1. Nas técnicas citadas, a CPU envia apenas uma vez um mo<strong>de</strong>lo geométrico estático para a<br />

GPU. Este mo<strong>de</strong>lo é armazenado em memória <strong>de</strong> ví<strong>de</strong>o local e, para cada quadro <strong>de</strong> exibição, ele é<br />

lido, processado e ren<strong>de</strong>rizado pelo hardware gráfico sem intervenção da CPU.<br />

A capacida<strong>de</strong> <strong>de</strong> <strong>de</strong>formar geometria na GPU sem intervenção da CPU introduz sérias com-<br />

plicações para a implementação <strong>de</strong> algoritmos <strong>de</strong> interação <strong>3D</strong> que trabalham com tais mo<strong>de</strong>los.<br />

Tradicionalmente, o processamento necessário para executar tarefas <strong>de</strong> manipulação direta tais como<br />

seleção (picking) e posicionamento com restrição (snapping) usando dispositivos apontadores, é re-<br />

alizado inteiramente na CPU. Esse processamento é feito com base em informações fornecidas pelo<br />

sistema <strong>de</strong> janelas (e.g., eventos dos dispositivos <strong>de</strong> entrada sobre os controles <strong>de</strong> interface 2D) e<br />

com base no mo<strong>de</strong>lo geométrico armazenado em um banco <strong>de</strong> dados sobre a cena <strong>3D</strong> na memória do<br />

sistema. Um diagrama conceitual ilustrando essas relações é mostrado na figura 1.2.<br />

Se a GPU é utilizada para executar técnicas <strong>de</strong> animação e mo<strong>de</strong>lagem geométrica, instâncias dos<br />

mo<strong>de</strong>los geométricos <strong>de</strong>vem ser armazenadas em memória <strong>de</strong> ví<strong>de</strong>o local. Porém, se as instâncias<br />

<strong>de</strong>formadas na GPU não são propagadas para o mo<strong>de</strong>lo original armazenado na memória do sistema,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!