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.

2.4 <strong>Arquitetura</strong> das GPUs programáveis 37<br />

predicado usado em comparações, um registrador contendo a posição do pixel correspon<strong>de</strong>nte em co-<br />

or<strong>de</strong>nadas da tela, e um registrador que informa a área da face que está sendo processada. Entretanto,<br />

atualmente nenhum ambiente <strong>de</strong> execução <strong>de</strong> modificadores <strong>de</strong> fragmentos utiliza registradores <strong>de</strong><br />

en<strong>de</strong>reçamento.<br />

Os registradores <strong>de</strong> entrada contém os valores interpolados <strong>de</strong> saída do sha<strong>de</strong>r <strong>de</strong> vértices, tais<br />

como os valores <strong>de</strong> cor dos fragmentos ou coor<strong>de</strong>nadas <strong>de</strong> textura, e só possuem permissão <strong>de</strong> leitura<br />

pelo modificador. Utilizando instruções especiais, o sha<strong>de</strong>r <strong>de</strong> fragmentos po<strong>de</strong> amostrar valores<br />

filtrados <strong>de</strong> textura usando estágios <strong>de</strong> amostragem <strong>de</strong> texturas.<br />

O sha<strong>de</strong>r po<strong>de</strong> tanto usar as coor<strong>de</strong>nadas interpoladas <strong>de</strong> textura passadas em um dos registrado-<br />

res <strong>de</strong> entrada como também as coor<strong>de</strong>nadas <strong>de</strong> textura calculadas diretamente no modificador para<br />

amostrar uma textura. Usando os valores dos registradores <strong>de</strong> entrada e os valores amostrados <strong>de</strong> tex-<br />

turas, o sha<strong>de</strong>r produz seus resultados e armazena-os em registradores <strong>de</strong> saída. Como no sha<strong>de</strong>r <strong>de</strong><br />

vértices, esses registradores <strong>de</strong> saída possuem uma semântica pré-<strong>de</strong>finida. A saída inclui obrigatori-<br />

amente o valor final da cor do fragmento que será utilizado para formar a cor do pixel no frame buffer<br />

e, opcionalmente, o valor <strong>de</strong> profundida<strong>de</strong> que será utilizado no teste <strong>de</strong> profundida<strong>de</strong>. As atuais<br />

GPUs permitem a escrita <strong>de</strong>sses valores em vários alvos <strong>de</strong> ren<strong>de</strong>rização ao mesmo tempo, através<br />

do uso <strong>de</strong> vários registradores <strong>de</strong> saída <strong>de</strong> cor e valor <strong>de</strong> profundida<strong>de</strong> no sha<strong>de</strong>r <strong>de</strong> fragmentos.<br />

2.4.3 A GPU como um processador <strong>de</strong> propósito geral<br />

Com o aumento do número <strong>de</strong> instruções aritméticas e registradores disponíveis nos processadores<br />

<strong>de</strong> vértices e fragmentos, e particularmente com o advento <strong>de</strong> instruções <strong>de</strong> fluxo <strong>de</strong> controle dinâmico<br />

e capacida<strong>de</strong> <strong>de</strong> acessar e escrever em texturas com formato em ponto flutuante, as atuais GPUs pro-<br />

gramáveis têm possibilitado a realização <strong>de</strong> processamento paralelo que extrapola aquele <strong>de</strong>stinado<br />

à síntese <strong>de</strong> imagens em tempo real [Luebke et al., 2004a]. Tão importante quanto o aprimoramento<br />

do conjunto <strong>de</strong> instruções, as atuais GPUs possuem po<strong>de</strong>r computacional maior do que as CPUs para<br />

processamento <strong>de</strong> fluxos <strong>de</strong> dados e, como já discutido na seção 1.1, fornecem acesso mais eficiente<br />

a dados armazenados em memória <strong>de</strong> ví<strong>de</strong>o local.<br />

A arquitetura <strong>de</strong> uma GPU se assemelha ao mo<strong>de</strong>lo <strong>de</strong> um processador <strong>de</strong> fluxo (stream proces-<br />

sor). Nessa arquitetura, cada elemento <strong>de</strong> um fluxo <strong>de</strong> dados é processado <strong>de</strong> forma paralela por uma<br />

mesma função, chamada kernel, e os resultados são armazenados em um fluxo <strong>de</strong> saída, normalmente<br />

(mas não necessariamente) com um mapeamento biunívoco entre os elementos <strong>de</strong> entrada e saída.<br />

O processamento <strong>de</strong> cada elemento do fluxo in<strong>de</strong>pen<strong>de</strong> do processamento dos <strong>de</strong>mais elementos,<br />

possibilitando assim a criação <strong>de</strong> diversos fluxos <strong>de</strong> processamento paralelo. De fato, as atuais GPUs<br />

são compostas <strong>de</strong> centenas <strong>de</strong> fluxos simultâneos <strong>de</strong> processamento <strong>de</strong> fragmentos. Texturas po<strong>de</strong>m<br />

ser consi<strong>de</strong>radas como fluxo <strong>de</strong> dados <strong>de</strong> entrada e saída dispostos em matrizes 2D, nas quais os

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

Saved successfully!

Ooh no, something went wrong!