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.
114 <strong>Arquitetura</strong> <strong>de</strong> interação<br />
sistema e <strong>de</strong>codifica os atributos contidos em cada pixel. Esses atributos são então retornados<br />
à aplicação. Ao contrário dos estágios anteriores, que <strong>de</strong>vem ser executadas uma vez para cada<br />
mo<strong>de</strong>lo geométrico sob interação, esse procedimento só precisa ser executado uma vez em cada<br />
iteração do laço <strong>de</strong> ren<strong>de</strong>rização.<br />
Auxiliada pelo sistema <strong>de</strong> janelas, os atributos <strong>de</strong>codificados po<strong>de</strong>m ser utilizados pela apli-<br />
cação para concluir a tarefa <strong>de</strong> interação e fornecer alguma realimentação ao sistema, em geral<br />
um retorno visual (e.g., atualizando a posição e orientação do cursor <strong>3D</strong>). As ações <strong>de</strong> manipu-<br />
lação, <strong>de</strong>finidas pela aplicação, também po<strong>de</strong>m resultar em modificações da geometria original<br />
(e.g., mudança da posição dos vértices ou faces), modificações da conectivida<strong>de</strong> da geometria<br />
(e.g., em uma operação <strong>de</strong> recorte e costura <strong>de</strong> superfícies), modificações do conteúdo das tex-<br />
turas utilizadas pelo mo<strong>de</strong>lo (e.g., <strong>de</strong>correntes <strong>de</strong> uma tarefa <strong>de</strong> pintura <strong>3D</strong>) ou modificações<br />
dos parâmetros das funções <strong>de</strong> <strong>de</strong>formação. Em tais casos, a aplicação é responsável por infor-<br />
mar essas mudanças à arquitetura <strong>de</strong> interação <strong>de</strong> acordo com a interface <strong>de</strong> entrada <strong>de</strong>scrita na<br />
seção 5.4.2.<br />
5.4.2 Interface <strong>de</strong> entrada (CPU-GPU)<br />
Para iniciar o processamento <strong>de</strong> atributos na GPU, a arquitetura requer que a aplicação forneça a<br />
seguinte seqüência <strong>de</strong> dados <strong>de</strong> entrada para cada mo<strong>de</strong>lo geométrico a ser processado:<br />
• Buffer <strong>de</strong> vértices da geometria original, idêntico ao buffer <strong>de</strong> vértices utilizado na ren<strong>de</strong>rização<br />
do mo<strong>de</strong>lo para visualização, porém com um atributo adicional contendo o índice do vértice no<br />
buffer. Esse índice é utilizado pela arquitetura durante os estágios <strong>de</strong> processamento 1, 2 e 3<br />
para calcular o índice 2D <strong>de</strong> acesso das texturas que contém dados da geometria e topologia do<br />
mo<strong>de</strong>lo. O procedimento <strong>de</strong> conversão do índice 1D para 2D é <strong>de</strong>talhado na seção 4.1.1.<br />
Cada vértice <strong>de</strong>ve conter também os atributos <strong>de</strong>finidos na aplicação (atributos <strong>de</strong> entrada)<br />
necessários para calcular os atributos que serão processados na GPU e armazenados nos buffers<br />
<strong>de</strong> ren<strong>de</strong>rização não visíveis (atributos <strong>de</strong> saída). Esses dados po<strong>de</strong>m ser fornecidos através do<br />
comando SetVertexBuffer() que recebe o ponteiro do buffer <strong>de</strong> vértices. Internamente, a<br />
arquitetura utiliza esse buffer <strong>de</strong> vértices para criar as texturas que serão utilizadas nos estágios<br />
1, 2 e 3.<br />
Os atributos <strong>de</strong> entrada exigidos para o cálculo <strong>de</strong> cada atributo <strong>de</strong> saída são citados na seção 5.3.<br />
Por exemplo, o cálculo do valor <strong>de</strong> profundida<strong>de</strong> requer apenas a existência da posição <strong>3D</strong> como<br />
atributo <strong>de</strong> entrada <strong>de</strong> cada vértice no buffer <strong>de</strong> vértices. O cálculo dos pesos das coor<strong>de</strong>nadas<br />
baricêntricas requer, como atributo <strong>de</strong> entrada, os valores 0, 1 e 2 <strong>de</strong>signados para cada um dos