Nova API gráfica, novos termos chiques que pouca gente entende. Sente aí que nós vamos explicar o que eles significam e por que são importantes para a sua experiência com games de PC.

Bem quando você acha que já entende todos os jargões dos gráficos 3D, novos termos e tecnologias inundam o mercado. 

A AMD tem distribuído agressivamente GPUs com DirectX 11 em todas as faixas de preço, enquanto as placas baseadas nas GTX 470 e 480 da nVidia finalmente estão sendo disponibilizadas. Ao mesmo tempo, as vendas do Windows 7 têm sido extraordinárias, configurando-o como o sistema operacional da Microsoft de vendas mais rápidas na história. Considerando que o Win 7 é o que o Vista deveria ter sido, também pode-se dizer que o DirectX 11 é o que o DirectX 10 deveria ter sido. 

Quando chegaram os jogos com DirectX 10, a nova API deu aos jogadores um upgrade mínimo nos visuais, às custas de uma enorme queda de performance. Uma coisa não compensava a outra. Por outro lado, o DX11 traz aos jogadores algumas potenciais melhorias de gráficos ao mesmo tempo em que promete melhor performance – mesmo para quem não tem uma GPU DirectX 11.

Junto dos gráficos melhorados, as APIs chegam com mais alguns termos: tessellation, SSAO, HDAO, e postprocessing. Nós vamos agora dar uma olhada nesses termos, para ver o que eles realmente trazem de bom, e vamos também discutir o impacto em performance de usar GPUs modernas da AMD e nVidia.

Tessellation

Tessellation (tesselação) – o termo em inglês ainda é bastante usado, mesmo em português – essencialmente cria algo a partir do nada. Ou melhor, cria mais a partir de menos. A tesselação por hardware, que é exigida pelo DirectX 11, significa que a GPU pode gerar mais trângulos a partir da geometria existente usando o motor de tesselação por hardware que faz parte do chip gráfico. Gerar mais triângulos para uma superfície plana não faz sentido, já que um quadrado plano é igual com dois ou dois milhões de triângulos. O que é interessante é gerar triângulos extras para um modelo 3D. Vamos dar uma olhada em um exemplo simples, uma calçada de pedra do kit de desenvolvimento do DirectX da Microsoft.

Bump Mapping



Displacement Mapping

O engine de tesselação do DX11 é capaz de gerar muitos triângulos a partir da geometria existente, como visto na tela de baixo à esquerda, para modelar objetos realmente 3D. 

Na tela de cima à direita, nós vemos uma superfície plana que parece mais realista devido à aplicação de um bump map. Bump maps modelam o modo como a luz ilumina um objeto com relevo, e isso faz com que ele, apesar de plano, pareça ter profundidade. Se você alterasse o ângulo de câmera para ficar rente ao chão naquela imagem, conseguiria ver que o chão é totalmente plano. Se a tessellation for aplicada, as pedras são realmente 3D, como visto na tela de baixo à direita. 

A tesselação na imagem do chão de pedra é aplicada usando uma técnica chamada displacement mapping. Um displacement map é apenas uma textura especial em tons de cinza na qual os diferentes tons definem o quanto a geometria é alterada. 

Calçadas de pedra são legais, mas veremos a diferença disso nos jogos? Vamos dar uma olhada no recentemente lançado Metro 2033 (abaixo). A imagem de cima é do jogo sem a tesselação ativada; na de baixo, o efeito está ativo. Observe como o objeto está mais arredondado na segunda imagem. O efeito é sutil neste exemplo, mas válido: este é o início do fim das cabeças poligonais. A tesselação significa que as cabeças dos personagens ficarão cada vez mais suavemente arredondadas. 

Sem tesselação



Com tesselação


Nesta tela de Metro 2033, nota-se como a tesselação torna possível arredondar os vértices

Outro exemplo de tesselação, do DirectX SDK, mostra uma técnica chamada superfícies de subdivisão (abaixo). A ideia principal é começar com um pequeno conjunto de polígonos, então dividi-los de forma que faça sentido para o objeto em questão. 

Outros usos para a tesselação

O efeito é ótimo para criar cabeças mais arredondadas e calçadas de pedra com relevo realista, mas não só para isso. Pense em água, por exemplo. Em vez de usar pixel shaders para criar água mais bonita, é só adicionar mais triângulos. Muito mais triângulos, como no exemplo da nVidia Island. 

Sem tesselação



Com tesselação


A tesselação faz a água parecer mais real no demo nVidia Island. 

No novo jogo de corrida DiRT 2, os carros que passam por poças d’água na versão do jogo para DirectX 11 criarão ondas, usando a tesselação por hardware para gerar centenas de triângulos novos para compor o efeito. Na versão DX9, nota-se spray de água, mas nenhuma onda, e a poça d’água pode ser composta por apenas dois triângulos.

