|
Processadores |
Placas de Vídeo Este texto visa esclarecer as dúvidas mais comuns sobre placas 3D. 1) 3DFX é apenas o nome de um fabricante de processadores gráficos, e năo um recurso ou uma interface de programaçăo (API - Aplication Programming Interface) como muitos desinformados pensam. 2) API é uma interface de programaçăo, é através das API's 3D que os jogos fazem as chamadas aos recursos de hardware oferecidos pelos processadores gráficos. 3) Há tręs tipos de API's usadas mais comumente pelas softwarehouses para fazerem a programaçăo 3D de jogos (há outras, mas năo usadas em jogos): Open GL, Direct 3D, e Glide. A Open GL é a que oferece mais recursos aos programadores, proporcionando também maior facilidade de programaçăo, esta API foi criada pela gigante Silicon Graphics e foi recentemente licenciada pela Microsoft. Um exemplo de jogo que usa esta API é o Quake II. A Direct3D é a API mais utilizada atualmente por jogos. Apesar de năo ser a API mais poderosa (posto ocupado pela OpenGL), ela fornece recursos bastante avançados para a criaçăo de jogos, e novas funcionalidades săo apresentadas a cada versăo lançada pela Microsoft. Como exemplo, pode-se citar a inclusăo de "Environment Mapped Bump Mapping" do DirectX 6, ou entăo de aceleraçăo por hardware de Transforms and Lighting, na versăo 7. No caso da OpenGL, novas características podem ser adicionadas sem a necessidade de uma nova versăo ser lançada, utilizando seu recurso de extensőes. A qualidade de imagem final é mais dependente dos recursos oferecidos pela placa de vídeo do que pela API em si, e atualmente é considerado que a melhor qualidade de imagem em aplicaçőes 3D como jogos é alcançada pelos chips da Matrox (série G400) e da NVIDIA (GeForce 256). A GLIDE é uma API desenvolvida pela 3dfx que fornece instruçőes de baixo nível para a sua arquitetura "Voodoo". Assim, ela năo é facilmente utilizada por outros chips, acarretando em uma queda de performance devido ŕs diferenças de arquitetura, e também ela acaba por refletir as limitaçőes da série Voodoo (até a 3). Recentemente a 3dfx liberou o código fonte da API além de especificaçőes de baixo nível para suas placas atuais, declarando que irá passar a concentrar os esforços no desenvolvimento de drivers para Direct 3D e OpenGL. Enquanto isso é uma boa notícia para plataformas năo tăo bem suportadas como o Windows (por exemplo Linux e FreeBSD), ela mostra que essa API está nos seus últimos dias. Muito provavelmente uma manobra desse tipo mostra que a próxima geraçăo das placas Voodoo (com o novo chip VSA-100) apresenta uma nova arquitetura, incompatível com as antigas, tornando a utilizaçăo da GLIDE por essas novas placas tăo complicada como para as placas concorrentes atuais. 4) Ao escolher uma placa 3D vocę deve verificar entăo quais săo as API's que esta placa suporta, como é de se esperar praticamente todas as placas 3D possuem suporte ŕ API Direct 3D, grande parte, além de suportar Direct 3D também suporta Open GL, outras suportam ainda Glide. Pelo que vimos no item 3 năo devemos dar importância ŕ presença de suporte ŕ API Glide, mas é fundamental que tenha suporte a D3D e a OpenGL, D3D porque é a API da Microsoft e a de 99,9% dos jogos, e OpenGL porque é a API usada por aplicativos 3D profissionais e por alguns jogos como Quake. 5) Ao lado da placa 3D é de fundamental importância que tenhamos um processador central potente em operaçőes de ponto flutuante (as instruçőes 3D Now! - do K6-II - nada mais săo do que um tipo específico de instruçőes de ponto flutuante para ser utilizado em jogos e outros aplicativos 3D), pois cabe ŕ CPU o cálculo do posicionamento de todos os vértices dos triângulos que formam a imagem (claro! é a CPU que calcula a posiçăo relativa de tudo a ser mostrado no monitor). Isto é feito através de um pesado cálculo tridimensional e, depois recalculados e posicionados em um plano (2D) afinal a tela do seu monitor somente pode apresentar imagens em duas dimensőes, quem conhece cálculo entende a complexidade dos cálculos que estou falando. Este "rascunho" de imagem é entăo enviado para o placa de vídeo 3D, cabe ao processador 3D aplicar a estes vértices a construçăo dos triângulos e posterior renderizaçăo da imagem com a texturizaçăo e todos os demais efeitos 3D suportados. Caso o processador gráfico năo suporte um efeito específico, dependendo do efeito, este poderá ser um efeito que a CPU possa emular, esta emulaçăo năo somente consome mais CPU como acaba tendo um resultado bastante inferior ŕquele que seria de se esperar do chip gráfico. Algumas placas atualmente apresentam a capacidade de liberar a CPU desses pesados cálculos geométricos, como é o caso dos chips geForce 256 da NVIDIA e do Savage 2000 da S3. Dessa maneira, há a possibilidade de obter melhor desempenho em jogos com CPU's mais lentas. Mas há também um grande aumento no tráfego de informaçőes entre a CPU e a placa de vídeo devido ŕ presença dos dados para esse cálculos, sendo essencial a utilizaçăo da interface AGP para isso.
6) Continuando com a interdependęncia entre processador e CPU, devemos, ao comprar uma placa gráfica, procurar uma que tenha boa escalabilidade, ou seja, que se desempenhe bem com processadores mais potentes. Como vimos no tópico anterior, o processador 3D depende dos dados fornecidos pela CPU, assim, numa placa 3D lenta, pode ocorrer de a CPU fornecer os dados para o processador gráfico e, enquanto este renderiza a imagem, a CPU finaliza os cálculos para o quadro seguinte, mas năo pode entregar ŕ placa 3D porque esta ainda năo acabou de trabalhar com o quadro anterior, desta forma a CPU fica "parada", esperando até que o processador gráfico possa receber os dados. Imaginemos agora o contrário, um velocíssimo chip gráfico operando com uma CPU que năo é capaz de fornecer os dados na velocidade com que ele pode operar. Se vc tiver uma veloz placa 3D é possível que ela receba os dados da CPU, renderize a imagem, faça a transformaçăo para o sinal analógico VGA e a imagem seja apresentada na tela e o processador gráfico fique entăo "parado", apenas esperando os dados do novo quadro serem enviados pela CPU, ou seja, aqui foi o processador gráfico que acabou seu trabalho primeiro e a CPU năo é capaz de oferecer dados em velocidade suficiente para explorar todo seu potencial. Este é o exemplo de um chip gráfico escalável. Se vc tem uma placa de vídeo com um chip gráfico altamente escalável, ao fazer o upgrade da sua CPU, de um Pentium 200 para um PII 300, por ex., vc vai ganhar em taxa de quadros (FPS), pois a placa de vídeo năo será gargalo ao desempenho. No primeiro caso foi citado um exemplo de placa de vídeo năo escalável, naquele caso o upgrade de CPU pouco ou nada acrescentaria em termos de frame rate. 7) Outra bobagem comumente repetida por leigos é: "coloquei uma placa de vídeo tăo rápida que está difícil de jogar de tăo veloz que o jogo ficou". Isto năo existe! Essas pessoas confundem um maior frame rate com uma maior velocidade de andamento do jogo. Todos os jogos atuais tęm seu andamento dado pelo real time clock, e năo pela velocidade do hardware. Isto se fez necessário uma vez que um jogo programado para um 386 tinha a sua jogabilidade inviabilizada em um 486 (eu mesmo tenho um Pac-Man de utilizaçăo impossível em um Pentium), e năo só isto os jogos em rede seriam impossíveis, uma vez que, num jogo de corrida de carros, por exemplo, ganharia aquele que tivesse o computador mais veloz. Assim, desde que TODOS os jogos 3D possuem seu andamento balizado pelo real time clock os jogos definitivamente NĂO ficam mais rápidos por vc estar usando um hardware mais veloz, o que acontece é uma maior fluidez de imagens que, pelo contrário, até facilita o controle. Imaginemos um jogo de corrida em que o veículo pilotado pelo jogador está se deslocando na velocidade de 100 m/s, imaginemos que o seu hardware esteja gerando imagens numa proporçăo de 50 fps, assim, a cada frame o veículo será apresentado com um deslocamento de 2m, em média, em relaçăo ŕ frame anterior, ao final de um segundo terăo sido apresentadas 50 frames e o veículo terá se deslocado os 100m. Se vc rodar este mesmo jogo em um hardware 5 vezes mais lento este hardware terá condiçőes de apresentar apenas 10 fps, mas como o andamento do jogo é controlado pelo real time clock, cada frame irá apresentar um deslocamento médio do veículo de 10 m em relaçăo ŕ frame anterior, mas ao final de um segundo o veículo terá se deslocado exatamente os mesmos 100 metros que se deslocou no hardware mais rápido, apenas com uma menor fluidez de imagens já que com apenas 10 fps a movimentaçăo fica semelhante ŕqueles filmes de cinema mudo e com 50 fps a fluidez da imagem assemelha-se ŕs de um cinema moderno (60 fps). É bom lembrar que com um fps de 20 já se tęm uma boa fluidez e com 30 já se torna quase impossível percebermos alguma falta de continuidade. Portanto, tudo é ilusăo sua, o andamento de um jogo năo fica mais rápido por usar um hardware mais veloz, nem a jogabilidade fica prejudicada, pelo contrário, já que com um maior frame rate vc acompanha mais amiúde o desenrolar do jogo, imaginemos no caso da nave que se desloca a 100 m/s se vc usasse um hardware que te desse um fps de 5 apenas, a cada frame vc estaria 20 metros adiante da anterior, um obstáculo pode aparecer repentinamente e vc nem perceber, já com um fps de 50 a nave estaria apenas 2 metros a frente da anterior, dando maiores possibilidade de visualizaçăo do obstáculo. É muito difícil atualmente chegar a uma decisăo sobre "qual a placa de vídeo 3D mais rápida", já que isto depende de diversos fatores, desde o tipo de jogos que văo ser utilizados (e a API gráfica utilizada por eles) até a maturidade dos drivers disponíveis para a placa. A melhor recomendaçăo nesse caso é visitar a maior quantidade de sites sobre hardware possível, e comparar os diversos testes feitos com as diversas placas. Existem diversos links na seçăo e "Links" aqui da Hard & Cia. Para finalizar, a cada dia que passa a importância da interface AGP (principalmente nos modos mais rápidos, como o 2x e principalmente mais recentemente o 4x) cresce. Com o aparecimento de jogos que utilizam cada vez mais e maiores texturas, como Quake III e o Unreal Tournament, além da nova geraçăo de placas com capacidade de processar Transforms & Lighting, a velocidade de comunicaçăo entre os chips gráficos e o resto do sistema (CPU, memórias) está se tornando um gargalo muito grande. Quando mais largura de banda estiver disponível para a placa de vídeo, melhor serăo os resultados nas aplicaçőes 3D. A importância do número de polígonos Porque é tăo necessário o aumento no número de polígonos para melhorar os efeitos 3D dos jogos? Porque alguns chamam os efeitos nas texturas, como Environment Bump Mapping de enganaçăo e o aumento de número de polígonos como "realidade"? Năo é tudo "enganaçăo"? Afinal as telas dos monitores tęm apenas duas dimensőes. Vocę também enxerga basicamente em 2D, afinal vocę năo tem vários olhos que saltam do rosto posicionando-se em diversos ângulos diferentes para que vocę tenha uma real noçăo tridimensional do objeto que está sendo visto. Isto é parcialmente contornado pela visăo estereoscópica que temos, que vę os objetos sob dois ângulos ligeiramente diferentes. É por isto que muitas vezes somos enganados por truques de ilusăo de ótica. O que os efeitos 3d presentes nos jogos procuram fazer é proporcionar, através da tela bidimensional de um monitor, a mesma sensaçăo de profundidade e, portanto, tridimensionalidade que nós temos ao usar nossa visăo estereoscópica no mundo real, enfim, uma ilusăo de ótica. Para tal o aumento do número de polígonos é importante, como veremos nos parágrafos seguintes. Para tentar alcançar seu objetivo vários recursos săo usados e todo o mundo virtual de um jogo 3D passa-se de fato em um espaço tridimensional, todos os objetos criados săo relaçőes matemáticas ( sim, relaçőes e năo funçőes porque um ponto em um dos planos pode ter mais do que uma imagem nos outros planos) . Da mesma forma que um jogo 2d é criado baseando-se apenas em ordenada e abcissa, na verdade resume-se ao primeiro quadrante, o jogo 3D é feito mediante cálculo com 3 eixos. A tal funçăo de transformaçăo presente nos modernos chipsets 3D é justamente o trabalho de transformar os polígonos do espaço 3D em polígonos posicionados em espaço bidimensional, de somente ordenada e abcissa. Afinal, as telas dos monitores săo bidimensionais, nos chipsets das antigas geraçőes quem fazia este trabalho de transformaçăo era o processador central. Mas aí vem a pergunta: por que usar cálculo em 3d entăo? Porque năo faz-se tudo em um plano e, como conseqüęncia, os jogos ficariam muito mais rápidos? Simplesmente porque precisa-se da criaçăo dos objetos no espaço 3D para saber como o objeto será visto por vocę em um determinado ângulo. Ou seja, como os polígonos deverăo aparecer para vocę em 2D. Neste momento vocę está vendo a tela do seu monitor, se vocę chegar o rosto apenas um pouco para o lado vocę verá parte da lateral do seu monitor. Mesmo que seu monitor seja um cubo perfeito o que vocę está de fato vendo săo dois trapezóides , um bem maior, que é onde está a tela, e um outro de pequena altura, que é a parte lateral do monitor. Observe que o monitor existe no espaço 3D, mas o que vocę vę de fato săo dois polígonos bidimensionais, e, no caso da vista da lateral nem a visăo estereoscópica está ajudando porque somente um olho está de fato vendo esta parte da lateral. Mas como vocę conhece de fato o objeto, já o viu sob inúmeros ângulos vocę tem uma noçăo exata da profundidade. O que os jogos 3D e a transformaçăo para 2d fazem é aproximadamente isto, criar objetos em 3d e depois transformar para 2D formando esta imagem com polígonos feitos na mais exata proporçăo possível em relaçăo ao ponto de vista do observador, que está previsivelmente ŕ frente do monitor. Buscando dar a mesma sensaçăo de profundidade que se tem em um mundo real. A figura abaixo ilustra este processo, observe que o olho do observador está enxergando o cubo sob um determinado ponto de vista, no canto direito mostra como deverá ser visto o cubo em 2D pelo observador (como se fosse desenhado em uma folha de papel) mas mantendo a perspectiva tridimensional. Observe que o polígono V1, V2, V3, V4 nada mais é que um trapézio 2D, outro trapézio é o polígono V1, V4, V5, V6 este com o lado menor para baixo ( V5, V6 ). Mas que no contexto săo faces do cubo desenhados mediante uma perspectiva tridimensional. Porque entăo com mais polígonos é melhor? No caso de superfícies lisas, como a do citado monitor, năo há muitos contornos, mas imaginem um rosto humano, a quantidade de polígonos para se reproduzir razoavelmente, em um mundo matemático, este rosto é enorme (para ser absolutamente real haveria necessidade de um número infinito de polígonos com arestas tendendo a zero). Com as atuais placas muitas vezes as cabeças humanas năo passam de um paralelepípedo, com a face completamente chata. Para contornar tal inconveniente produziram-se técnicas de recobrir a face com texturas cada vez mais sofisticadas. Assim, ao se olhar um personagem de frente vocę vę sua boca e nariz mas nunca as orelhas. ao olhar de lado vocę vę uma orelha, mas năo vę o relevo do nariz, e assim por diante. Para procurar dar mais realismo as texturas foram melhorando e o "environment bump mapping" é uma destas técnicas. Ou seja vendo este rosto de frente vocę vę sempre um nariz simplesmente desenhado e pintado sobre uma superfície plana, năo há sombra dele năo interessa onde esteja a fonte luminosa. Com um número maior de polígonos năo só o nariz como uma eventual verruga no rosto "realmente" existirăo. Isso significa que năo terá que existir efeito de textura nenhum no nariz, para "fingir" que tem um nariz ali, a mesma textura usada no rosto será também a do nariz. Ao mudar ligeiramente o ângulo de visăo vocę verá esta nariz sob outro ângulo e haverá sombra dele incidindo de forma diferente sobre o rosto. Ao olhar o personagem de frente vocę verá as orelhas e saberá inclusive se elas săo de abano ou năo. Ao olhar para uma porta no cenário ela năo será apenas uma pintura sobre a superfície plana da parede, existirá "de fato" uma maçaneta e uma moldura da porta, com relevo, mudando a forma como é refletida a luz a cada pequeno movimento que vocę faz, é isto que te dá a sensaçăo 3d mais próxima da realidade. Enfim, ao se transformar para 2d uma imagem com um número maior de polígonos um número muito maior de detalhes das formas e das sombras serăo vistos, dando uma sensaçăo muito maior de realidade. Aurélio e Marcelo Vanzin Hard&Cia - 2001 |
Biblioteca / Conteúdo preservado