Total de visualizações de página

deixe um OI

Como montar um PC - parte 10: Placas de vídeo e monitores (continuação)

Aceleração 2D

Desde aproximadamente 1993, as placas de vídeo mais sofisticadas passaram a utilizar aceleração gráfica 2D. Em 1995 esta já era uma característica comum em todas as placas de vídeo, mantida até os dias atuais. As placas de vídeo antigas, que não faziam aceleração gráfica, tinham o trabalho limitado a acessar continuamente a memória de vídeo e enviá-los ao monitor. Cabia ao processador da placa de CPU, o trabalho de construir, pixel a pixel, o conteúdo da tela. Para isso o processador armazenava na memória de vídeo, valores que correspondiam às cores que cada pixel da tela deveria ter. Isso tudo deixava o processador da placa de CPU muito ocupado, e a geração das imagens muito lenta.
Visando melhorar o desempenho, os chips gráficos modernos passaram a ser processadores gráficos. Eles não fazem simplesmente a leitura da memória de vídeo e o envio ao monitor. Eles realizam a maioria das operações gráficas mais comuns. Por exemplo:
  • Mover bloco de dados de uma parte para outra da tela
  • Traçado de retas, curvas e retângulos
  • Preenchimento de área com uma determinada cor
  • Preenchimento de área com um determinado padrão
  • Geração de caracteres
Um processador gráfico dedicado, localizado na placa de CPU, tem condições de executar o trabalho de construção de imagens de forma muito mais rápida que o processador da placa de CPU, por dois motivos:
a) Barramento interno com mais bits – O processador da placa de CPU comunica-se com a memória de vídeo através de um barramento PCI ou AGP, ambos de 32 bits. Já o barramento interno da placa de vídeo pode ter um número maior de bits. As placas mais simples utilizam barramentos internos de 64 bits, as mais avançadas usam 128 ou 256 bits.
b) Clock do barramento interno mais veloz – Enquanto o barramento PCI opera com 33 MHz, e a primeira versão do barramento AGP operava com 66 MHz, já era comum encontrar placas de vídeo operando com barramentos internos acima de 100 MHz.
Portanto um processador gráfico localizado na própria placa de vídeo tem condições de acessar a memória de vídeo de forma muito mais rápida que o processador da placa de CPU. Além disso o processador gráfico é especializado apenas em geração de imagens, por isso pode fazer o trabalho muito mais depressa. Além da geração de gráficos na tela ser mais rápida, o processador da placa de CPU fica com mais tempo livre para executar outras tarefas.
Figura 8.28
O barramento interno de uma placa de vídeo é sempre mais veloz que o barramento no qual ela é conectada.
 
 
Para efeito de comparação, mostramos na figura 28 uma placa de vídeo com um processador gráfico de 128 bits, operando a 200 MHz. A taxa de transferência entre este processador e a memória de vídeo é de 3,2 GB/s. Para calcular, basta multiplicar o clock pelo número de bytes da memória de vídeo. No nosso exemplo, são 128 bits, ou 16 bytes, portanto temos:
200 MHz x 16 bytes = 3,2 GB/s
Enquanto isso, o processador da placa de CPU acessa a memória de vídeo através do barramento, que pode ser PCI ou AGP. Ambos são barramentos de apenas 32 bits, e suas taxas de transferência são:
Barramento
Taxa de transferência
PCI
133 MB/s
AGP 1x
266 MB/s
AGP 2x
533 MB/s
AGP 4x
1066 MB/s
AGP 8x 2133 MB/s
Mesmo o barramento AGP 8x nem chega perto da taxa de transferência possível para o barramento interno da placa do nosso exemplo.

Aceleração de vídeo

Desde que os chips gráficos das placas de vídeo passaram a ser aceleradores gráficos para operações 2D, outras funções de vídeo passaram a ser implantadas no hardware de novos chips gráficos. Uma delas é o que chamamos de “aceleração de vídeo”. Não façamos confusão. O que foi explicado no item anterior é a aceleração gráfica, que consiste em executar por hardware, pelo próprio processador da placa, a maioria das funções de geração de imagens de uma interface gráfica, como a do Windows e outros sistemas operacionais. A aceleração de vídeo consiste em realizar por hardware, a exibição de filmes em movimento. Normalmente a exibição de um filme na tela consiste em acessar o arquivo de vídeo (normalmente com extensão AVI, MOV ou MPG), realizar a decodificação da imagem e transferir os dados para a tela, em uma janela. Esta operação envolve um grande volume de processamento, ou seja, deixa o processador da placa de CPU bastante ocupado. Quando uma placa faz aceleração de vídeo, ela realiza a maior parte das operações complexas envolvidas no processo de converter os dados do arquivo de vídeo para os pixels que formarão o filme em movimento na tela. Isso deixa o processador da placa de CPU menos ocupado, além de produzir imagens de melhor qualidade.
Muitas placas de vídeo modernas fazem aceleração de vídeo por hardware. Graças a esta sua especialização, elas podem exibir filmes com melhor qualidade, em tela cheia e com um bom frame rate (o ideal é operar com 30 quadros por segundo para ter uma boa continuidade de movimentos). Quando uma placa não faz aceleração de vídeo por hardware, ela deve faze-la por software. Praticamente todo o trabalho será neste caso feito pelo processador da placa de CPU. Dificilmente poderá ser usada uma exibição em tela cheia e com um bom frame rate. A qualidade das imagens também será inferior. Esta é mais uma das diferenças entre as placas de vídeo caras e as mais baratas.

Aceleração 3D

Este recurso começou a se tornar comum em meados dos anos 90, e hoje está presente em todas as placas de vídeo, até nas mais simples. Trata-se da aceleração gráfica 3D. A idéia é bem parecida com a aceleração gráfica 2D, já apresentada. O chip principal da placa de vídeo é na verdade um processador gráfico capaz de acessar diretamente a memória de vídeo através de um barramento local, com elevada taxa de transferência. Este chip realiza sobre a memória de vídeo, as operações geométricas envolvidas na geração de gráficos tridimensionais. A geração dessas imagens consiste no seguinte:
Figura 8.29
Imagem em wire frame.
 
 
 
