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
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