quinta-feira, 10 de setembro de 2015

Recursos das placas de vídeo 3D

Além de desenhar os polígonos e aplicar texturas e cores sobre eles, as placas de vídeo 3D são capazes de gerar vários outros efeitos, todos vitais para gerar imagens de boa qualidade. Alguns destes efeitos podem ser feitos via software, aplicados pelo processador principal na falta de uma aceleradora, mas mesmo assim com uma velocidade muito baixa.

Parece não existir limite para a imaginação dos desenvolvedores da indústria 3D. A cada dia são desenvolvidos novos efeitos e os existentes são aperfeiçoados, todos procurando desenvolver as placas e jogos com as imagens mais perfeitas, e obter com isso a liderança nas vendas.

Efeitos Básicos
Todas as placas de vídeo 3D atuais, mesmo as mais simples, como a Trident Blade 3D e a maioria dos chipsets de vídeo onboard atuais são capazes de aplicar todos estes recursos, apenas placas mais antigas ficam devendo alguns.

Em alguns jogos, existe a possibilidade de desabilitar alguns destes recursos para melhorar o frame rate, naturalmente sacrificando um pouco da qualidade de imagem. Isto pode ser necessário caso você esteja rodando um jogo muito pesado em um equipamento mais lento.

Vamos aos efeitos:
 
Gourad Shadding
Uma imagem tridimensional é formada por uma série de pequenos polígonos. A rosquinha da foto abaixo por exemplo, é formada pela combinação de vários triângulos ou retângulos menores.

Devido à incidência de um foto de luz, a rosquinha não seria toda da mesma cor. Se a luz viesse de cima, por exemplo, a parte superior seria formada por tons mais claros do que a inferior. Se cada polígono pudesse ter apenas uma cor, poderíamos ver claramente suas imperfeições.


O recurso de Gourad Shadding visa corrigir este problema. Apartir de uma única cor, é feito uma espécie de degradê que vai de um vértice ao outro de cada polígono, tornando a coloração da imagem muito mais perfeita. Este efeito é usado principalmente para simular superfícies plásticas ou metálicas.

Algumas das primeiras placas de vídeo 3D (todas fabricadas a mais de 4 anos atrás), não suportavam este recurso, usando no lugar dele um outro mais simples, chamado de “Flat Shadding”. Este recurso exige que cada polígono tenha uma única cor sólida, resultando em uma imagem de baixa qualidade, onde os contornos dos polígonos são visíveis. Você pode notar o uso do Flat Shadding em alguns jogos (tanto para PCs quanto Arcade) bem antigos.

Clipping
Como vimos, numa imagem tridimensional um objeto pode ocupar qualquer lugar no espaço, inclusive ficar na frente de outro objeto. Quando é feita a renderização da imagem, ou seja, a conversão para 2D para exibição no monitor, é preciso determinar quais objetos estarão visíveis (apartir do ponto de vista do observador) que quais devem ser ocultados. Este recurso também é chamado de “Hidden Surface Removal”. Na imagem abaixo, temos vários objetos sobrepostos: as caixas estão cobrindo parte da parede, a arma está cobrindo parte do piso e das caixas, etc.


Z-Sorting
Este recurso é opcional. Tem a mesma função do recurso Clipping, ou seja, eliminar as partes encobertas da imagem na hora de fazer a conversão para 2D e enviar a imagem para o monitor. A diferença é como os dois processos realizam esta tarefa:

Usando o Clipping, primeiro são determinados os polígonos visíveis e depois renderizados apenas os que devem ser mostrados. Com isso, a placa economiza poder de processamento, já que menos objetos precisam ser renderizados a cada quadro.

O Z-Sorting realiza a mesma tarefa, mas usa um método bem menos sutil: renderiza todos os polígonos (visíveis ou não) porém começando com os que estão mais afastados do ponto de vista do observador. Conforme a imagem é renderizada, os objetos que estão mais à frente naturalmente vão cobrindo os que estão atrás.

O resultado final usando o Z-Sorting é idêntico ao obtido usando o Clipping, porém, temos um uso menor do processador, pois ele é dispensado de determinar as partes visíveis da imagem, tarefa normalmente realizada por ele. Por outro lado a placa de vídeo é bem mais exigida, pois tem que renderizar mais objetos. Este recurso é às vezes utilizado em drivers de vídeo desenvolvidos para serem utilizados em micros com processadores mais lentos.
As primeiras versões dos famosos drivers “Detonator” na Nvidia, otimizados para obter o melhor desempenho possível em processadores K6-2 (que originalmente são bastante fracos em 3D) utilizam este recurso (entre outros) para diminuir a carga sobre o processador, que neste caso é o gargalo.
                                                                                                 
Lighting
Para conseguirmos uma imagem perfeita, também é preciso determinar a intensidade luminosa, ou seja, a visibilidade de cada objeto baseado na distância e ângulo do foco de luz. Um dos grandes truques numa imagem 3D é que é possível para o programador, determinar dentro da imagem quais serão as fontes de luz: luzes, sol, fogo etc. e sua intensidade. Ao ser processada a imagem, ficará a cargo da placa 3D aplicar o recurso de Lighting, calculando os efeitos dos focos de luz determinados pelo programador.

