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.
2.3 Evolução do hardware gráfico 27<br />
etapa <strong>de</strong> transformação geométrica e iluminação era pré-<strong>de</strong>terminado e à aplicação só cabia habili-<br />
tar/<strong>de</strong>sabilitar estados <strong>de</strong>sse fluxo.<br />
Com as GPUs programáveis, a aplicação passa a ser capaz <strong>de</strong> re<strong>de</strong>finir o comportamento das<br />
etapas <strong>de</strong> transformação geométrica e iluminação, tanto com relação aos vértices como aos frag-<br />
mentos, através da programação <strong>de</strong> um processador <strong>de</strong> vértices e um processador <strong>de</strong> fragmentos. O<br />
processador <strong>de</strong> vértices é responsável pela execução <strong>de</strong> um programa que modifica os atributos <strong>de</strong><br />
cada vértice da geometria submetida pela CPU. Por sua vez, o processador <strong>de</strong> fragmentos é respon-<br />
sável pela execução <strong>de</strong> um programa que processa cada fragmento <strong>de</strong> pixel gerado durante a etapa<br />
<strong>de</strong> rasterização e assim <strong>de</strong>termina atributos <strong>de</strong> cor e profundida<strong>de</strong> a serem direcionados a buffers <strong>de</strong><br />
ren<strong>de</strong>rização, também chamados <strong>de</strong> alvos <strong>de</strong> ren<strong>de</strong>rização (ren<strong>de</strong>r targets). As placas gráficas mais<br />
recentes contam ainda com uma arquitetura unificada, capaz <strong>de</strong> trabalhar tanto como um processador<br />
<strong>de</strong> vértices, <strong>de</strong> fragmentos, ou um processador <strong>de</strong> primitivas, <strong>de</strong> acordo com a <strong>de</strong>manda. Este último<br />
processador tem a capacida<strong>de</strong> <strong>de</strong> acessar as informações associadas a cada primitiva, como os vértices<br />
que compõem a primitiva, além das relações <strong>de</strong> conectivida<strong>de</strong> com as primitivas adjacentes.<br />
Ao explorar a flexibilida<strong>de</strong> do processador <strong>de</strong> vértices, fragmentos e geometria, a aplicação tem a<br />
oportunida<strong>de</strong> <strong>de</strong> implementar em hardware um número variado <strong>de</strong> mo<strong>de</strong>los <strong>de</strong> iluminação, incluindo<br />
os clássicos mo<strong>de</strong>los <strong>de</strong> Phong [Bui-Tong, 1975] e Blinn [Blinn, 1977] (para uma implementação<br />
na GPU, veja Fosner [2002]), e também mo<strong>de</strong>los mais complexos como os <strong>de</strong> Cook-Torrance [Cook<br />
and Torrance, 1982] e Oren-Nayar [Oren and Nayar, 1992] (veja também Engel [2004]), e mo<strong>de</strong>lo <strong>de</strong><br />
Kubelka-Munk [Wendlandt and Hecht, 1966, Kortun, 1969] (implementação na GPU segundo Baxter<br />
et al. [2004]). Essa flexibilida<strong>de</strong> se esten<strong>de</strong> também à possibilida<strong>de</strong> <strong>de</strong> simular mo<strong>de</strong>los <strong>de</strong> iluminação<br />
baseados em BRDF (Bidirectional Reflectance Distribution Function), calcular termos <strong>de</strong> reflexão <strong>de</strong><br />
Fresnel (razão entre a quantida<strong>de</strong> <strong>de</strong> luz refletida e luz transmitida numa superfície), implementar<br />
mo<strong>de</strong>los <strong>de</strong> iluminação anisotrópica e mo<strong>de</strong>los <strong>de</strong> iluminação para ilustrações (mo<strong>de</strong>los não fotore-<br />
alistas), entre uma pletora <strong>de</strong> outras possibilida<strong>de</strong>s.<br />
A <strong>de</strong>formação da geometria através do processador <strong>de</strong> vértices inclui a habilida<strong>de</strong> <strong>de</strong> realizar<br />
skinning <strong>de</strong> vértices em hardware [Dempski, 2002] e mapeamento <strong>de</strong> <strong>de</strong>slocamento (displacement<br />
mapping) usando texturas convencionais ou texturas procedurais criadas pelo processador <strong>de</strong> frag-<br />
mentos [Green, 2002]. No processador <strong>de</strong> fragmentos, os atributos <strong>de</strong> cor e profundida<strong>de</strong> dos pixels<br />
po<strong>de</strong>m ser modificados segundo diferentes tipos <strong>de</strong> mapeamento <strong>de</strong> texturas para simulação <strong>de</strong> <strong>de</strong>ta-<br />
lhes <strong>3D</strong> [Policarpo et al., 2005, Krishnamurthy and Levoy, 1996, Tatarchuk, 2006].<br />
Essa geração <strong>de</strong> hardware gráfico programável tem início em 2000 com o lançamento da placa<br />
gráfica NVIDIA GeForce 3 [Lindholm et al., 2001] para o computador Apple Macintosh. No início<br />
<strong>de</strong> 2001, durante o evento MacWorld Expo Tokyo sobre computadores Macintosh, é exibido o filme<br />
<strong>de</strong> curta metragem Luxo Jr., produzido originalmente pela Pixar [Pixar, 2007], mas <strong>de</strong>sta vez sendo