1) O processador da placa de CPU gera uma imagem tridimensional formada por uma série de polígonos, como mostra a figura 29. Este tipo de representação é chamado de wire frame (armação de arame).
2) A placa realiza o que chamamos de renderização sobre esses polígonos. O processo consiste em aplicar sobre cada polígono, texturas apropriadas. As texturas são imagens bidimensionais, que ao serem aplicadas sobre os polígonos do wire frame, produzem como resultado uma imagem tridimensional. A figura 30 mostra o resultado da aplicação das diversas texturas sobre o wire frame da figura 29.
Figura 8.30
Imagem resultante da aplicação de texturas sobre o wire frame.
 
 
 
Durante a aplicação das texturas, vários efeitos são adicionados para ter resultados com mais realismo. São levados em conta níveis de iluminação, brilho, reflexão, neblina, transparência, vários métodos de filtragem, etc. Quando uma placa de vídeo 3D é simples, apenas alguns desses efeitos são suportados. Um mesmo programa, ao ser executado em um PC com uma placa de vídeo mais sofisticadas, poderá gerar imagens 3D incrivelmente realistas, ao passo que se executado em um PC com uma placa 3D mais simples resultará em imagens mais pobres.

Captura de vídeo

A captura de vídeo consiste em receber uma fonte de sinal de vídeo, proveniente de uma câmera ou videocassete, e gerar um arquivo de vídeo (normalmente de extensão AVI) com o “filme” resultante. Para realizar este trabalho temos duas opções:
a) Usar uma placa SVGA com funções de captura de vídeo
b) Usar uma placa SVGA comum e uma segunda placa para captura
As placas de captura também são chamadas de placas digitalizadoras de vídeo. A maioria dos modelos disponíveis no mercado realiza apenas as funções de captura, compressão, descompressão e exibição de vídeo, sendo necessário operar em conjunto com uma placa SVGA tradicional. Existem entretanto alguns modelos que fazem tudo, ou seja, além de desempenhar todas as funções de uma placa digitalizadora, são também placas SVGA com capacidades de aceleração 2D e 3D. Um exemplo típico é a placa ATI All in Wonder, encontrada com facilidade no mercado nacional.
As placas de digitalização de vídeo precisam estabelecer comunicação com a placa SVGA. Quando um vídeo está sendo exibido em uma janela, o vídeo propriamente dito é gerado pela placa digitalizadora, enquanto o restante da tela é gerada pela placa SVGA. É preciso sincronizar as duas imagens, e para isso é necessária esta comunicação. Existem placas digitalizadoras que fazem esta comunicação através de um cabo interno, ligado ao VGA Feature Connector, encontrado tanto na placa SVGA quanto na própria digitalizadora (figura 31).
Figura 8.31
À esquerda - A placa digitalizadora pode estabelecer comunicação com a placa SVGA através do feature connector.
À direita - Cabo externo para ligar a placa SVGA à digitalizadora de vídeo.
 
Nesta operação em conjunto, o monitor não é mais ligado na placa SVGA. A imagem que seria enviada ao monitor é transmitida para a placa digitalizadora, através de um cabo apropriado (figura 31). A placa digitalizadora recebe então as imagens geradas pela placa SVGA e adiciona suas próprias imagens (vídeo em janela ou tela cheia), e transmite a imagem final para o monitor.
Existem entretanto placas digitalizadoras que não necessitam dessas conexões físicas com a placa SVGA. Toda a comunicação é feita através dos barramentos PCI e AGP.
Essas placas são capazes também de exibir imagens em movimento (filmes no formato AVI) com uma qualidade muito superior à das placas SVGA. Seus chips especiais realizam a descompressão de imagens por hardware (muito mais rápido que as placas SVGA, nas quais a descom­pressão é feita por software), e ainda podem expandir a imagem para que ocupe a tela inteira, usando interpolação.
As placas de captura de vídeo são acompanhadas de programas para edição de vídeo, como o Adobe Premiere e o Ulead Vídeo Studio. Esses programas permitem adicionar aos arquivos de vídeo, efeitos especiais, realizar cortes, transições, adicionar caracteres, adicionar e editar uma trilha sonora, enfim, todas as etapas envolvidas na geração de um vídeo profissional. A figura 32 mostra o aspecto de um programa para edição de vídeo.
Figura 8.32
Programa de edição de vídeo.
 
 
 

Drivers e utilitários

Todas as placas SVGA são acompanhadas de softwares especiais chama­dos de drivers SVGA. Esses drivers permitem que sejam utilizados os recursos da placa (suas cores e suas resoluções, bem como os recursos de aceleração gráfica) em diversos programas. Em geral, são fornecidos drivers SVGA para:
Windows 3.x
Windows 95 / 98 / ME
Windows NT / 2000
Nem sempre os drivers que acompanham uma placa de vídeo são os mais atualizados. Uma placa pode ficar vários meses na prateleira até ser vendida, e na ocasião da sua instalação, o driver pode estar desatualizado em vários meses. Sempre encontramos no site do fabricante da placa de vídeo, os seus drivers mais atualizados.
O Windows também é fornecido com drivers para centenas de modelos de placas de vídeo. São chamados de drivers nativos. Quando é feita a sua instalação, a marca e modelo da placa de vídeo são detectados e os drivers nativos são instalados. Em geral esses drivers funcionam bem, mas em caso de problemas no vídeo, uma das primeiras providências que devemos tomar é instalar um driver mais novo. Pode ser o existente no CD-ROM que acompanha a placa de vídeo, caso seja mais recente que os drivers nativos do Windows. Melhor ainda é usar a última versão, disponível no site do fabricante da placa de vídeo.
Existem casos em que o Windows não possui drivers nativos para a placa de vídeo. Isto é comum quando a placa é mais nova que a versão do Windows em uso. Quando isto ocorre, a placa é instalada com drivers VGA genéricos, que possibilita usar no máximo a resolução de 640x480, com 16 cores. Apenas com a instalação dos drivers fornecidos pelo fabricante (seja a partir do CD-ROM, seja pela Internet) a placa de vídeo estará plenamente funcional.
Em muitos casos, os drivers da placa de vídeo são instalados através de um pacote mais amplo, contento não apenas os drivers propriamente ditos, mas também utilitários para controle das opções de funcionamento da placa. Muitas vezes esses utilitários aparecem na forma de novas guias no quadro de configurações da placa de vídeo, como mostra a figura 33. Normalmente este quadro possui apenas as guias Geral, Adaptador, Monitor, Desempenho e Gerenciamento de Cores. No exemplo da figura 33, as guias Vanta (o modelo da placa) e Output Device foram adicionadas pela instalação dos softwares que acompanham a placa.
Figura 8.33
Utilitários integrados às propriedades da placa de vídeo.
 
 
 

BIOS VESA

Já vimos que os drivers SVGA são softwares especiais que possibilitam o uso dos recursos de uma placa SVGA em determinados programas e sis­temas operacionais. Um driver SVGA para Windows ME permite que qual­quer programa gráfico para Windows ME possa utilizar os recursos da placa. Obviamente, programas como editores de texto e bancos de dados não aproveitarão totalmente os recursos de cor (apesar de poderem incorpo­rar essas figuras em seus documentos), mas os programas próprios para manipulação de figuras farão pleno uso das cores que a placa permite. Programas para edição de fotos poderão exibir seus arquivos usando os modos Hi Color e True Color, se a placa estiver configurada para tal.
Você encontrará entretanto, muitos programas antigos para MS-DOS, principal­mente jogos, que precisam de suporte para utilizar os recursos da placa, como suas altas resoluções, seu elevado número de cores e a aceleração gráfica. Infelizmente, não existem “drivers SVGA para DOS”, mas existe algo parecido, chamado BIOS VESA. Trata-se de um conjunto de funções padronizadas que permitem que qualquer software gráfico para MS-DOS possa utilizar os modos gráficos em qualquer placa SVGA, desde que ambos estejam preparados para operar neste modo. O BIOS VESA faz parte do próprio BIOS da placa de vídeo.
Ele já está implantado na placa, na mesma ROM onde está o BIOS VGA. Muitos programas gráficos estão preparados para operar controlando um BIOS VESA. Você não pode fazer com que um programa gráfico antigo, que não suporte o BIOS VESA, passe a utilizar os modos gráficos SVGA só pelo fato da placa SVGA pos­suir este recurso. É preciso que o programa possua esta opção. Podemos citar o caso dos jogos. Tradicionalmente, utilizam o modo gráfico de 320x200 com 256 cores, mas muitos jogos para MS-DOS mais recentes (1995-1997) possuem opções gráficas como VGA e SVGA. Quando o usuário escolhe a opção SVGA, o programa passa a usar os recursos do BIOS VESA para gerar altas resolu­ções e elevado número de cores. Entretanto, é preciso tomar cuidado com um detalhe importante. Programas visualizadores gráficos, que simples­mente apresentam figuras estáticas na tela, podem perfeitamente operar com altas resoluções. Já os jogos de ação, como aqueles que envolvem lutas e corridas, precisam ficar constantemente alterando o conteúdo da memória de vídeo. Em alta resolução, computadores que não sejam extre­mamente velozes podem demorar muito tempo para executar o preenchi­mento da tela, o que causa a perda da continuidade de movimentos (a ima­gem apresenta saltos). Em micros antigos, é melhor operar com resolução baixa (320x200) para obter mais velocidade, mesmo sendo o BIOS VESA capaz de operar com resoluções elevadas.

Usando múltiplos monitores

A partir da versão 98, o Windows passou a apresentar um recurso bastante interessante e em certos casos extremamente útil, que é a possibilidade de instalação simultânea de várias placas de vídeo e vários monitores. Instalar, por exemplo, dois monitores, pode ser uma opção mais prática e econômica que comprar um monitor de tela grande. Nesta seção mostraremos como é feita a instalação e a utilização deste recurso. Basicamente temos que fazer o seguinte:
1) Uma placa de vídeo deve ser instalada e estar funcionando corretamente
2) Instalar a segunda placa de vídeo e reiniciar o computador
3) Configurar o Windows para utilizar a segunda placa de vídeo
Devemos encaixar a segunda placa de vídeo em um slot livre (ambas as placas precisam ser PCI, sendo que uma delas pode ser AGP). Quando o Windows for inciali­zado, apenas o primeiro monitor funcionará, e nele será apresentada a mensagem infor­mando que a segunda placa foi detectada. Deve ser feita a instalação dos seus drivers, exatamente como fazemos para instalar uma placa única. Terminada a instalação o computador deverá ser reinicializado. Se tudo correr bem, o segundo monitor apresentará em modo texto, a mensagem mostrada na figura 34 assim que o ambiente gráfico do Windows for carre­gado. A primeira placa de vídeo estará funcionando normalmente.

Figura 8.34 - Se esta mensagem aparecer, significa que a segunda placa de vídeo foi corretamente instalada.
Se a mensagem da figura 34 não aparecer, ocorreu algo de errado na sua insta­lação. Devemos consultar o Gerenciador de Dispositivos para buscar informações vi­sando corrigir eventuais problemas. Na figura 35 vemos que existem duas placas de vídeo instaladas, uma primária (Matrox MGA Mystique) e uma secundária com proble­mas (Video-71AGP-3D).
Figura 8.35
A placa secundária está com problemas.
 
 
 
Ao consultarmos as propriedades da placa problemática (figura 36), vemos a causa dos problemas. É informado que o suporte a múltiplos monitores está tendo problemas com o gerenciador de memória EMM386.EXE. Removemos este gerenciador do CONFIG.SYS e depois de reinicia­lizar o Windows, voltamos ao Gerenciador de Dispositivos para constatar que está tudo bem.
Figura 8.36
Propriedades da placa de vídeo com problemas.
 
 
 
Depois que a segunda placa de vídeo estiver corretamente instalada, a guia Confi­gurações do quadro de propriedades de vídeo terá um aspecto completamente diferente (figura 37). Antes de definir a resolução, o número de cores e usar o botão Avançadas, temos que selecionar a placa de vídeo a ser utilizada, através do campo Exibir. 
Figura 8.37
A guia de Configurações de vídeo, quando existem duas placas de vídeo instaladas.
 
 
 