Na figura abaixo, notamos que as partes da parede que estão mais próximas às luzes aparecem mais claras do que as paredes laterais ou o piso.


Transparência (Transparency)
Muitos objetos, como a água ou o vidro, são transparentes. Este recurso, também chamado de “Alpha Blending” permite a representação destes objetos numa imagem 3D, possibilitando ver o fundo de um lago ou através de uma porta de vidro por exemplo. O grau de transparência de cada objeto é definido em um canal de 8 bits, permitindo 256 níveis diferentes.

O recurso de transparência consome muito processamento, pois é necessário misturar as cores de dois objetos, ou mesmo duas texturas. Naturalmente, as placas 3D com mais poder de processamento são as que se saem melhor ao aplicar este recurso.

Na ilustração abaixo, temos o recurso de Transparência aplicado com diferentes tonalidades. Note que podemos enxergar claramente os prédios através das cápsulas.


Texture Mapping
Esta é uma das funções 3D mais simples, que na maioria dos títulos acaba sendo aplicada pelo próprio processador.

Sobre os polígonos que compõe a imagem, são aplicadas as texturas que tem cada uma sua posição exata na imagem. Este recurso consiste em esticar as texturas que estão mais próximas do ponto de vista do observador e encolher as mais distantes, mantendo inalterada a posição de cada textura na imagem. O efeito colateral deste efeito é que se você observar o objeto de perto, as texturas serão esticadas a ponto de tornarem-se enormes quadrados (como na parede que está mais próxima na imagem a seguir) Este efeito obsoleto resulta em imagens de baixa qualidade, por isso é usado apenas em jogos mais antigos.


Texture Filtering

O recurso de Texture Mapping deixa muito a desejar. As texturas que estão próximas aparecem simplesmente como enormes quadrados, tornando a imagem pouco real.

Para contornar este problema, os jogos mais atuais usam o efeito de texture filtering (filtragem de texturas). Este recurso consiste em interpolar os pontos das texturas que estão mais próximas, diminuindo a distorção. Ao interpolar uma imagem, a placa aumenta sua resolução, adicionando mais pontos aos que já existem. Se temos um ponto verde tonalidade 20 ao lado de outro ponto verde, porém de tonalidade 80, será incluído entre os dois um terceiro ponto de tonalidade 50, outros dois de tonalidade 35 e 65 e assim por diante, até que a imagem atinja o tamanho desejado.

Note que este recurso serve apenas para evitar a granulação da imagem. O nível de detalhes continua o mesmo, como pode ser observado nas ilustrações abaixo. Na imagem a seguir o recurso de texture filtering está desativado e na imagem seguinte ele está ativado (as imagens são cortesia da ATI Technologies Inc.).

 

Existem dois tipos diferentes de texture filtering, chamados de “bilinear filtering” (filtragem bilinear) e “trilinear filtering” (filtragem trilinear), a diferença é que a filtragem bilinear faz um cálculo simples, baseado na textura que está sendo exibida, enquanto na filtragem trilinear é usado um recurso especial chamado “mip mapping”, que consiste em armazenar várias versões de diferentes tamanhos da mesma textura na memória, o que permite realizar a filtragem a partir da textura que mais se aproximar do tamanho da imagem a ser exibida:
128 x 128
64 x 64
 
32 x 32
(as imagens são cortesia da ATI Technologies Inc.).

O trilinear filtering gera efeitos com de qualidade um pouco melhor e consome menos processamento, porém, ao mesmo tempo consome mais memória de vídeo (já que ao invés de um textura são armazenadas várias). Praticamente todas as placas de vídeo 3D suportam o bilinear filtering, mas apenas as mais recentes suportam o trilinear filtering.

Fogging
Se você olhar uma montanha que está bem distante, perceberá que ela parece coberta por uma espécie de neblina que surge devido à umidade do ar, que distorce a imagem, tornando-a pouco nítida.

O efeito de Fogging, destina-se a proporcionar este mesmo recurso em imagens 3D. Isso ajuda de duas maneiras: primeiro, aumentando o realismo da imagem e segundo, diminuindo o processamento necessário, pois as imagens que estarão cobertas por essa “neblina virtual” poderão ser mostradas em uma resolução mais baixa.

Correção de Perspectiva (Perspective Correction)
Este é um recurso muito importante, encontrado em qualquer placa 3D. Através dele, as texturas são moldadas sobre os polígonos respeitando o nosso ângulo de visão. Este efeito lembra um pouco o efeito de texture mapping, mas é muito mais avançado, pois permite que as texturas sejam moldadas a objetos de formas irregulares, como a arma de um personagem por exemplo.

Este recurso permite imagens extremamente reais, mas é um dos que demandam mais processamento e, seu uso intensivo, é um dos motivos dos jogos atuais serem tão pesados. (as imagens são cortesia da ATI Technologies Inc.).


Z-Buffer
Numa imagem tridimensional, além das informações relativas à largura e altura (X e Y), temos as relativas à profundidade (Z). Estas informações são guardadas numa área reservada da memória de vídeo, e destinam-se a determinar com precisão a posição de cada polígono na imagem.

in Manual de Hardware Completo
de Carlos E Marimoto


Sem comentários: