Retina Desgastada
Idéias, opiniões e murmúrios sobre os jogos eletrônicos
Comunidade do SteamMastodonCanal no YouTubeInstagram

23 de maio de 2022

Entendendo as Opções Gráficas de Jogos

crysis-remastered

(publicado originalmente no Código Fonte)

Hoje em dia é comum que os ajustes gráficos de jogos de PC sejam entregues de mão beijada para o jogador. Às vezes, o próprio jogo detecta as configurações do sistema e ajusta as opções automaticamente. Muitas vezes, as opções são bastante simples de entender, como Ultra, High, Medium e Low, ocultando todos os detalhes técnicos de quem só deseja começar sua aventura. Quando nada disso acontece, os próprios fabricantes das placas de vídeo, AMD e NVIDIA, oferecem ferramentas de otimização que só exigem um clique.

Entretanto, nenhum de nós seria desenvolvedor se simplesmente aceitássemos o que nos é oferecido sem aquela vontade de aprender o que acontece nos bastidores. Conhecimento é nossa meta. Mesmo que nunca coloquemos a mão na massa para criar nossos próprios jogos, existe a curiosidade de saber exatamente o que significa cada uma daquelas opções: Framerate, Anti- Aliasing, Pós-Processamento, Filtragem Anisotrópica.

Nesse artigo, tentaremos explicar de forma sucinta e didática cada um desses elementos, para que você tomar suas próprias decisões de qualidade ou performance. Não é a abordagem de um desenvolvedor de jogos ou de um engenheiro de gráficos, mas uma tradução para entusiastas que desejam ir além das configurações automáticas.

Básico do Básico das Opções Gráficas

Nem todo jogo eletrônico permite ajustes profundos na forma como ele irá lidar com gráficos no seu PC. Entretanto, até mesmo o mais modestos dos jogos permitirá configurar esses elementos ou será afetado por eles de alguma forma. Apresentaremos também alguns conceitos fundamentais para você entender como funciona todo o resto.

Resolução

full-hd

Não tem como ser mais básico do que isso e, se você trabalha com desenvolvimento web, resolução de monitores e dispositivos é uma preocupação constante. Em termos simples, resolução é a quantidade de pixels que sua tela consegue exibir dentro de suas dimensões físicas, na horizontal e na vertical. Uma resolução de 1920×1080, por exemplo, conseguirá exibir 1920 pixels por linha e 1080 por coluna. Temos um artigo mais amplo sobre esse conceito disponível no Código Fonte. A maioria dos jogos, por padrão, irá rodar na resolução do seu monitor.

Upscaling e Downsampling

Entretanto, alguns títulos irão oferecer a opção de "resolução de renderização". Esse recurso não chega a ser uma novidade para os jogadores mais antigos. Muitas vezes, no passado, era possível executar um jogo com uma resolução mais baixa do que a resolução nativa do monitor, o que oferecia um ganho de performance. Esse processo hoje recebe o nome de "upscaling". O resultado é que o jogo irá "esticar" os pixels, visualmente não é muito bonito, mas muitas vezes era e continua sendo o único caminho para rodar um título graficamente mais robusto.

O processo inverso chama-se "downsampling" e consiste em rodar o jogo em uma resolução superior àquela do próprio monitor. O gráfico será então "compactado" e terá uma aparência ainda melhor do que o original, porém a um custo elevado de performance.

assassins-creed-iv-downsampling-01

Assassin’s Creed IV com downsampling aplicado.

FPS

Frames por segundo ou FPS é quantidade de imagens geradas por segundo na sua tela para dar a sensação de animação. Quanto maior o FPS, mais fluido e natural irá parecer aos olhos, porém gerar uma grande quantidade de frames a cada segundo afeta a performance. A maioria dos jogos não tem como configurar esse valor, até porque ele depende de todos os outros fatores que podem interferir na qualidade de cada uma dessas imagens geradas. Na verdade, a maioria dos jogos sequer tem uma ferramenta nativa para computar quantos frames estão sendo gerados por segundo e você poderá precisar de uma ferramenta externa para aferir isso.