Cada uma das placas poderá operar com seu próprio modo gráfico, ou seja, com resolução e número de cores diferentes. Devemos marcar também a opção Estender a área de trabalho do Windows a este monitor. Isto faz com que a tela do segundo moni­tor funcione como continuação da tela do primeiro. Quando o cursor do mouse é mo­vimentado até a borda direita do primeiro monitor, aparecerá imediatamente na borda esquerda do segundo monitor. Ao arrastarmos uma janela no primeiro monitor para a direita, o trecho que desaparece na borda direita aparecerá entrando pela parte es­querda do segundo monitor (figura 38).
Figura 8.38 - A área de trabalho ocupa os dois monitores.
Se na figura 38, clicarmos sobre o botão Maximizar da janela que invadiu a se­gunda tela, esta janela será maximizada até ocupar totalmente a segunda tela. Janelas que na ocasião da maximização estiverem com o botão Maximizar na primeira tela, se­rão maximizadas ocupando integralmente a primeira tela. Desta forma podemos manter dois programas maximizados simultaneamente, cada um ocupando uma tela. Até mesmo comandos de arrastar e soltar poderão ser utilizados entre esses dois programas, já que o cursor do mouse percorre livremente ambas as telas.
No quadro da figura 37, podemos clicar sobre um monitor (1 ou 2) e move-lo para cima, para baixo, para a esquerda ou direita do outro monitor. Podemos desta forma definir a posição do monitor secundário em relação ao monitor principal.

Requisitos para o uso de múltiplos monitores

Você pode instalar mais de duas placas de vídeo, estendendo o processo aqui apresen­tado. A Microsoft afirma que este recurso foi testado com até 9 monitores. É claro que o aumento do número de monitores ficará vinculado ao número de slots livres para ex­pansão de novas placas. Apenas placas de vídeo PCI e AGP podem ser utilizadas.
Também devemos levar em conta que certos modelos de monitores, ao serem colocados lado a lado, causam interferência mútua nas imagens. Devido à falta de blin­dagem eletromagnética apropriada, cada um dos monitores pode apresentar ondulações na imagem, o que dificultará o uso de múltiplos monitores. Será preciso deixar os moni­tores afastados, o que poderá tornar incômodo o seu uso simultâneo.
Existem ainda restrições quanto aos modelos de placas de vídeo a serem utiliza­das. Nem todos os modelos suportam a operação em conjunto. É também preciso que as placas de vídeo possuam drivers para o Windows 98 / Millennium, dotados do recurso de funcio­namento com múltiplas placas de vídeo.
Você encontrará no diretório C:\WINDOWS do seu computador, o arquivo DISPLAY.TXT. Nele existem várias dicas sobre monitores e placas de vídeo, e ainda uma lista com as marcas e modelos de placas de vídeo testadas pela Microsoft, que dão suporte ao funcionamento de múltiplos monitores. Poderíamos apresentar as listas aqui, mas seriam muito extensas. O Windows 98 introduziu este recurso, o Windows 98 SE tem uma lista ainda maior, o mesmo ocorrendo no Windows Millenium. A cada versão do Windows, mais modelos de placas de vídeo são certificadas para a operação com múltiplos monitores.

Placas de vídeo 3D

Placas 3D não são mais um acessório apenas para os usuários de jogos ou um item sofisticado para os profissionais de computação gráfica. Atualmente todas as placas de vídeo possuem recursos 3D, mesmo as utilizadas nos PCs mais simples. Portanto é uma boa idéia conhecer as funções dessas placas.

O que faz uma placa de vídeo 3D?

A exibição de imagens tridimensionais é muito complexa, principalmente quando é necessário um alto grau de realismo. Imagens tridimensionais são representadas internamente na memória do computador, como uma sucessão de elementos gráfi­cos: polígonos, luzes, texturas e efeitos visuais diversos. Por exemplo, para represen­tar uma casa com móveis, é preciso que o programa mantenha na memória, todos os objetos representados como grupos de polígonos, tipicamente triângulos e retân­gulos.
Qualquer polígono pode ser representado como a junção de um ou mais triângu­los ou retângulos. É preciso armazenar as coordenadas espaciais (X, Y e Z) de cada um dos vértices desses polígonos. Pontos de iluminação também preci­sam ter suas coordenadas armazenadas, pois esta informação é necessária para de­terminar se elementos gráficos aparecerão mais claros ou mais escuros, e ainda para a composição de sombras. Em cada superfície são aplicadas texturas, obtendo as­sim, maior realismo. Uma textura é uma figura bidimensional que é aplicada sobre os polígonos no espaço tridimensional. Por exemplo, o asfalto de uma pista de cor­ridas pode ter aplicado a ele, imagens de trechos de imagens obtidos por fotografias frontais de asfalto verdadeiro. Da mesma forma, tijolos podem ser representados por retângulos sobre os quais são aplicadas texturas resultantes de fotografias de tijolos verdadeiros. O principal trabalho de uma placa tridimensional é aplicar as texturas sobre os polígonos, levando em conta as suas coordenadas espaciais. A figura 39 mostra um exemplo de imagem obtida a partir da aplicação de texturas sobre os polígonos no espaço tridimensional.
Figura 8.39
Texturas são aplicadas sobre os polígonos, formando assim as imagens tridimensionais.
 
A figura 40 mostra uma tela capturada de um jogo 3D para o modo MS-DOS. Apesar de ser um jogo tridimensional, não utiliza recursos de placas tridimensionais (e por isso funciona com qualquer placa de vídeo).
Figura 8.40
2D - Cena de um jogo que não possui suporte para placas tridimensionais.
 
 
A parte esquerda da figura mostra o interior de uma sala, com razoável qualidade gráfica. Podemos ver os detalhes do relógio, o banco, e até as texturas dos azulejos da parede. Na parte direita da figura temos uma pa­rede bem próxima. Como não estão sendo usados recursos tridimensionais, não é possível ter alta qualidade nas texturas aplicadas, principalmente a pequenas dis­tâncias. As texturas precisam ser ampliadas, e são representadas por uma série de quadrados de grande tamanho, o que prejudica o realismo. O problema poderia ser resolvido com o uso de texturas de maior resolução, mas aí existiria outro pro­blema mais sério, que é a grande quantidade de processamento envolvido na apli­cação dessas texturas. Para aplicar uma textura de 256x256, seria preciso um poder de processamento 16 vezes maior que o necessário para usar uma textura de 64x64. Especificamente os jogos 3D para MS-DOS foram criados para funcionar com processadores 486, portanto não podem contar com um processador veloz para manipular texturas muito complexas.
Já a figura 41 mostra uma cena do jogo Heavy Metal Fakk2, usando uma placa de vídeo 3D. A parte esquerda da figura é o canto externo de uma parede de tijolos. Podemos observar que esses tijolos, mesmo es­tando próximos do observador, não são formados por uma sucessão de quadrados de grande ta­manho, como no caso da figura 40. Além da placa de vídeo 3D ser capaz de mani­pular texturas de maior resolução, realiza filtragens que fazem com que as imagens fiquem mais realistas, não apresentando efeito de pixelização.
Figura 8.41
3D - Imagem gerada em uma placa 3D.
 
