Durante os primeiros dias dos videojogos, onde tudo o que tínhamos eram gráficos indiscerníveis de pixel bidimensional ou sprite, muita coisa foi deixada à imaginação. Naquela época, a computação gráfica era composta por formas pouco reconhecíveis, feitas para passar como suas contrapartidas do mundo real (ou, em muitos casos, do mundo do cinema). Eles faziam o melhor que podiam e depois se concentravam na jogabilidade divertida e repetitiva, que é uma ótima maneira de passar o tempo todo sábado à tarde. Isto durou muito tempo, sendo o Atari 2600 o principal console doméstico que fez o trabalho.
Depois da queda dos videojogos dos anos 80, a Nintendo e a Sega ressuscitaram das cinzas e fizeram novas consolas: a Nintendo Entertainment System e a Sega Genesis, respectivamente. Estas consolas apresentavam gráficos muito melhores onde se podia realmente reconhecer o que cada elemento individual é. Claro, ainda há algum para a imaginação, mas definitivamente não precisarias de trabalhar tão arduamente como antes. Durante esta época de 8 bits e subsequentes 16 bits, os gráficos sprite foram levados ao limite absoluto que a tecnologia na altura podia dar. Mas ainda era o reino das 2D ou bidimensionais. A maioria dos jogos era de scroll lateral, ou de cima para baixo, e qualquer jogo “3D” que saísse ainda utilizaria gráficos sprite. Era uma ótima maneira de criar jogos, e muitos jogos clássicos ainda considerados como alguns dos melhores em seus gêneros usados. Contudo, quando a Sony Playstation aparecesse, a indústria dos jogos nunca mais seria a mesma. Entraria no reino das três dimensões, ou 3d.
Com a chegada dos gráficos 3d veio uma nova fronteira nos videojogos. De repente, os sprites bidimensionais eram coisa do passado, e os desenvolvedores de jogos rapidamente empurraram o envelope para criar gráficos 3d cada vez melhores que tornariam a imersão dos jogos o melhor possível do ponto de vista tecnológico. Se durante as eras de 8 e 16 bits muito pouco foi deixado à imaginação, com o amanhecer dos gráficos 3d, quase nada foi deixado. Os desenvolvedores de jogos poderiam criar praticamente qualquer coisa que pudessem modelar e usar no jogo. E com o passar do tempo, a qualidade destes gráficos 3d melhorou ainda mais.
Hoje em dia, a qualidade dos gráficos 3d em videojogos, especialmente em videojogos triple A, é tão alta que está a esbater as linhas da realidade. Isto porque ao longo dos anos muitos recursos foram desenvolvidos para aumentar muito o realismo que os gráficos 3d podem trazer. De aceleração de hardware a ajustes de software, os jogos 3d de hoje estão anos-luz além do que os criadores de jogos dos anos 60 e 70 jamais poderiam sonhar.
Há muitos elementos nos gráficos 3d que contribuem todos para produzir uma imagem fantástica. A iluminação é, claro, uma das mais importantes. Ser capaz de levar em conta os efeitos das luzes em uma área e o sombreamento que ela causará pode ser a diferença entre imagens de alta qualidade. E é aqui que entra a oclusão ambiente.
O que é a oclusão ambiente?
À primeira vista, o termo parece e soa muito técnico. E se você o definir descobrindo o que as palavras “ambiente” e “oclusão” significam separadamente, você terá uma vaga idéia do que é. Os dicionários online definem “ambiente” como “relacionado com o ambiente imediato de algo”. Parece simples o suficiente. No entanto, “oclusão” significa um par de coisas ligeiramente diferentes, que têm todas três coisas em comum: um bloqueio, um fechamento momentâneo e o posicionamento.
Combinado, você terá algo na linha de “coisas em torno desse bloco de caminhos”. Ainda parece confuso? Não te preocupes, não está muito longe. A oclusão ambiente é o método de sombreamento e renderização para descobrir quanto de um ponto específico de uma cena renderizada obtém iluminação ambiente. É o método para ver o quão “acessível” cada ponto da cena é à luz ambiente, a fim de produzir um efeito que está muito mais próximo de como a iluminação do mundo real funciona. É diferente da fundição de sombras (chegaremos a isso mais tarde), mas produz um efeito de sombreamento. Áreas fechadas ou de difícil acesso são escurecidas, e as áreas expostas são iluminadas, aumentando o realismo de uma cena.
Ainda confuso? Pense desta maneira. Pegue um tubo de papelão higiênico, e coloque-o sobre uma mesa regularmente iluminada. Dê uma olhada dentro do tubo, e depois dê uma olhada lá fora. Como o interior do tubo não é facilmente alcançado pela iluminação ambiente, parece mais escuro do que o exterior do tubo. Isso é o que a oclusão ambiente faz. Agora, se o mundo real tivesse ajustes gráficos, e nós desligamos a oclusão ambiente, não será tão fácil distinguir o que é o interior do tubo do que é o exterior. A menos que as texturas (chegaremos a isto mais tarde também) do tubo de cartão já tenham sombras pintadas.
A oclusão ambiente quando feita corretamente, resulta em uma cena que parece muito mais realista do que quando feita sem oclusão ambiente. Mas houve um tempo em que a oclusão ambiente não era usada em jogos de vídeo. Em 2001, o filme Pearl Harbor, que estrelou Ben Affleck e Kate Beckinsale, usou a oclusão ambiente. Em 2007, porém, o jogo “Crysis” da Crytek revelou o Screen Space Ambient Occlusion, a primeira vez em que a oclusão ambiente foi usada em um videogame. Os resultados foram impressionantes e, na época, Crysis foi aclamado como um épico de ficção científica maravilhosamente feito. Não apenas por causa da história e da jogabilidade, mas por causa dos gráficos de vanguarda da época. Mas essa tecnologia de ponta significava que, no lançamento, Crysis tinha um dos mais altos requisitos de hardware de qualquer jogo. No entanto, definiu a barra em que outros títulos do triplo A que desejam alcançar gráficos imersivos e realistas devem alcançar ou passar.
Como funciona a Oclusão Ambiental?
Agora sabemos o que é a oclusão ambiente. Mas como faz o seu trabalho acrescentando profundidade na cena dos videojogos sob a forma de sombreamento?
O método desenvolvido pela Crytek, especificamente por Vladimir Kajalin, funciona como um algoritmo de um sombreador de pixels. Os shaders pixel shaders são, em essência, computam diferentes atributos e configurações de uma área de uma cena ou objeto em uma cena, e produzem um resultado baseado nesses cálculos. Pode ser um resultado simples como uma cor simples, ou, neste caso, uma quantidade de luz. Ele faz isso para cada pixel que está presente na tela.
Isto parece muito trabalho, e é. É precisamente por isso que demorou tanto tempo a implementá-lo em videojogos. Porque antes disso, era muito difícil executar a oclusão ambiente via renderização em tempo real. Mas a solução que foi produzida pela Crytek, que usa a amostragem de um número definido de pixels em vez de cada pixel, reduziu muito a quantidade de tempo e processamento necessário. E com outras tecnologias desenvolvidas em conjunto, permitiu produzir uma imagem de alta qualidade que é aceitável para o avanço dos gráficos de videojogos.
Atualmente, existem muitos tipos de oclusão ambiente ou AO, como a indústria chama, e funcionam de forma ligeiramente diferente uns dos outros.
Tipos de Oclusão de Ambiente
Os diferentes tipos de oclusão ambiente têm resultados semelhantes, mas ligeiramente diferentes, dependendo de como um criador de jogos tem usado cada um deles. Aqui estão alguns dos mais comuns, e os seus prós e contras.
SSAO ou Screen-Space Ambient Occlusion – o avô da tecnologia de oclusão ambiente para videojogos. Desenvolvido pela Crytek em 2007, o SSAO estabeleceu o padrão quando se trata de oclusão ambiente e até hoje é a opção padrão para a maioria dos videogames lançados.
Características principais:
-
- Poucos ou nenhuns recursos da CPU – devido ao algoritmo utilizado, não há praticamente nenhuma necessidade de utilizar a CPU. O SSAO pode ser feito pela unidade de processamento gráfico ou pela GPU.
- Rápido e com poucos recursos – porque não há necessidade de pré-processamento, o SSAO tem praticamente zero de tempo de carregamento e de alocação de memória. O SSAO pode ser feito especificamente na GPU
- Consistente e fiável – o algoritmo é aplicado sempre da mesma forma.
- Adaptável – pode ser aplicado de várias maneiras por desenvolvedores de videogames e fabricantes de GPU.
SSDO ou Screen Space Directional Occlusion – pode ser considerado um passo à frente da SSAO em termos de avanço tecnológico. SSDO não usa apenas os pixels de uma cena ou de um objeto. Ele também utiliza a direção da luz que está batendo no objeto, e quaisquer luzes que saltem de objetos atrás dele. Isto dá ao jogador a capacidade de distinguir objetos vendo a diferença na quantidade de sombra e luz entre eles.
Isto dá mais profundidade e realismo acima do que a SSAO já traz e aproxima cada vez mais os videojogos do cenário do fotorealismo sempre evasivo.
Características principais:
-
- Iluminação mais realista – ao ter em conta a direcção da luz das fontes de luz, a profundidade da iluminação torna-se muito mais elevada.
- Não tão longe dos requisitos de recursos da SSAO – mesmo que a SSDO seja a sucessora da SSAO e tenha mais recursos, os requisitos de recursos permanecem muito semelhantes a ela e isto não é um fardo tão grande para as GPUs modernas.
HBAO/HDAO ou Horizon-Based Ambient Occlusion e High-Definition Ambient Occlusion – estas são variantes do SSAO que pertencem a dois desenvolvedores de GPU. Nvidia é proprietária do HBAO, e AMD é proprietária do HDAO. Não são muito diferentes da SSAO, mas produzem uma melhor oclusão ambiente, especialmente se usadas com as suas respectivas placas de vídeo. Isto, no entanto, vem ao custo de uma maior necessidade de recursos e queda de performance, a menos que a GPU utilizada esteja muito atualizada.
VXAO ou Voxel Oclusão Ambiental – este é o próximo passo para o HBAO e também foi desenvolvido pela Nvidia. Proporciona uma maior qualidade de oclusão ambiente do que o HBAO, mas ao custo de ser mais pesado em termos de recursos, mesmo tendo em conta a média actual das GPUs. Para utilizar plenamente este tipo de oclusão ambiente, você precisa das GPUs mais top de linha disponíveis. Quando ativado, no entanto, você definitivamente verá a diferença.
GI ou Iluminação Global – este tipo de AO ainda não foi utilizado em jogos de vídeo. Mas sabendo como a tecnologia progride, nós definitivamente veremos isso dentro da nossa vida útil. É assim que a iluminação fotorealista é feita. GI leva em conta todas as fontes de luz presentes na cena, e como cada uma delas afeta os muitos objetos ali presentes. Por causa disso, a iluminação está próxima, se não já, exatamente a mesma que no mundo real. Luzes e sombras realistas que farão qualquer coisa na cena parecer exactamente como as suas contrapartes do mundo real. A menos, claro, que sejam modeladas ou feitas de uma forma claramente irrealista.
A oclusão do ambiente faz realmente a diferença nos videojogos?
Com a forma como a oclusão ambiente é descrita, parece que o AO é o ingrediente chave para tornar os videojogos muito realistas. E, em muitos casos, é verdade. No entanto, se você tem jogado muitos jogos de vídeo nos últimos anos, você vai notar que não há muitos jogos, exceto os títulos do triplo A, que incluem AO ou suas variantes. Por que você pode perguntar?
A questão é que, mesmo que o AO não necessite de nenhum poder de processamento da CPU, e seja amigável aos recursos, a oclusão ambiente é muito tributária para a GPU. Agora você pode estar pensando, “meu PC pode lidar com qualquer coisa, certamente o PC de todos os outros podem”? Mas nem todos terão as mesmas GPUs, terão a tecnologia mais avançada, e o software mais recente. E as empresas de videojogos vão pensar no resultado final, também conhecido como vender os seus jogos ao maior número de pessoas possível.
Se um jogo é muito pesado para o hardware, ele pode não vender tão bem. E esta é na verdade uma das principais queixas que tanto os críticos como os jogadores fizeram sobre o Crysis. Na altura do seu lançamento, o jogador médio de PC não conseguia sequer executá-lo sem uma perda framerate ou uma queda na qualidade ou algo nesse sentido.
Agora, vamos assumir que você é capaz de ativar a oclusão ambiente sem nenhum efeito colateral negativo. O impacto é realmente perceptível? Bem, a resposta curta é: depende.
Isto porque também depende de como o criador do jogo implementou a oclusão ambiente no seu jogo. Feito corretamente, o efeito é quase imediato quando você liga as configurações. Vais notar isto especialmente quando os objectos são colocados perto uns dos outros, tais como relva e elementos de vegetação, ou quando os objectos estão perto de paredes, tectos ou pisos. Se você é um jogador muito visual, então isto é algo que você vai apreciar muito.
Feito incorretamente, no entanto, você mal vai notar a diferença visual. Mas você definitivamente sentirá a queda de desempenho na forma de fps mais baixos ou de defasagem. E se for esse o caso, então de que adianta deixá-lo ligado, certo?
Em alguns casos, é um meio termo entre os dois. Claro que você pode ver -uma diferença, mas pode não ser significativa o suficiente a longo prazo para justificar a possível queda de desempenho. Quando isso acontece, é apenas um caso entre qualidade visual versus desempenho. E se você é um jogador sério, é provável que você opte pelo desempenho.
Mas há outra razão pela qual a oclusão ambiente não é tão amplamente utilizada ou incluída em muitos jogos. E isso porque existem alternativas a ela que produzem resultados muito semelhantes sem os efeitos colaterais do desempenho.
Alternativa à Oclusão de Ambiente
Uma das alternativas mais populares à oclusão ambiente é a iluminação florida, utilizada por jogos populares como o Skyrim. Para simplificar, a iluminação florida é uma reprodução artificialmente criada de um artefato visual que as câmeras do mundo real produzem ao receber luz. É como um brilho suave (daí uma “floração”) que as áreas brilhantes de uma cena produzem. Isto toma conta da câmara e é evidente em filmes, programas de televisão e até vídeos gravados em casa, utilizando câmaras de vídeo ou câmaras de telemóvel. Ganhou tração nos videogames em 2004 e tem estado presente em muitos videogames desde então.
O efeito de iluminação de florescimento faz com que a luz de uma parte brilhante de uma cena “sangre” em outros elementos visíveis na cena do ponto de vista da câmera. O olho humano reconhece isso como um efeito realista que já vimos e experimentamos antes, e o processa como iluminação realista em nossos cérebros. Assim, mesmo que o sombreado produzido pela oclusão ambiente não exista em uma cena, o efeito de floração compensa para dar o efeito “imersivo” realista.
A melhor parte? A iluminação florida consome muito pouco poder de processamento da GPU, ou no máximo, não está perto do que a oclusão ambiente exigirá de uma placa gráfica. É por isso que se tornou um efeito visual popular para muitos jogos desde 2004, incluindo títulos triple A como Elder Scrolls IV: Oblivion e Elder Scrolls V: Skyrim, assim como a série Fallout, e muito mais.
Se a oclusão ambiente não vale a pena ou faz muito pouco, você deveria sequer considerar ligá-la quando estiver jogando?
Você deveria ligar a oclusão ambiente no meu jogo?
Depois de falar mais sobre isso, parece que há mais contras do que prós quando se trata de oclusão ambiental em jogos de vídeo, certo? Então, se for esse o caso, deve sequer ligar a oclusão ambiente? Se tudo o que você vai conseguir é uma melhoria visual mínima para um monte de recursos, então não vale a pena, certo?
A resposta curta é que, mais uma vez, depende. Se a sua GPU consegue lidar com isso com uma queda de performance mínima ou zero, então ativar a oclusão ambiente é definitivamente uma opção, especialmente se você quiser melhorar a sua qualidade visual. Depende também se o jogo o faz bem ou não. Se o fizer, então vale a pena possivelmente perder um pouco da performance para a qualidade visual. E se não o fizer bem, então é melhor deixá-lo desligado. A única maneira de descobrir é ligar a funcionalidade e verificar por si mesmo.
É consenso geral que a oclusão ambiente é apenas um efeito especial que acrescenta pouco à experiência de videojogos que outros efeitos não podem dar sem os efeitos secundários. No entanto, alguns jogos fazem isso muito bem, então se você jogar aqueles jogos que fazem isso efetivamente, então vale a pena manter a funcionalidade ativada.