Apesar de não ser diretamente controlável, esse conceito será importante para sua experiência global. Um jogo rodando a 60 FPS é extremamente fluido ao olhar, com 30 FPS temos um resultado aceitável, porém já existem configurações poderosas que permitem 120 FPS ou superior. Abaixo de 30, é perceptível que o jogo está dando as famosas "travadinhas".

Vertical Sync

Não se deve confundir FPS com "refresh rate", a taxa de atualização do seu monitor. Esse valor indica quantas vezes sua tela irá atualizar o que está recebendo por segundo. Portanto, é importante que os valores sejam equivalentes: se o jogo entregar mais frames por segundo do que o número de atualizações que o monitor exibe, teremos distorções na tela. Para evitar essa distorção, que lembra um "rasgo" na imagem, a recomendação é ativar o recurso do Vertical Sync, ou V-Sync.

no-vsync

"Rasgo" de sincronização em Enslaved: Odyssey to the West

Entretanto, V-Sync pode provocar atrasos na resposta dos seus comandos, se o FPS for muito maior que a taxa de atualização do monitor, assim como pode provocar travamentos na imagem, se o FPS for muito menor que a taxa de atualização do monitor.

G-sync e FreeSync

Para resolver os problemas gerados pelo Vertical Sync, fabricantes de hardware desenvolveram tecnologias mais avançadas, como G-Sync e FreeSync. Essas tecnologias permitem que monitores e placas de vídeo sincronizem automaticamente seus valores, sem que você precise se preocupar com isso. Infelizmente, é necessário que sua GPU e seu monitor ofereçam suporte à mesma tecnologia, então você vai precisar prestar atenção na hora da compra ou do upgrade se quiser usufruir desses avanços.

Anti-Aliasing

A menor distância entre dois pontos é uma linha. No caso de telas digitais, essa linha é uma sucessão de pixels conectados. Se essa linha estiver na horizontal ou na vertical, a ligação entre os pixels é quase imperceptível. Porém, se essa linha estiver na diagonal, teremos um efeito de serrilhamento, como se os pixels subissem uma escada. Esse efeito é chamado de aliasing e estraga a experiência visual do jogador. Esse problema era insolúvel nos jogos antigos, de baixíssima resolução: se cada pixel é um quadrado visível a olho nu na tela, é evidente que não será possível fazer uma linha diagonal agradável ao olhar. Esse problema será irrelevante quando atingirmos resoluções absurdas. Porém, nesse meio do caminho, o aliasing tem e precisa de solução.

anti-aliasing

A principal técnica utilizada para compensar esse serrilhamento é criar pixels intermediários entre duas superfícies que contrastam. Se você pretende exibir seu personagem, vestido de negro, contra um fundo claro, por exemplo, o ideal é introduzir pixels cinzentos no limiar de sua silhueta. Quanto mais pixels disponíveis para essa transição, melhor o resultado, porém é necessário equilibrar desfoque e contraste para se atingir o anti-aliasing correto. Existem diversos métodos para se atingir esse objetivo:

Supersampling (SSAA)

Consiste em ampliar artificialmente a resolução dos frames gerados e depois reduzir. Uma vez que, quanto mais pixels disponíveis, melhor fica a transição, o Supersampling dobra a quantidade deles aumentando a resolução, chegando em valores intermediários de tons e depois reduzindo novamente em tempo real. Se você entendeu o conceito de upscaling como vimos acima deve ter percebido que o SSAA é um método que consome bastante processamento da GPU para chegar no seu resultado.

Multisampling (MSAA)

O Multisampling é uma forma de Supersampling menos intensa em termos de performance. Por anos, foi a opção padrão dos jogos eletrônicos e o principal gargalo para as GPUs. Os usuários só tinham duas opções: jogos sem anti-aliasing e, consequentemente, serrilhados ou jogos com MSAA, consumindo processamento gráfico, mas satisfatórios.

Fast Approximate (FXAA)