Na figura 42 vemos uma cena de outro jogo que não utiliza recursos de placas 3D, o DOOM 2. Podemos observar que a parte central da figura, que representa o fundo de um corredor, está escurecido, enquanto as partes próximas estão mais claras. O chão e o teto mostram claramente que a transição entre o claro e o escuro é feita de forma precária, dividida em faixas. O escurecimento de partes afastadas é uma técnica para melhorar o realismo, mas o efeito visual é prejudicado pela falta de recursos tridimensionais nos jogos mais simples. Conforme andamos ao longo do corredor, as faixas claras se movimentam, e as partes escuras se tornam claras. Essa transformação em cores mais claras não é gradual, e sim, através de faixas. O resultado não é muito bom.
Figura 8.42
2D - Cena do jogo DOOM2. Trechos distantes são escurecidos de forma precária.
 
 
Placas tridimensionais podem escurecer partes distantes, mas de forma gradual. Observe por exemplo, o fundo da sala na figura 43. Conforme andamos naquela direção, o fundo vai ficando mais claro, mas de forma gradual, sem apresentar fai­xas.
Figura 8.43
3D - Partes distantes são escurecidas de forma gradual.
 
 
Vejamos agora algumas das operações realizadas pelos chips gráficos de placas de vídeo tridimensionais. Chips mais sofisticados realizam a maioria dessas operações, enquanto outros mais simples (e mais baratos) não realizam algumas delas. Chips mais simples também podem realizar várias operações 3D, mas em baixa velocidade, o que torna inviável gerar imagens complexas em movimento com boa qualidade e alta resolução.

O papel do processador na geração de imagens 3D

Antes de existirem placas de vídeo tridimensionais, o processador da placa de CPU fazia sozi­nho todo o trabalho:
  • Cálculo das coordenadas dos vértices dos polígonos
  • Traçado dos polígonos
  • Determinação de partes visíveis e ocultas
  • Cálculo de nível de iluminação ponto a ponto
  • Renderização - aplicação de texturas sobre os polígonos
Um elevado volume de processamento é necessário para realizar todas essas tarefas. Como o processador sozinho tinha que fazer todo o trabalho, acabava sendo difícil exibir imagens tridimensionais em alta qualidade, e em tempo real. Em jogos, queremos que as imagens sejam movimentadas de forma interativa, que os gráficos sejam continuamente recalculados à medida em que os movimentos são feitos. Para que tenhamos uma boa continuidade de movimentos, é preciso ter um número elevado de quadros (frames) exibidos a cada segundo. O ideal é 30 quadros por segundo (30 fps), o que resulta em uma continuidade de movimentos equivalente às das imagens de TV. Para isto é preciso que o processador faça todos os cálcu­los, gere a figura tridimensional e a transfira para a tela, em apenas 1/30 do se­gundo. Para conseguir fazer este trabalho em tão pouco tempo, algumas simplifica­ções são tomadas, como o uso de resolução baixa (320x240, por exemplo), o uso de texturas de baixa resolução (32x32), além de outras simplifica­ções.
As placas de vídeo 3D vieram para ajudar o processador na tarefa de gerar as ima­gens tridimensionais. Realizam por hardware a aplicação de texturas, levam em conta o nível de iluminação ponto a ponto, bastando saber qual é o nível de ilumi­nação em cada vértice de cada triângulo. Desta forma, o processador só precisa fazer cálculos relativos aos vértices de cada triângulo, e todos os demais pontos são calculados pelo chip gráfico. Ainda assim o processador precisa realizar algumas tarefas muito importantes, antes de passar o restante do trabalho para o chip grá­fico:
a) Cálculo das coordenadas dos vértices
À medida em que o ponto de vista se movimenta em uma figura, é preciso recalcu­lar as coordenadas relativas para cada vértice. Esta tarefa usa intensamente o pro­cessador aritmético existente dentro do processador. Para esses cálculos, o processador deve ter uma unidade de ponto flutuante de alto desempenho, mas instruções especiais como as das tecnologias 3D Now (AMD) e SSE (Pentium III e 4) aceleram bastante este trabalho.
b) Eliminação de partes ocultas
Quando um elemento está localizado na frente de outros elementos, o processador precisa determinar quais serão mostrados, e quais ficarão escondidos.
c) Cálculo de intensidade luminosa
A intensidade de luz que chega a cada polígono depende de vários fatores, como a distância ao foco de luz e os ângulos formados entre a superfície do polígono e as linhas que vão ao ponto luminoso e ao ponto de observação. Esses cálculos preci­sam ser feitos para serem depois enviados ao chip gráfico, que fará a aplicação das texturas levando em conta a luminosidade.
Como vemos, apesar do chip gráfico fazer um trabalho pesado na formação das imagens, processando pixel por pixel, ainda é importante ter um processador veloz para fazer todos os cálculos tridimensionais.
A seguir mostraremos quais são as principais funções realizadas pelos processadores 3D encontrados nas placas de vídeo modernas.

Texture Mapping

