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.
110 <strong>Arquitetura</strong> <strong>de</strong> interação<br />
5.4 Fluxo <strong>de</strong> processamento<br />
A arquitetura é construída sobre a camada <strong>de</strong> abstração <strong>de</strong> hardware gráfico <strong>de</strong>finida segundo a<br />
API utilizada (e.g., OpenGL ou Direct<strong>3D</strong>) e é visível ao programador como um conjunto adicional <strong>de</strong><br />
funções <strong>de</strong> suporte a interação <strong>3D</strong>. Internamente, a arquitetura explora a capacida<strong>de</strong> <strong>de</strong> utilizar a GPU<br />
como um processador <strong>de</strong> propósito geral e assim estimar, para cada vértices, os atributos <strong>de</strong> geometria<br />
diferencial <strong>de</strong>scritos na seção 5.3, herdando as interfaces com o sistema <strong>de</strong> janelas suportado pelas<br />
atuais placas gráficas.<br />
<strong>Uma</strong> vez que a arquitetura é centralizada em torno da idéia <strong>de</strong> utilizar o próprio fluxo programável<br />
<strong>de</strong> visualização para processar os atributos <strong>de</strong> geometria necessários para cada tarefa <strong>de</strong> manipulação<br />
direta <strong>3D</strong>, as modificações <strong>de</strong> geometria em relação aos vértices e fragmentos po<strong>de</strong>m ser levadas em<br />
consi<strong>de</strong>ração durante o processamento <strong>de</strong>sses atributos. Evita-se a duplicação <strong>de</strong> dados uma vez que<br />
os buffers <strong>de</strong> vértices e <strong>de</strong> índices que <strong>de</strong>finem a geometria utilizada para calcular os atributos po<strong>de</strong>m<br />
ser os mesmos buffers utilizados para efetivamente visualizar o objeto.<br />
Do ponto <strong>de</strong> vista da GPU, a arquitetura <strong>de</strong> interação é <strong>de</strong>finida como uma série <strong>de</strong> procedimentos<br />
<strong>de</strong>finidos em sha<strong>de</strong>rs <strong>de</strong> vértices e fragmentos, juntamente com <strong>de</strong>finições <strong>de</strong> passos <strong>de</strong> ren<strong>de</strong>rização<br />
com saída direcionada a buffers <strong>de</strong> ren<strong>de</strong>rização não visíveis. Do ponto <strong>de</strong> vista da aplicação, a exe-<br />
cução <strong>de</strong>sses procedimentos é realizada no laço <strong>de</strong> ren<strong>de</strong>rização através da chamada <strong>de</strong> um comando<br />
Ren<strong>de</strong>r() que processa os atributos <strong>de</strong> cada mo<strong>de</strong>lo e codifica esses atributos em buffers <strong>de</strong> ren<strong>de</strong>-<br />
rização não visíveis, e um comando Deco<strong>de</strong>() que retorna à aplicação os atributos codificados em<br />
cada pixel.<br />
<strong>Uma</strong> visão geral dos procedimentos envolvidos na arquitetura <strong>de</strong> interação é ilustrado no fluxo-<br />
grama da figura 5.9. A arquitetura é composta <strong>de</strong> seis estágios responsáveis pelo processamento <strong>de</strong><br />
atributos do mo<strong>de</strong>lo geométrico sob interação. Cinco <strong>de</strong>sses estágios são executados no processador<br />
<strong>de</strong> vértices e fragmentos, e requerem até três passos <strong>de</strong> ren<strong>de</strong>rização:<br />
• Primeiro passo <strong>de</strong> ren<strong>de</strong>rização: modificação <strong>de</strong> atributos <strong>de</strong> vértices antes do cálculo <strong>de</strong> atri-<br />
butos geométricos (estágio 1);<br />
• Segundo passo <strong>de</strong> ren<strong>de</strong>rização: cálculo <strong>de</strong> atributos geométricos (estágio 2);<br />
• Terceiro passo <strong>de</strong> ren<strong>de</strong>rização: modificação <strong>de</strong> atributos <strong>de</strong> vértices após o cálculo <strong>de</strong> atributos<br />
geométricos (estágio 3), modificação <strong>de</strong> atributos <strong>de</strong> fragmentos (estágio 4) e codificação <strong>de</strong><br />
atributos <strong>de</strong> fragmentos (estágio 5);<br />
O primeiro estágio executado na GPU recebe como entrada os atributos <strong>de</strong> vértices da geometria<br />
original (i.e., o buffer <strong>de</strong> vértices e <strong>de</strong> índices utilizado na chamada <strong>de</strong> ren<strong>de</strong>rização) e os dados <strong>de</strong>