O Fast Approximate, como o nome já diz, é rápido e aproximado. Ao invés de analisar os limites dos modelos 3D em busca de transições suaves de contraste, ele é um efeito aplicado no pós-processamento, ou seja, depois que a imagem foi gerada pela primeira vez, avaliando o frame de uma forma genérica. É um método menos intenso que o MSAA e o SSAA, que resulta em melhorias significativas de performance, porém entregando resultados ligeiramente inferiores. É o padrão dos jogos atuais.

Morphological (MLAA)

É a versão da AMD para o FXAA, também funcionando no pós-processamento, analisando a imagem geral em busca de padrões e distorções e corrigindo o serrilhamento. É mais preciso que o FXAA ao avaliar porções menores da imagem de cada vez.

Enhanced Subpixel Morphological (SMAA)

Esse método é mais recente e combina os conceitos do MSAA e do FXAA simultaneamente, gerando resultados visualmente superiores, porém com uma sobrecarga aceitável de performance.

Temporal (TAA ou TXAA)

Uma das tecnologias mais recentes, desenvolvida pela NVIDIA, permite a avaliação temporal da imagem. Isso significa que o recurso compara o frame anterior e o frame atual em busca de dados que possam informar sobre as bordas dos elementos e consertar a transição a partir daí. Pode ser um método bastante intensivo, principalmente em jogos de ação em que há grandes mudanças entre os frames.

Deep Learning Super-Sampling (DLSS)

dlss

Essa é a tecnologia de ponta introduzida pela NVIDIA em seus modelos mais sofisticados de GPU. Na prática é uma combinação do Supersampling com o TAA, utilizando Aprendizado Profundo para intuir informações que não fazem parte da renderização original. Com mais informações, é possível gerar uma transição de bordas de elementos ainda mais suave. O resultado é o que há de mais avançado em experiência visual no momento, ainda que o custo de processamento seja elevado. A NVIDIA alega que o método é menos exigente que o TAA, por outro lado ele é exclusivo de modelos que já são naturalmente mais potentes.

Texturas

Não importa o número de polígonos de um modelo 3D. Sem a textura aplicada por cima do modelo, teríamos, no máximo, manequins muito precisos na tela. É a textura que implementa o "realismo" ao jogo, inclusive em títulos que não são realistas. A textura é uma imagem 2D que envelopa o modelo, mas também contém informações sobre como ela deve ser representada na superfície.

Sendo uma imagem, texturas de maior resolução oferecem melhores resultados, mas também são arquivos mais pesados que precisam ser processados. Modders costumam oferecer texturas alternativas ou de maior qualidade para jogos antigos e geralmente são arquivos de vários gigabytes. O processo de aplicá-las na superfície varia muito pouco, então o único peso na performance, entre texturas de baixa ou de alta qualidade é a memória ocupada.

Compare as duas capturas do jogo Postal 4: No Regerts, durante seu período de Acesso Antecipado:

postal-4-bad

Textura de baixa qualidade

postal-4-less-bad

Textura de alta qualidade

Tendo memória gráfica ou de sistema disponível, deve-se optar sempre pela melhor qualidade para uma melhor experiência. Se você já viu texturas que parecem piscar ou que primeiro carregam uma versão inferior antes de trocar de aparência diante de seus olhos, você tem em mãos um problema de memória ou um jogo mal programado.

Filtragem bilinear ou trilinear

A correspondência entre um pixel no modelo 3D e um pixel na textura (chamado de texel) não é direta, até porque o modelo pode ser visto de diferentes distâncias em diferentes ângulos. Para fazer essa correspondência, é necessário acontecer um processo de filtragem, baseado na amostragem de texels próximos. A filtragem bilinear é o método mais básico e, consequentemente, de menor demanda para o processamento.

Entretanto, o modelo bilinear falha quando estamos falando de texturas de longa distância. Não há sentido para a performance utilizar uma textura de altíssima qualidade para um objeto ou cenário que estamos vendo de longe. É utilizado um processo chamado de mipmapping que utiliza uma textura de baixa qualidade para esses momentos. Porém, a filtragem bilinear não consegue entregar uma transição suave entre a textura normal (próxima do nosso campo de visão) e o mipmapping usado para longe. Portanto, é recomendado o modelo de amostragem trilinear.

Filtragem anisotrópica