Esta é a principal função de um chip gráfico, mesmo os mais simples. A memória de vídeo armazena, além da imagem a ser exibida, imagens quadrangulares (ex: 256x256) que representam as texturas a serem aplicadas sobre os triângulos ou retângulos. A figura 44 mostra algumas das milhares de texturas utilizadas em um jogo 3D (Heavy Metal Fakk2). Este jogo usa texturas de vários tamanhos, como 256x256, 128x256 e 128x128. Note que existem texturas que representam paredes, janelas, portas, telhados, madeira, etc.
Figura 8.44 - Várias texturas utilizadas em um jogo 3D.
Esta aplicação envolve uma correspondência entre os pontos da textura e os pontos dos triângulos aplicados na tela. Nos pontos mais próximos do observador, os pixels da textura precisam ser “esticados”, e nos pontos mais afastados, precisam ser “encolhidos”. Cada pixel de uma textura poderá ser representado por um grupo de pixels na imagem final, quando está mapeado sobre um elemento muito próximo. Podemos constatar este efeito na figura 45, que mostra uma janela vista em perspectiva. Na sua parte esquerda, os pixels das tex­turas são representados por quadriláteros de maior tamanho. Nesta mesma superfí­cie, porém em pontos mais distantes, esses quadriláteros têm tamanho menor. A figura mostra ainda, à direita, o detalhe destacado.
Em pontos localizados a distâncias maiores, um pixel na tela pode representar uma combinação de vários pixels da mesma textura. Em pontos mais próximos, ocorre o inverso, ou seja, um pixel da textura é mapeado em vários pixels na tela.
Figura 8.45 - Renderização sem filtragem.
Antigos programas gráficos 3D para MS-DOS, que funcionavam em PCs 486 sem usar placas 3D, faziam a renderização como na figura 45. Também desta forma operavam as primeiras placas 3D, a única diferença é que eram mais rápidas e podiam usar texturas maiores e em maior número, mas o efeito de pixelização era similar ao encontrado nos programas antigos. A seguir surgiram placas 3D mais sofisticadas, capazes de eliminar este efeito visual indesejável. Elas aplicam técnicas de processamento de imagem chamadas de filtragem bidimensional. Consistem em utilizar interpolações para desfazer os efeitos de pixelização. A figura 46 mostra a mesma imagem, com aplicação de filtragem. As placas 3D modernas fazem dois tipos de filtragem: bilinear e trilinear.
Figura 8.46 - Imagem renderizada com filtragem.

Mip Mapping

Representar texturas de tamanhos variados é muito difícil. Como vimos, quando o elemento sobre o qual a textura deve ser aplicada está muito próximo do observador, a tex­tura deve ser “esticada”. Quando o elemento está muito longe, a textura deve ser “encolhida”. Essas transformações demandam cálculos, o que tende a tomar tempo do chip gráfico. Uma forma de reduzir esta quantidade de cálculos é manter arma­zenadas na memória de vídeo, várias versões da mesma textura, com tamanhos variados. Desta forma, dependendo da distância e do tamanho do objeto sobre o qual a textura deve ser aplicada, é usada uma versão de tamanho apropriado.

Bi-linear / Tri-linear Filtering

Essas técnicas utilizam cálculos para misturar as cores dos pixels das texturas, resultando em um efeito visual me­lhor. As figuras 45 e 46 mostram a diferença entre uma imagem sem filtragem e uma com filtragem. Os dois tipos de filtragem usados nas placas de vídeo são o bilinear e o trilinear. A filtragem trilinear demanda mais cálculos e produz resultados visualmente melhores. Todas as placas 3D modernas fazem filtragem bilinear, mas nem todas fazem a filtragem trilinear.
A figura 47 mostra a diferença entre as filtragens bilinear e trilinear. Normalmente olhando a tela à distância, dificilmente percebemos a diferença. Apenas olhando atentamente nos detalhes das texturas podemos perceber a maior qualidade da filtragem trilinear. Esta figura mostra uma pequena área de 70x120 pixels, extraída de uma cena 3D com 1024x768.
Figura 8.47
Filtragens bilinear e trilinear.
A diferença entre os dois tipos de filtragem é que a trilinear utiliza informações re­sultantes do MIP Mapping para realizar uma filtragem melhor e mais rápida. Os jogos 3D possuem comandos para escolher o tipo de filtragem a ser usada. Em alguns casos, escolher a filtragem bilinear ao invés da trilinear pode melhorar o desempenho, algo que pode ser tentado quando a movimentação está lenta.

Anti-Aliasing

Esta técnica nada mais é que a aplicação de filtragem, já explicada acima. Seu obje­tivo é acabar com o efeito de pixelização. Para elementos próximos, a filtragem acaba com os grandes quadriláteros que se formam na imagem, como ocorreu na figura 46. Para elementos situados a médias distâncias, a filtragem acaba com efeitos que fazem retas aparecerem como escadas. A figura 48 mostra o melhoramento que a filtragem faz sobre este efeito de “escada”, visualmente indesejável, que prejudica o realismo da imagem.
Figura 8.48
O efeito “escadinha” (jagging) é eliminado com a filtragem.
 

Dithering, imagens de 16 e 32 bits

O dithering é uma técnica bastante antiga, não usada apenas em placas 3D. Consiste em misturar pontos de diversas cores, com o objetivo de simular um número maior de cores. Este é o método usado na representação de fotos em arquivos GIF, usando apenas 256 cores. Desta forma, com poucas cores disponíveis, o chip gráfico simula um número de cores muito maior. Placas 3D mais modestas operam com 16 bits por pixel, totalizando 65.536 cores. Imagens geradas neste modo apresentam superfícies com variações de cor através de faixas, e não contínuas. Também utilizam o dithering para simular um número maior de cores, usando as poucas cores disponíveis. Melhor ainda é quando a placa opera com 32 bits, possibilitando gerar cores mais reais, sem lançar mão do dithering. A figura 49 mostra um pequeno trecho de uma cena em duas situações. À esquerda temos a imagem com 16 bits e dithering, e à direita temos a imagem com 32 bits. No detalhe destacado podemos perceber na versão de 16 bits, a mistura de pixels de cores diferentes, mistura esta que não é necessária com o uso de 32 bits.
Figura 8.49 - Imagens com 16 bits/dithering e com 32 bits.
Apenas olhando mais atentamente conseguimos perceber a diferença entre imagens de 16 e de 32 bits. Os jogos normalmente permitem ao usuário escolher o modo a ser usado. Em geral usar 16 bits resulta em um desempenho duas vezes maior que usar 32 bits. Portanto usar 16 bits é uma simplificação visual aceitável para resolver problemas de baixo desempenho.
A figura 49 mostra ainda mais um efeito indesejável, que é a pixelização que ocorre na transição entre texturas diferentes. O contorno da personagem é claramente apresentado na forma de escada, problema que a filtragem não resolve, por melhor que seja a placa de vídeo. A filtragem ocorre apenas no interior de cada textura, mas não é feita nas suas extremidades, pois seria extremamente complexo fazer os cálculos necessários utilizando as várias texturas envolvidas. O efeito é melhorado quando usamos uma resolução mais elevada, mas isto só pode ser feito quando a placa e o processador são de alto desempenho.