Sem tesselação


Com tesselação


O futuro da tesselação

A técnica de tesselação oferece a promessa de objetos 3D melhores e mais realistas, mas não faz milagre. Assim como com qualquer outra técnica nova, os desenvolvedores precisam ser inteligentes quanto à sua implementação. É fácil usar a tesselação para criar coisas com a aparência e comportamento errados. Além disso, há a questão da performance. Mesmo nos melhores hardwares, se o efeito da tesselação for utilizado em excesso, a performance vai cair, e muito. Os desenvolvedores provavelmente usarão a tecnologia como parte de sofisticadas cenas com muitos detalhes em poucos objetos ou personagens importantes, enquanto objetos mais distantes usarão o efeito em menor escala, ou nem usarão. 

Transparency Antialiasing deixa de ser grande coisa

Antialiasing de melhor qualidade com texturas transparentes foi muito alardeada tanto pela nVidia quanto pela AMD há poucos anos. A nVidia chamava de antialiasing de transparências, enquanto a AMD chamava de antialiasing adaptativo. É um clássico exemplo de tecnologia que melhorou os gráficos por um tempo, mas não é realmente considerada uma técnica de ponta atualmente.

O problema é o modo como muitos jogos lidam com a transparência. Objetos transparentes são polígonos – mapas de textura aplicados – nos quais uma parte da textura é transparente. Cercas de arame, por exemplo.

O antialiasing adaptativo em sua essência suaviza as bordas da textura que encontram a transparência. É um AA dentro do polígono. 

Sem antialiasing de transparência


Com antialiasing de transparência


Antialiasing de transparência (ou adaptativo) funciona bem quando é suportado pelo jogo, mas a tesselação pode proporcionar um substituto universal

Para que o antialiasing de transparência funcione, o jogo precisa fazer teste para alpha (a parte transparente), mas também precisa desabilitar o alpha blend (a textura transparente se combinando com o plano de fundo para criar uma nova cor – algo muito usado para criar objetos translúcidos). 

A engine Source da Valve faz isso, então se você habilitar a opção nas opções gráficas, você verá o efeito, como nesta screenshot de Left 4 Dead que mostramos.

No entanto, o alpha blending e outras técnicas utilizadas impedem que esta técnica funcione. Por exemplo, habilitar o recurso não tem nenhum efeito em praticamente todos os jogos feitos com a engine Unreal. Tecnologias como a tesselação podem no fim das contas tornar obsoleto o antialiasing de transparência. Se estes galhos puderem ser com polígonos, estes polígos podem sofrer antialiasing normal, e não se torna mais necessário lidar com AA adaptativo. 

Ambient Occlusion

Alcançando o realismo através de luz e sombra

Tudo se resume a luz. Sem luz, você não enxerga. Em jogos 3D, toda luz é criada usando trapaças matemáticas – aproximações de como a luz se comportaria no mundo real. Mesmo assim, alguns dos efeitos de luz mais interessantes acontecem na sua ausência: escuridão e sombras. 

As sombras evoluíram de simples mapas de sombra – onde as sombras tinham a mesma aparência independente do ângulo – às técnicas sofisticadas dos jogos atuais.

Variações de ambient occlusion estão ficando cada vez mais populares. O ambient occlusion leva em conta o modo a luz incide sobre objetos para criar sombras, e esta propriedade de luz e sombra se modifica de acordo com a distância. Crysis foi um dos primeiros jogos a tentar uma forma de ambient occlusion, conhecido como screen space ambient occlusion (SSAO). As técnicas de SSAO tentam determinar onde um ponto de uma cena existe relativamente a outros pontos, e o efeito que a luz incidindo sobre aquele ponto tem sobre outras partes da cena. Os objetos têm propriedades refletivas, e podem refletir a luz que recebem para outras partes da cena – inclusive aquelas fora do alcance direto da fonte de luz. 

Objetos no mundo real tendem a ter rugas, sulcos, falhas e depressões que podem não estar sempre diretamente iluminadas por uma fonte de luz (o sol, por exemplo). Mas elas também não ficam totalmente no escuro, sendo iluminadas pela luz indireta que reflete de outras superfícies, inclusive do mesmo objeto. Os jogos até hoje ignoram isso, de modo que sulcos e outros tipos de relevo ficam ou completamente no escuro ou tão iluminados quanto o resto do objeto, apesar de tecnicamente não estarem expostos à luz direta. 

Outros tipos de ambient occlusion encontrados em jogos mais novos incluem high-definition ambient occlusion (HDAO) e horizon-based ambient occlusion (HBAO). Estas são variações da mesma ideia – de que o local onde um pixel existe em relação a outros pixels deve determinar o modo como a luz incide sobre ele, como ele reflete esta luz, e que tipo de luz é (direta ou refletida).

