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.

4.2 Nossa proposta 75<br />

Fig. 4.2: Construção da lista global <strong>de</strong> adjacência.<br />

armazenado em listas temporárias <strong>de</strong> adjacência com base nos vértices. Essas listas são então concate-<br />

nadas em uma única lista global, or<strong>de</strong>nadas pelo índice do vértice. Por exemplo, se o vértice <strong>de</strong> índice<br />

1 tem a lista <strong>de</strong> adjacência com índices 〈10, 23, 15, 4, 2〉 e o vértice <strong>de</strong> índice 2 tem a lista com índices<br />

〈9, 3〉, a lista global <strong>de</strong> adjacência resultante conterá a seqüência inicial 〈10, 23, 15, 4, 2, 9, 3, ...〉. Esta<br />

lista é então armazenada em um mapa <strong>de</strong> adjacência no qual cada texel contém um único valor da<br />

lista global <strong>de</strong> adjacência (figura 4.2). Tais informações po<strong>de</strong>m ser armazenadas em uma textura com<br />

um único componente <strong>de</strong> cor por texel.<br />

De modo a acessar o mapa <strong>de</strong> adjacência na GPU, precisamos fornecer atributos adicionais para<br />

cada vértice da geometria. Em especial, cada vértice <strong>de</strong>ve possuir um atributo que indique o índice<br />

da primeira face adjacente na lista <strong>de</strong> adjacência, e outro atributo que <strong>de</strong>fina o número <strong>de</strong> faces<br />

adjacentes. Isto é feito criando outro mapa <strong>de</strong> atributos <strong>de</strong> vértices – o mapa <strong>de</strong> índices <strong>de</strong> adjacência<br />

– no qual cada texel correspon<strong>de</strong> a um vértice e contém dois valores. O primeiro valor é o índice 1D<br />

da primeira face adjacente na lista global <strong>de</strong> adjacência. Para o último exemplo utilizado (figura 4.2),<br />

esses valores seriam 0 e 5 para o primeiro e segundo vértices, respectivamente. No sha<strong>de</strong>r que estima<br />

as proprieda<strong>de</strong>s <strong>de</strong> geometria diferencial <strong>de</strong> primeira or<strong>de</strong>m, este valor é utilizado para <strong>de</strong>terminar as<br />

coor<strong>de</strong>nadas <strong>de</strong> textura do primeiro texel a ser lido do mapa <strong>de</strong> adjacência. O segundo valor <strong>de</strong> cada<br />

texel do mapa <strong>de</strong> índices <strong>de</strong> adjacência número <strong>de</strong> faces adjacentes ao vértice.<br />

O cálculo das bases tangentes é integrado aos sha<strong>de</strong>rs <strong>de</strong> fragmentos utilizados para calcular os<br />

vetores normais. A seguir <strong>de</strong>talhamos cada passo <strong>de</strong> ren<strong>de</strong>rização do algoritmo <strong>de</strong> estimativa <strong>de</strong><br />

proprieda<strong>de</strong>s <strong>de</strong> geometria diferencial <strong>de</strong> primeira or<strong>de</strong>m utilizado em nossa abordagem.<br />

1. Atualização das posições dos vértices: A posição original do vértice <strong>3D</strong> é lida do mapa <strong>de</strong><br />

posição dos vértices, processada pela função <strong>de</strong> <strong>de</strong>formação <strong>de</strong>pen<strong>de</strong>nte da aplicação e escrita<br />

no mapa <strong>de</strong> posições atualizadas dos vértices. Na verda<strong>de</strong>, esta etapa não faz parte do algoritmo

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

Saved successfully!

Ooh no, something went wrong!