Z-Buffer

Aqui está uma outra função que está presente em todos os chips gráficos, mesmo os mais simples. Trata-se de uma área da memória de vídeo que é usada para manter as coordenadas Z (profundidade) dos elementos gráficos que serão apresentados na tela. Essas informações são calculadas e preenchidas pelo processador, que é o responsável por determinar o posicionamento dos polígonos. Com essas informa­ções, o chip gráfico pode realizar diversas funções que dependem da informação de distância do observador. O chip gráfico pode também ajudar o processador na ta­refa de determinar quais são os elementos visíveis e quais têm visão obstruída por outros elementos.
Figura 8.50 - O papel do z-buffer.
Na figura 50 vemos a mesma imagem em duas versões: sem e com o z-buffer. Quando o z-buffer está desativado, o posicionamento de imagens pode não funcionar corretamente, fazendo com que elementos que deveriam estar atrás aparecem na frente. Na versão sem o uso do z-buffer na figura 50, parece que a carro está dentro da cerca, quando na verdade a cerca passa à esquerda do carro.

Double Buffering

O buffer aqui referido é a área de memória de vídeo que é representada na tela. Placas que não possuem este recurso fazem as alterações na própria imagem que aparece na tela. Desta forma, modifica­ções intermediárias podem ser vistas momentaneamente à medida em que a figura é redesenhada, o que é uma imperfeição visual. Com o uso do buffer duplo, este problema não ocorre. Enquanto um buffer está sendo exibido na tela, o outro está sendo calculado e preenchido com a nova posição da figura. Terminado o preen­chimento, este segundo buffer passa a ser exibido na tela, já pronto. O primeiro buffer será agora usado para um novo preenchimento. Dessa forma, os dois buffers ficam se alternando na tela, um sendo exibido enquanto o outro está sendo recalcu­lado.

Alpha Blending

Este recuso serve para criar objetos transparentes, como água (com coloração azul ou verde) vidros coloridos, etc. Também pode ser usado para criar efeito de ne­blina. Em jogos de corridas nos quais existe grande realismo na representação dos carros, a pintura pode ser cromada com a aplicação desta técnica. Também pode ser usado para criar efeitos visuais de ofuscamento por luzes, como as de holofotes, faróis de carros e do sol, como mostra a figura 51.
Figura 8.51
Um dos vários efeitos que podem ser criados com o Alpha Blending.
 
 
 

Gourad Shading

A figura 52 mostra esta técnica. Uma das etapas da criação de gráficos 3D é o preenchimento de tonalidades sobre os polígonos que formam as figuras, com o objetivo de criar diferentes graus de luminosidade. Isto dá à imagem, o aspecto de tridimensionalidade. A técnica de sombreamento mais simples consiste em preencher um polígono inteiro com uma tonalidade. Isso é o que chamamos de flag shading. O problema é que apesar de simples e de rápida aplicação, este processo deixa transparecer que o sólido é formado por uma série de polígonos, que ficam visivelmente destacados.
Uma técnica mais avançada, utilizada pelas placas 3D modernas, é a chamada Gourad shading. Consiste em utilizar os valores nos vértices como referência para interpolar os valores de todos os pixels no interior do polígono. A tonalidade varia linearmente, e assim não notamos mais a presença dos diversos polígonos, temos a sensação de que os objetos são sólidos com curvatura própria.
Figura 8.52 - Flat shading e Gourad shading.

Perspective Correction

O aspecto de uma textura não deve ser uniforme em toda a extensão do polígono sobre o qual é aplicada. Deve ser reduzido para as partes localizadas a distâncias maiores. O processador, responsável pelo cálculo das coordenadas dos vérti­ces dos polígonos, tem condições de desenhar cada um deles em perspectiva, mas cabe ao chip gráfico realizar as transformações adequadas também sobre a textura. Imagine que a parede retangular mostrada na figura 53 é um polígono, sobre o qual será apli­cada uma textura formada por tijolos. Graças ao cálculo correto das coordenadas dos vértices, feito pelo processador, a parede aparece com o formato correto. Se a textura fosse aplicada de maneira uniforme, sem levar em conta a perspectiva, o resultado seria ruim, com pouco realismo, como mostra a parte direita da fi­gura. Todos os tijolos apareceriam com o mesmo tamanho, o que não corresponde à realidade. A parte esquerda da figura utiliza correção de perspectiva. Toda a textura é remanejada, sendo comprimida nas partes mais distantes, resultando em maior realismo. A correção de perspectiva está presente em praticamente todas as placas de vídeo 3D (exceto em alguns modelos antigos), e sem ela, a qualidade dos gráficos é muito prejudicada.
Figura 8.53 - Correção de perspectiva.
Uma placa de vídeo 3D deve oferecer, no mínimo, os seguintes recursos:
  • Texture Mapping
  • Z-Buffer
  • Bi-linear filtering
  • Prespective Correction
Esses recursos estão presentes em todas as placas de vídeo modernas, até nas mais simples. Altamente desejáveis para obter melhor qualidade de imagem são os recursos:
  • Mip Mapping
  • Tri-linear filtering
  • Dithering
  • Double Buffering
  • Alpha Blending
  • Gourad Shadding
Alguns desses recursos podem não estar presentes nas placas 3D mais simples.

APIs gráficas: Direct3D, OpenGL e Glide

