Unidades de pixel shader

Continuando, o segundo tipo de shaders são os pixel shaders, que complementam o trabalho iniciado pelos vertex shaders. Os pixel shaders atuam na etapa de renderização da imagem, analisando a estrutura dos objetos, as fontes de luz, cores e outras
variáveis e usando estas informações para criar efeitos de luz e sombra, realce de cores, reflexos e outros efeitos bastante realísticos. Esta é considerada a parte mais importante do trabalho, já que determina a qualidade das imagens que serão finalmente
mostradas no monitor e é também a parte que consome mais processamento.

Os pixel shaders são executados em unidades separadas, as pixel shader units (ou pixels processors). Nas placas atuais, o desempenho em processamento de pixel shaders é mais importante que o processamento de vertex shaders, simplesmente porque eles são
muito mais pesados, de forma que as unidades de processamento de pixels tornam-se um gargalo muito antes das de vértices. Devido a isso, é normal que as placas possuam um número muito maior de unidades de pixel shader que de vertex shader.

Unidades de shader unificadas: O uso de unidades separadas para o processamento de vertex shaders e pixel shaders faz com que o desempenho da placa nunca seja ideal, já que o carregamento sobre ambos os tipos varia de acordo com a
situação e também de acordo com o tipo de efeitos usados pelo game. Isso faz com que sempre ou as unidades de vertex shader, ou as de pixel shader sejam subutilizadas, criando um gargalo. Visando reduzir o problema, os fabricantes optam freqüentemente por
utilizar um número maior de unidades de pixel shader (a GeForce 7800 possui 24 unidades de pixel shader, para apenas 8 unidades de vertex shader, por exemplo), mas esta também está longe de ser uma solução ideal.

Nas placas mais modernas, os dois tipos de processadores são substituídos por unidades unificadas, que podem ser programas para executar processamento de pixels ou de vértices, conforme a demanda. Basicamente, cada uma destas unidades age como um
pequeno processador de cálculos de ponto flutuante independente, que pode ser programado para executar praticamente qualquer tipo de operação.

Embora o uso de unidades de shader unificadas não seja exatamente um pré-requisito para o suporte ao DirectX 10, tanto a nVidia quanto a ATI e a Intel (com o GMA X3000) aparentemente chegaram à conclusão de que o uso de unidades unificadas seja a forma
mais simples de oferecer suporte aos novos recursos e efeitos trazidos pela API do DirectX 10, de forma que as duas coisas acabaram relacionadas.

As unidades de processamento de texturas trabalham em conjunto com as unidades de processamento de shaders, carregando texturas utilizadas na cena. Embora o trabalho das TMUs seja muito mais simples do que o das unidades de pixel
shader, elas podem ser um limitante em algumas situações, sobretudo ao ativar o uso do Anisotropic Filtering, que resulta em um grande número de operações relacionadas ao carregamento de texturas.

O desempenho das unidades de texturas também é muito dependente do barramento com a memória, de forma que placas low-end, com chips de memória mais lentos e/ou um barramento mais estreito acabam sendo penalizadas, mesmo que o chipset usado seja o
mesmo. Nesses casos a melhor opção é evitar o uso do Anisotropic Filtering e de outros efeitos que utilizem um grande volume de texturas.

É comum também que os fabricantes desenvolvam versões reduzidas de seus chipsets principais, com um volume menor de unidades de processamento, que são destinadas às placas de baixo custo. O RV610, usado nas Radeon HD 2400, por exemplo, possui apenas 4
unidades de processamento de texturas, contra as 16 do R600, a versão “completa”, usada na Radeon HD 2900 XT. Estes chipsets reduzidos são mais baratos de se produzir, o que, combinado com a redução no barramento com a memória (o que significa menos
trilhas na placa) e outras economias, permite produzir placas bastante baratas, embora também mais lentas.

Os ROPs entram em ação no final do processo de renderização. Eles são responsáveis pela aplicação de filtros adicionais, dos algoritmos de antialiasing, cálculo de profundidade (Z-buffer) e outras operações.

Muitas placas utilizam arquiteturas balanceadas, onde estão disponíveis o mesmo número de unidades de processamento de texturas (os TMUs), de processamento de pixel shaders e ROPs (um exemplo é a Radeon 9700, que possui 8 unidades de cada tipo), mas
cada vez mais placas estão adotando o uso de arquiteturas mais flexíveis, de forma a melhor distribuir o uso dos recursos internos. O número de ROPs disponíveis na placa não é um indicador direto de performance, pois o volume de processamento executado
por cada unidade varia muito de acordo com a arquitetura da placa.

Os ROPs são mais exigidos (em relação aos demais componentes da placa) ao utilizar as opções mais pesadas de antialiasing e ao ativar o uso de mais filtros e efeitos diversos. No caso de placas com um número menor de ROPS (como as GeForce 6600, que
possuem apenas quatro unidades, ou as GeForce 6200, que possuem apenas duas), a melhor forma de evitar que os ROPS tornem-se um gargalo é reduzir ou desativar o uso de antialiasing.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X