Sem ambient occlusion


Com ambient occlusion


As áreas circuladas neste exemplo do SDK do DirectX 11 mostram como o high-definition ambient occlusion (HDAO) produz detalhes mais realistas. Note a maior profundidade, linhas mais nítidas e melhores sombreados.

Acima vemos uma amostra de HDAO do kit de desenvolvimento do DirectX 11. Perceba o sombreado interno na tela de baixo, possível graças a esta técnica de ambient occlusion. É relativamente sutil, mas a cena completa tem um visual mais realista quando vista em tela cheia. 

Com o DirectX 11, uma nova técnica está emergindo, chamada contact hardening. Se você observar uma sombra no mundo real, pode perceber que ela não é igual em todo o seu comprimento. Perto do objeto (digamos, na base de um poste), a sombra é mais nítida, e à medida que se distancia, ela vai ficando mais difusa. Isso é porque a luz do ambiente ao redor vai se fundindo com a sombra. A técnica de contact hardening do DirectX 11 busca emular isso. Atualmente, o único jogo a utilizar esta técnica é STALKER: Call of Prypiat (abaixo).

Nesta amostra do SDK do DX11, vemos as sombras ficando mais difusas à distância.

Postprocessing effects

Fazendo mágica com os gráficos depois da renderização da imagem

Postprocessing é quando os efeitos são aplicados à imagem 3D depois que o frame é renderizado. O termo postprocessing (pós-processamento) vem da indústria do cinema, onde os efeitos são adicionados aos fames depois da filmagem. 

Postprocessing é realmente um termo geral para efeitos especiais que são gerados, tipicamente com programas de shader, e que não são realmente parte de uma API gráfica existente. Obviamente, a GPU em si precisa ser programável. 

A adição de efeitos em frames renderizados começou a aparecer com os jogos DX9. Vimos um aumento no uso dos efeitos de postprocessing no DX 10, e agora com o DX11. Uma grande variedade de efeitos de postprocessing é possível; de profundidade de campo de visão, distorção de calor, distorção de humidade, bokeh, blur dinâmico e granulado de filme. 

Alguns destes efeitos podem ser usados para adicionar realismo à cena. Distorção de calor sobre um fogo ou deserto é um bom exemplo disso. Outros efeitos entre estes fazem a cena ficar menos realista, porém mais cinematográfica. Alguns exemplos incluem profundidade de campo de visão, granulado de filme e bokeh. (Bokeh é o borrão que você vê em áreas fora de foco em uma fotografia – a qualidade do bokeh é inclusive um dos parâmetros de avaliação de uma boa lente de câmera fotográfica.)

Sem bokeh


Com bokeh


Em Just Cause 2, você vê efeitos bokeh quando usa uma placa nVidia.

Nós já vimos estes efeitos em filmes e na TV, mas raramente os percebemos na vida real. Os desenvolvedores de games colocam estes efeitos para fazer com que seus jogos pareçam mais com grandes filmes. Isso faz sentido em alguns jogos exagerados como Just Cause 2, que emula filmes de ação de ponta a ponta. 

O uso de bokeh ajuda a focalizar a atenção do jogador naquilo que está mais próximo. Um programa de shader bem escrito pode dar aos desenvolvedores um controle granular sobre o efeito, como podemos ver na demonstração de profundidade de campo de visão da AMD, chamada Ladybug e baixável do site de desenvolvimento da AMD. A demonstração dá ao usuário controle de uma câmera fotográfica manual. O usuário pode controlar o foco do plano de fundo à vontade através da configuração de abertura da câmera. 

O jogo Borderlands (abaixo) usa a técnica da profundidade de campo de visão para focalizar a sua atenção no que você estiver mirando com a sua arma. 

Shaders programáveis ganharam um belo empurrão com com o DX11. Antes, se um programador quisesse adicionar múltiplos efeitos a uma cena, o programa de shader ficava grande e muito pesado. Agora é possível chamar rotinas de shader de acordo com a necessidade, o que permite uma programação e uso mais eficientes dos efeitos. 

Borderlands usa o efeito de profundidade de campo de visão para focalizar o seu olho no objeto para o qual você está mirando. Na tela de cima, tudo está em foco, mas quando o jogador faz mira com a arma, na tela de baixo, o plano de fundo se desfoca. 

O impacto no desempenho

Como esses gráficos incríveis afetam a taxa de frames? 

Se configurássemos uma máquina do tempo para poucos anos atrás, poderíamos reviver a decepção geral com os primeiros jogos do DirectX 10. Os efeitos visuais trouxeram muito poucas melhorias na qualidade da imagem, enquanto o impacto na performance foi enorme. Qual o impacto destes modernos efeitos do DirectX 11? E dos efeitos de postprocessing? Obviamente, adicionar mais programas de shader vai impactar na performance, mas quanto?

