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.
2.4 <strong>Arquitetura</strong> das GPUs programáveis 35<br />
Fig. 2.4: Diagrama do ambiente geral <strong>de</strong> execução <strong>de</strong> um modificador <strong>de</strong> vértices.<br />
trada (geralmente um registrador para cada atributo do vértice) com valores fornecidos pela etapa<br />
<strong>de</strong> montagem <strong>de</strong> vértices. O sha<strong>de</strong>r executa seus cálculos através da leitura <strong>de</strong>sses registradores,<br />
usando registradores temporários para armazenar resultados intermediários do processamento. O<br />
sha<strong>de</strong>r também po<strong>de</strong> acessar registradores constantes para obter valores <strong>de</strong>finidos pela aplicação e<br />
que não variam entre os vértices da geometria. Exemplos <strong>de</strong> valores usualmente armazenados em<br />
registradores constantes incluem a combinação das matrizes <strong>de</strong> transformação, o vetor <strong>de</strong> direção ou<br />
posição <strong>de</strong> uma fonte <strong>de</strong> luz, paletas <strong>de</strong> matrizes utilizadas para <strong>de</strong>formação <strong>de</strong> vértices, entre outros.<br />
Registradores <strong>de</strong> en<strong>de</strong>reçamento po<strong>de</strong>m ser utilizados pelo sha<strong>de</strong>r para realizar en<strong>de</strong>reçamento<br />
relativo <strong>de</strong> índices no conjunto <strong>de</strong> registradores <strong>de</strong> constantes. Esses registradores geralmente não<br />
po<strong>de</strong>m ser lidos diretamente <strong>de</strong>ntro do sha<strong>de</strong>r, mas usados apenas para en<strong>de</strong>reçamento relativo.<br />
Ambientes <strong>de</strong> execução mais recentes, como o especificado pelo mo<strong>de</strong>lo <strong>de</strong> sha<strong>de</strong>r 3.0 e utilizado<br />
em nossa arquitetura <strong>de</strong> interação, utilizam registradores especiais para realizar fluxo <strong>de</strong> controle<br />
dinâmico, permitindo a implementação <strong>de</strong> procedimentos mais complexos na GPU. <strong>Uma</strong> caracterís-<br />
tica especialmente útil neste mo<strong>de</strong>lo <strong>de</strong> sha<strong>de</strong>r é a disponibilida<strong>de</strong>, no processdor <strong>de</strong> vértices, dos<br />
estágios <strong>de</strong> amostragem <strong>de</strong> texturas exibidos na figura 2.5. Essa característica permite a realização <strong>de</strong><br />
amostragem <strong>de</strong> texturas durante o processamento <strong>de</strong> vértices.<br />
O sha<strong>de</strong>r <strong>de</strong> vértices armazena seus resultados em um conjunto <strong>de</strong> registradores <strong>de</strong> saída. Os<br />
registradores <strong>de</strong> saída possuem uma semântica pré-<strong>de</strong>finida, tal como a posição do vértice transfor-<br />
mado em espaço homogêneo, as coor<strong>de</strong>nadas <strong>de</strong> textura e a cor do vértice. Esses resultados são<br />
transferidos para os próximos estágios do fluxo <strong>de</strong> função fixa ou utilizados como entrada do sha<strong>de</strong>r<br />
<strong>de</strong> fragmentos, e são interpolados ao longo da primitiva segundo o mo<strong>de</strong>lo <strong>de</strong> interpolação <strong>de</strong>finido<br />
na API.