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

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>

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

Saved successfully!

Ooh no, something went wrong!