Nós testamos a performance do tessellação por hardware usando o benchmark sintético Unigine Heaven 2.0 (que usa uma engine real de jogo) e STALKER: Call of Pripyat. STALKER também foi usado para testar a performance do SSAO, HBAO e HDAO.

O desempenho do motor de tesselação da nVidia GTX 480 pareceu ótimo em relação à parte da AMD em um benchmark como o Heaven, mas como podemos ver no Call of Pripyat, o impacto da tesselação nos games é menos claro. Simplesmente não há ainda jogos o bastante que façam uso pesado da tesselação por hardware, de modo que é impossível determinar qual GPU é superior. Experiências subjetivas diferem; o desempenho de Metro 2033, por exemplo, parece demonstrar uma vantagem da nVidia, embora não tenhamos números completos para demonstrá-la. Por outro lado, Alien vs. Predator foi uma experiência macia nas últimas placas tanto da nVidia quanto da AMD.

Just Cause 2 é um jogo que dá suporte a dois efeitos interessantes de pós-processamento se você estiver rodando-o numa nVidia: bokeh e simulação de água. Assim, nós testamos o desempenho do jogo na GTX 480 com os efeitos desligados, depois ligados, usando o benchmark Concrete Jungle, incluso no próprio jogo. 

Ligar os efeitos causou, sim, uma queda na performance. Mas esta queda é de alguns poucos pontos percentuais; nada perto das quedas de 75 ou 80 por cento que vimos na transição do DX9 para o DX10. 

Conclusões finais

No passado, comparações entre performance e recursos visuais envolviam antialiasing e anisotropic filtering. O DirectX 10 trouxe alguns truques novos para o arsenal dos desenvolvedores, mas veio com uma punição severa aos frame rates. Os novos recursos do DirectX 11 podem até afetar o desempenho, mas a nova geração de placas de vídeo permite que se tenha uma fidelidade visual muito maior, mantendo um desempenho razoável. 

Leva tempo para os desenvolvedores se aproveitarem dos novos recursos. A boa notícia é que o entendimento dos GPUs prontos para DirectX 11 foi um dos mais rápidos da história recente. Nós agora estamos começando a ver um aumento no uso de capacidades que foram introduzidas no DX9 – finalmente. Por exemplo, é difícil achar um jogo da geração atual que não tire proveito dos efeitos de postprocessing possíveis graças à introdução dos shaders programáveis. Os desenvolvedores continuam experimentando com postprocessing, como podemos ver em Just Cause 2. E recursos como granulado de filme e profundidade de campo de visão já viraram lugar-comum. Novos jogos trazem novos efeitos, como emulação de filtros de core usados em filmes e programas de TV com grande orçamento.

Boas ferramentas serão a chave para vermos novos recursos decolarem. Uma das razões do postprocessing ter se tornado tão comum é a similaridade conceitual das ferramentas desenvolvidas pelos desenvolvedores com filtros de Photoshop, que permitem a artistas implementá-los facilmente nos prazos da arte. Ainda vai levar um tempo para que ferramentas como estas estejam disponíveis para os novos hardwares compatíveis com DX11.

E aí temos a questão da multiplataforma. As maiores publishers de games são exitantes em promover os recursos avançados exclusivos de PC em jogos com grande orçamento e destinados a múltiplas plataformas, incluindo consoles que não têm suporte a tesselação ou outros recursos. O PC tem voltado lentamente à antiga glória depois de uma período de ostracismo, mas alocar recursos de desenvolvimento especialmente para desenvolver recursos exclusivos para os PCs mais modernos ainda não faz parte da lista de prioridades no desenvolvimento da maioria dos jogos. Ainda assim, vemos alguns jogos que contrariam a regra e tiram proveito total das novas possibilidades gráficas, como a série STALKER, Cryostasis, Metro 2033 e até DiRT 2, um jogo "de console".

Então, quando você colocar as mãos em uma das novas placas com suporte a DirectX 11, experimente as novidades visuais. Seus jogos podem ficar mais bonitos que nunca. 


Nossa máquina de benchmark é um Core i7-975 Extreme Edition 3.33GHz em uma placa-mãe Asus P6X58D Premium, com 6GB de DDR3/1333 e uma fonte Corsair 850TX. O sistema operacional é o Windows 7 Ultimate 64-bits. Os benchmarks foram rodados a 1920×1200, com AA desabilitado. Para Call of Pripyat, a qualidade do SSAO foi mantida no high.


Testes rodados no benchmark Concrete Jungle, do Just Cause 2, com todas as outras configurações gráficas no máximo e em 1920×1200.

Maximum PC traz a você as últimas notícias, reviews e tutoriais para PC.