As primeiras placas 3D tinham um sério problema: falta de uma interface de software padrão. Quando comprávamos uma placa 3D, eram fornecidos alguns programas configurados especificamente para utilizar os recursos desta placa. Eram programas que não funcionavam com outros modelos de placas 3D, placas estas que não eram compatíveis com outros programas 3D. Não existia portanto uma “linguagem” comum entre os programas e as placas, assim o seu uso era muito restrito. Na medida do possível, os fabricantes de placas 3D ajudavam os produtores de software a adaptarem seus programas às suas placas, mas era uma tarefa bastante complexa. Um grande destaque teve a 3DFx, fabricante de chips gráficos de alto desempenho. Criaram um padrão chamado Glide, um conjunto de funções através das quais os programas poderiam ter acesso às funções das suas placas de vídeo. Este tipo de padrão de acesso é o que chamamos de API (Application programming interface). Vários produtores de programas gráficos, sobretudo de jogos, produziram softwares utilizando o Glide, sendo assim as placas equipadas com chips 3DFx fizeram muito sucesso.
Atualmente existem, além da Glide, duas outras APIs bastante difundidas: a Direct3D e a OpenGL. A Direct3D faz parte do pacote DirectX, da Microsoft, e é mais utilizada para jogos. A OpenGL é uma API mais utilizada por programas 3D profissionais, mas recentemente tem sido também muito utilizada por jogos.
Podemos então encontrar programas 3D específicos para uma dessas três APIs. A maioria dos programas pode operar com pelo menos duas, e alguns podem funcionar com as três. As APIs presentes em um determinado computador dependem da placa de vídeo e dos drivers instalados:
a) Glide
Esta API só está presente nas placas de vídeo que utilizam os chips da 3DFx (Voodoo).
b) Direct3D
Todas as placas de vídeo 3D podem utilizar esta API. Placas de vídeo compatíveis com o Windows devem ter suporte para o Direct3D, a Microsoft obriga que isto ocorra para que o produto possa exibir o logotipo “Designed for Windows”.
c) OpenGL
A maioria das placas de vídeo 3D possuem juntamente com seus drivers, a API OpenGL. Ela é instalada automaticamente durante o processo de instalação da placa de vídeo. Existem algumas placas 3D que não são acompanhadas do OpenGL. Neste caso podemos obter o OpenGL a partir de fabricantes de software especializados. Eles produzem versões compatíveis do OpenGL, capazes de funcionar com a maioria das placas de vídeo do mercado.

DirectX

Durante o reinado do Windows 3.x e até do Windows 95, criar jogos para o ambiente Windows era uma tarefa bastante ingrata. O Windows não era muito receptivo aos jogos, graças à sua lenta interface gráfica. Era mais rápido movimentar dados na memória de vídeo em baixa resolução, no modo MS-DOS. Até aproximadamente 1997, a maioria dos jogos de ação operavam sob o MS-DOS. A situação começou a mudar quando a Microsoft criou o DirectX, um método padronizado para acesso direto e rápido aos recursos de hardware. Com ele é possível acessar em alta velocidade a memória de vídeo, bem como ter acesso às funções 3D da placa de vídeo. Graças a este padrão, foi possível a criação de milhares de jogos para o ambiente Windows, compatíveis com a maioria das placas 3D do mercado. DirectX é composto de 5 grupos de funções:
a) Direct Draw
É usado para acesso direto à placa de vídeo, em modo bidimensional.
b) Direct 3D
Usado para acesso direto aos recursos tridimensionais das placas de vídeo.
c) Direct Sound
Usado para acesso direto ao hardware da placa de som
d) Direct Input
Permite acesso direto a dispositivos de entrada, como joystick, teclado e mouse.
e) Direct Play
Usado para acesso direto ao hardware em jogos por modem, rede ou portas seriais.
Periodicamente são lançadas novas versões do DirectX, que são distribuídas pela Microsoft por diversos meios. Um desses meios de distribuição é a Internet, através do endereço http://www.microsoft.com/directx. O próprio Windows é fornecido com o DirectX, e através do recurso Windows Update, você pode obter versões mais novas através da Internet, à medida em que se tornam disponíveis.
Também é possível obter o DirectX juntamente com as placas de vídeo. Essas pla­cas são fornecidas com seus drivers, e ainda com o DirectX. Muitos jogos também são acompanhados do DirectX. Ao final da instalação do jogo ou dos drivers da placa de vídeo, é perguntado se desejamos instalar o DirectX. Em caso de dúvida podemos responder que SIM, pois caso já esteja instalada uma versão mais nova, a instalação de uma versão mais antiga não terá efeito. De qualquer forma, para não perder tempo, é bom saber a versão do DirectX existente no seu computador. Para isso basta executar o programa dxdiag.exe (Iniciar / Executar / dxdiag.exe). Será apresentado um quadro como o da figura 54, no qual podemos conferir a versão do DirectX. Neste exemplo, trata-se da versão 8.0.

Figura 8.54
Checando a versão do DirectX instalada no computador.
 

 
 

Porque DirectX?

O DirectX é um conjunto de drivers que fazem com que programas possam fazer acessos diretos a dispositivos de hardware, mas de uma forma padronizada, de modo que funcione com qualquer hardware. Jogos para MS-DOS tipicamente fazem acesso direto ao hardware, mas antes precisam ser configurados, sendo informado o modelo da placa de vídeo e o modelo da placa de som. Os módulos do DirectX permitem o acesso direto ao hardware, sem que para isto os programas precisem saber quais são os modelos das placas instaladas.
Dizemos que os módulos do DirectX são APIs (Application Program Interface). Por exemplo, o Direct3D é uma API através da qual programas podem fazer acessos aos recursos tridimensionais das placas de vídeo. Os jogos, por exemplo, não precisam saber qual é o modelo da placa de vídeo instalada, e nem serem configurados em função disso. Esta configuração é deixada para o Direct3D.
Se não existissem APIs como o Direct3D, programadores de jogos teriam que criar suas próprias APIs, ou seja, conjuntos de funções de software que permitem o acesso aos dispositivos de hardware. Isso realmente ocorreu no passado, quando não existiam APIs gráficas padronizadas. Com o uso de APIs como o Direct3D, pro­gramadores de jogos, por exemplo, podem se preocupar apenas com a criação dos jogos, sem se preocupar com o funcionamento da placa de vídeo e outros módulos de hardware.

0 comentários: sobre Como montar um PC - parte 10: Placas de vídeo e monitores (continuação)

Postar um comentário para Como montar um PC - parte 10: Placas de vídeo e monitores (continuação)

Related Posts Plugin for WordPress, Blogger...