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.

38 Revisão bibliográfica<br />

Fig. 2.6: Processamento <strong>de</strong> fluxo na GPU através da ren<strong>de</strong>rização <strong>de</strong> um quadrilátero que mapeia<br />

texels <strong>de</strong> uma textura <strong>de</strong> origem a texels <strong>de</strong> uma textura <strong>de</strong> <strong>de</strong>stino.<br />

elementos do fluxo são os texels, que <strong>de</strong> fato são vetores <strong>de</strong> até 4 valores (e.g., valores RGBα).<br />

Como os dados da textura não precisam ser interpretados como valores <strong>de</strong> cor, uma operação <strong>de</strong><br />

amostragem <strong>de</strong> textura po<strong>de</strong> ser interpretada como uma operação <strong>de</strong> leitura <strong>de</strong> um elemento do fluxo.<br />

Da mesma forma, a operação <strong>de</strong> escrita <strong>de</strong> um valor <strong>de</strong> cor numa textura equivale à escrita <strong>de</strong> um<br />

elemento no fluxo <strong>de</strong> dados <strong>de</strong> saída. O sha<strong>de</strong>r <strong>de</strong> fragmentos, responsável pelo processamento <strong>de</strong><br />

cada texel, é análogo ao kernel <strong>de</strong> um processador <strong>de</strong> fluxo.<br />

O processamento <strong>de</strong> fluxos usando a GPU é normalmente realizado no processador <strong>de</strong> fragmentos,<br />

como resultado da arquitetura SIMD que permite que as GPUs implementam mais estágios <strong>de</strong> proces-<br />

samento paralelo <strong>de</strong> fragmentos do que <strong>de</strong> vértices. Em particular, a CPU preenche uma textura com<br />

os dados <strong>de</strong> entrada e carrega essa textura na memória <strong>de</strong> ví<strong>de</strong>o local da GPU. Essa textura representa<br />

o fluxo <strong>de</strong> entrada. A GPU é utilizada então para ren<strong>de</strong>rizar um retângulo em coor<strong>de</strong>nadas da tela,<br />

mapeado com a textura <strong>de</strong> entrada <strong>de</strong> tal forma que cada texel <strong>de</strong>ssa textura corresponda a apenas um<br />

pixel da tela. Entretanto, em vez <strong>de</strong> ren<strong>de</strong>rizar o resultado em um buffer para visualização, utiliza-se<br />

como alvo <strong>de</strong> ren<strong>de</strong>rização uma outra textura, consi<strong>de</strong>rada como o fluxo <strong>de</strong> saída. <strong>Uma</strong> vez que o<br />

retângulo já é dado em coor<strong>de</strong>nadas da tela, o sha<strong>de</strong>r <strong>de</strong> vértices não realiza qualquer processamento<br />

e apenas propaga os atributos dos vértices para os próximos estágios. Esses atributos são apenas a<br />

posição transformada do vértice (em coor<strong>de</strong>nadas normalizadas do dispositivo) e as coor<strong>de</strong>nadas da<br />

textura interpoladas a partir das coor<strong>de</strong>nadas informadas nos vértices. No sha<strong>de</strong>r <strong>de</strong> fragmentos, o<br />

valor interpolado das coor<strong>de</strong>nadas <strong>de</strong> textura é utilizado para amostrar cada texel da textura mapeada<br />

no retângulo. O valor amostrado <strong>de</strong> cada texel é processado e escrito na textura <strong>de</strong> saída. <strong>Uma</strong> ilus-<br />

tração <strong>de</strong>sta operação utilizando a ren<strong>de</strong>rização do quadrilátero é mostrada na figura 2.6. Os valores

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

Saved successfully!

Ooh no, something went wrong!