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 29<br />

ponto-flutuante e precisão numérica capaz <strong>de</strong> armazenar valores <strong>de</strong> luminância com faixa dinâmica<br />

estendida e maior qualida<strong>de</strong> <strong>de</strong> filtragem <strong>de</strong> textura.<br />

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

Nesta seção <strong>de</strong>screvemos os <strong>de</strong>talhes da arquitetura das GPUs programáveis sobre a qual a ar-<br />

quitetura <strong>de</strong> suporte a tarefas <strong>de</strong> interação <strong>3D</strong> é construída. Também mostramos como as atuais<br />

GPUs po<strong>de</strong>m ser utilizadas como processadores <strong>de</strong> fluxo <strong>de</strong> propósito geral, uma vez que esse tipo<br />

<strong>de</strong> processamento também é utilizado nos estágios <strong>de</strong> processamento <strong>de</strong> nossa arquitetura.<br />

Em geral, as atuais GPUs são equipadas com dois processadores programáveis: o processador<br />

<strong>de</strong> vértices, segundo uma arquitetura MIMD (Multiple Instruction Multiple Data), e o processador<br />

<strong>de</strong> fragmentos, segundo uma arquitetura SIMD (Single Instruction Multiple Data). Recentemente<br />

surgiram placas gráficas equipadas com uma arquitetura SIMD unificada <strong>de</strong> multiprocessamento <strong>de</strong><br />

primitivas, vértices e fragmentos, como as placas da série GeForce 8, da NVIDIA [NVIDIA, 2007a],<br />

e Ra<strong>de</strong>on R600 [ATI, 2007b], da ATI. Entretanto, para melhor compreensão da evolução das placas<br />

gráficas programáveis, <strong>de</strong>talharemos neste texto apenas a arquitetura tradicional especificada pelas<br />

APIs gráficas GL, composta <strong>de</strong> um estágio <strong>de</strong> processamento <strong>de</strong> vértices e outro <strong>de</strong> processamento<br />

<strong>de</strong> fragmentos.<br />

Os processadores <strong>de</strong> vértices e fragmentos não substituem completamente as funcionalida<strong>de</strong>s do<br />

chamado fluxo <strong>de</strong> função fixa <strong>de</strong> ren<strong>de</strong>rização, que é o fluxo <strong>de</strong> ren<strong>de</strong>rização <strong>de</strong>scrito pelo OpenGL<br />

para as gerações anteriores <strong>de</strong> hardware gráfico não programável. Em vez disso, o processamento<br />

realizado por esses processadores po<strong>de</strong> substituir apenas as tarefas <strong>de</strong> transformação geométrica,<br />

avaliação do mo<strong>de</strong>lo <strong>de</strong> iluminação para cada vértice, e texturização com <strong>de</strong>finição <strong>de</strong> modos <strong>de</strong><br />

combinação <strong>de</strong> texturas. Essa escolha <strong>de</strong> arquitetura tem sido a<strong>de</strong>quada para manter a compatibili-<br />

da<strong>de</strong> com aplicações gráficas até agora <strong>de</strong>senvolvidas para hardware gráfico <strong>de</strong> gerações anteriores e<br />

que utilizam APIs como OpenGL e Direct<strong>3D</strong>. Se a aplicação optar por não programar nenhum dos<br />

processadores, o hardware gráfico se comportará como um equipamento <strong>de</strong> terceira geração (ainda<br />

que, internamente, sha<strong>de</strong>rs sejam utilizados para simular o fluxo <strong>de</strong> função fixa).<br />

Para propósitos <strong>de</strong> comparação, a figura 2.2 mostra um diagrama <strong>de</strong> blocos <strong>de</strong>screvendo o fluxo<br />

<strong>de</strong> função fixa <strong>de</strong> ren<strong>de</strong>rização utilizado em hardware gráfico a partir da terceira geração. O hardware<br />

recebe como entrada um conjunto <strong>de</strong> atributos <strong>de</strong> vértices e um conjunto <strong>de</strong> informações <strong>de</strong>screvendo<br />

que primitivas <strong>de</strong>vem ser construídas com tais vértices. Esses dados passam inicialmente por um<br />

estágio <strong>de</strong> montagem <strong>de</strong> vértices (estágio 1 na figura 2.2), no qual os atributos <strong>de</strong> cada vértice são<br />

reunidos para processamento. Após esta etapa, cada vértice é processado por um fluxo <strong>de</strong> transfor-<br />

mação geométrica (estágio 2). Em particular, a posição <strong>de</strong> cada vértice é modificada segundo uma

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

Saved successfully!

Ooh no, something went wrong!