A filtragem anisotrópica é o método que resolve outro problema gerado à distância: desfoque em ângulos de visão oblíquos. É um conceito bem mais complexo do que cabe no escopo desse artigo, porém basta saber que é a opção mais graficamente intensiva, com maior impacto na performance do jogo, porém também é o método que gera melhores resultados visuais. A filtragem anisotrópica se tornou o padrão de configuração nos últimos anos, em virtude da evolução das GPUs.

Outros Ajustes

Alguns efeitos que adicionam um impacto visual à imagem foram introduzidos na última década e são processados depois das informações principais da cena. Podemos chamá-los de "efeitos especiais" depois de uma filmagem, ou usar o termo correto na indústria: pós-processamento. Outros efeitos trabalham com a forma como a iluminação funciona dentro do jogo.

Oclusão de Ambiente

Na vida real, mesmo ao Sol do meio-dia, a luz não é unidirecional: ela reflete em superfícies, se espalha. Para simular esse efeito em jogos eletrônicos que possuem uma única fonte de iluminação ou para evitar aquela aparência "plástica" em superfícies que refletem luz demais, existe um método chamado de oclusão de ambiente. Esse sistema tenta restringir a exposição a luz de determinados pontos de algumas superfícies, adicionando profundidade com sombras ou simplesmente reduzindo o reflexo. Em alguns jogos, o uso do efeito compensa, mas pode ser imperceptível em outros.

oclusion

O primeiro sistema desenvolvido para esse efeito foi o SSAO: ele é menos efetivo que métodos desenvolvidos posteriormente, mas seu impacto na performance é mínimo. HBAO e HDAO são métodos mais modernos e proprietários (respectivamente da NVIDIA e da AMD), que oferecem resultados superiores a um custo maior de processamento.

Depth of Field (DoF)

Profundidade de campo ("Depth of Field") é um termo originário da fotografia, em que elementos muito distantes aparecem com menos foco do que elementos mais próximos. Nos jogos eletrônicos, tanto a cena de fundo quanto a cena principal podem ser renderizadas com o mesmo nível de contraste, o que, para muitos, não parece natural. Então, artificialmente, o jogo pode ser instruído a aplicar esse efeito de desfoque em partes do cenário que estão distantes da visão do jogador. Mal configurado ou mal programado, esse efeito pode acabar gerando resultados ainda mais irreais ou ter um impacto profundo na performance.

DOFCrysis

Bloom

Existe um limite para a quantidade de luz que um monitor pode gerar, entretanto muitos jogos precisam exibir cenas exageradamente iluminadas. Como resolver isso? Com Bloom, um efeito que faz a luz "transbordar" para fora da sua superfície, provocando uma sensação de ofuscamento. Alguns jogos empregam mal essa técnica, envolvendo praticamente tudo em uma estranha aura celestial, então pode ser interessante mantê-la desligada.

Motion Blur

O desfoque de movimento, ou "Motion Blur" é um efeito de pós-processamento que borra a imagem em cenas em que supostamente é utilizado algum tipo de movimento muito rápido. É o principal efeito de realismo de jogos de corrida, que, na maioria das vezes, não está deslocando o veículo na velocidade que registra na tela, mas provoca a sensação assim mesmo. Em outras situações, pode provocar estranheza ou mesmo náusea, a custo de performance.

motion-blur

HDRR

Esse é outro conceito oriundo da fotografia e significa intervalo da renderização da luminosidade, ou seja o quão escura ou quão clara pode ser uma região da cena antes que não seja mais possível exibir detalhes. Até alguns anos atrás, esse valor era bem baixo, na faixa de 8 bits (apenas 256 valores possíveis). Ou seja, os desenvolvedores tinham uma gradação de apenas 256 valores intermediários entre claro demais e escuro demais. Com o DirectX 10, esse limite passou a ser de 128 bits. Entretanto, a disponibilidade ou não desse recurso em sua forma mais avançada irá depender do tipo de monitor empregado e se ele possui suporte a HDR.

Ouvindo: The Axis of Perdition - The Elevator Beneath the Value

Nenhum comentário:

Retina Desgastada

Blog criado e mantido por C. Aquino

Wall of Insanity