Tem vindo a ser cada vez mais os casos de jogos que apresentam ausência ou problemas com o Anisotropic Filtering na Playstation 4. O que se passa e o que causa esta situação?
Como qualquer um pode constatar, um sistema informático consegue re-escalar em tempo real uma imagem de forma a adaptar a mesma às mais diversas dimensões. E num jogo 3D, essa é uma situação que ocorre regularmente com as texturas colocadas nos objectos.
Há contudo um caso particular dentro dos universos 3D, as imagens ou texturas colocadas em objectos com ângulos de visão oblíquos face ao utilizador, e onde para um mesmo objecto, dependendo da distância, o re-escalamento de uma mesma textura terá de existir para diversos tamanhos.
É é nesses casos que veremos de seguida que se aplica a filtragem anisotropica:
A imagem em causa é basicamente um conjunto de quadrados que necessitam de ser repetidos numa superfície oblíqua, neste caso, o chão. Na imagem da esquerda, a imagem está a ser re-escalada de acordo com a distância. No caso da direita não só temos esse re-escalamento, mas com uma filtragem anisotrópica aplicada.
Basicamente o método permite melhorar a qualidade das imagens em texturas aplicadas a superfícies obliquas face à câmara onde a projecção da textura parece não ortogonal.
Mas estamos a discutir questões irrelevantes. Para o jogador, o que interessa é que o uso de um filtro anisotrópico permite melhorar a qualidade das texturas nas superfícies obliquas, com a distância.
Eis mais um caso onde de um lado não temos qualquer filtragem e do outro a filtragem anisotrópica está lá.
Este tipo de técnica surgiu já à muitos anos, sendo suportado actualmente por todas as placas gráficas existentes no mercado. É considerada uma metodologia quase banal, e com pouco peso no processamento gráfico. Pode no entanto ser bastante pesado no uso de largura de banda!
Actualmente o filtro aparece nas variantes 2X, 4x, 8x e 16x. Na imagem que colocaremos de seguida temos também um menos comum 12x. E cada uma das versões é melhor que as restantes, sendo que o ideal e normalmente usado é o 16x (nota: imagem não alojada na PCManias, pelo que poderá eventualmente não carregar).
O caso Playstation 4.
Tal como qualquer sistema actual, a Playstation 4 é perfeitamente capaz de realizar um Anisotropic Filtering de 16x. E são vários os exemplos de jogos onde isso acontece.
Alien Isolation por exemplo, apresenta um Anisotropic Filtering 16x perfeito, e outro exemplo é The Last of Us. Na realidade os títulos são ivários, e naqueles em que não foi escolhida uma solução 16x a solução usada está idêntica à da Xbox One.
No entanto existem excepções. Títulos onde o Anisotropic Filtering da PS4 face ao implementado na Xbox One ou PC, deixa algo a desejar. Eis exemplos (abram a imagem em novo separador para a verem em resolução total):
Evolve
Se repararem nos ferros longitudinais no chão, na PS4 eles deixam de ser claros a partir de uma certa distância.
Murdered: Sould Suspect
Reparem na definição na carpete, especialmente na parte mais longínqua.
Dying Light
Reparem na qualidade do soalho na zona indicada.
Na realidade existem mais casos, e vamos referir mais alguns ao longo do artigo. No entanto, dado que as imagens estão com a resolução total, para o seu peso não ser demasiado no artigo, vamos abster-nos de colocar mais.
Qual é a razão desta situação?
Hipotese 1 – A PS4 não é capaz. Há um problema no hardware.
Esta hipótese está completamente rejeitada. Não há nenhum componente especial do hardware que trate desta filtragem, sendo ele um processamento como outro qualquer. E o facto de vários jogos PS4 possuírem um AF 16x perfeito, mostram que a consola pode realizar este tipo de filtragem sem problema.
Hipotese 2 – A Sony obriga a 1080p e como tal há que fazer-se compromissos pois a consola não é potente o suficiente.
Esta é a hipótese que é levantada pelos fanboys da consola concorrente. E está igualmente rejeitada.
Eis o porque:
Evolve, por exemplo, que possui este problema, corre a 1080p na PS4 e 900p na Xbox One. No entanto, mesmo perante essa realidade, o jogo possui uma maior taxa de fotogramas por segundo na Playstation 4, e um Ambient Oclusion superior, que a Xbox One. O Ambient Oclusion é um processamento bem mais exigente em todos os aspectos do que o Anisotropic Filtering, e naturalmente que o mesmo não teria razão para ser superior na PS4 se isso implicasse o corte na filtragem anisotrópica.
Thief é outro exemplo. O jogo corre a 1080p na PS4 e 900p na Xbox One. Mesmo assim a versão PS4 possui neblina e melhor Ambient Oclusion (HBAO vontra SSAO na Xbox One). Possui ainda Parallax Occlusion Mapping que não existe na consola concorrente! o AO e o POM são, cada um deles, mais pesados que o AF..
Para além do mais, como perceberão pelas respostas às hipóteses seguintes, todo os argumentos que se seguem ajudam a contrariar esta teoria!
Hipotese 3 – A largura de banda da PS4 não é suficiente.
Efectivamente o Anisotropic Filtering é algo que é pouco exigente a nível de processamento, mas bastante exigente a nível de largura de banda, podendo penalizar as performances tremendamente se ela não for suficiente.
Vamos ver o quadro que se segue sobre o número de amostras necessárias para realizar os diversos tipos de Anisotropic Filtering nos seus diversos modos, para podermos realizar umas contas:
AF Setting | ATI Performance | ATI Quality | nVidia |
1X | Not supported | Not supported | 8 |
2X | Up to 8 | Up to 16 | 16 |
4X | Up to 16 | Up to 32 | 32 |
8X | Up to 32 | Up to 64 | 64 |
16X | Up to 64 | Up to 128 | Up to 129 |
Tanto Nvidia como AMD usam o chamado Adaptive AF. Isso quer dizer que a placa determina automaticamente quais as superfícies obliquas nas quais terá de aplicar o efeito quando este é activado. Tal permite a poupança de processamento para o efeito que como veremos de seguida é bastante pesado.
Sendo o efeito automatizado, vamos aceitar apenas para demonstração que numa imagem de 1920*1080 teríamos no total uma área de 1024*768 pixels onde o efeito seria aplicado. Um total de 786432 pixels a processar.
Comecemos pelo cálculo de largura de banda para uma filtragem 2x, com 8 amostras com um texel a ser aplicada a um pixel, com 4 bytes usados por texel, 60 fotogramas por segundo, e compressão de texturas 4:1 (algo normal nos GPUs)
Teriamos assim a necessidade da seguinte largura de banda:
786432*8*4/4*60= 377487360 bytes/seg ou 360MB/sec.
Não parece muito, certo?
Mas vamos passar agora para AF 16x, com 64 amostras, o que implica multiplicar o resultado de cima que já tinha 8 amostras, por 8 (8*8=64):
360*8=2880 MB/s ou 2,9 GB/s.
Um valor que já podemos considerar significativo! E isto numa área teórica de 1024*768, pois na prática podemos ter áreas superiores!
Tão significativo que pode levar a que o efeito não seja aplicado. Mesmo com 30 fotogramas e com a mesma área estamos a falar de 1,45 GB/s, algo que num jogo que puxe ao máximo pela gráfica pode fazer a diferença.
Jogos como Driveclub muito provavelmente não apresentam AF por este motivo. Assim como Forza 5 não o apresenta provavelmente pelos mesmos motivos.
Estamos aqui perante um argumento que poderia explicar a situação. Mas que acaba por não ser aceite quando situações como melhores FPS e Ambient Oclusion (mais exigente a nível de largura de banda e processamento que o AF) estão aplicados, e pior ainda, quando vemos os seguintes casos:
Stryder
Unfinished Swan
Tanto Stryder como Unfinished Swan são jogos que estão idênticos nas consolas de anterior geração e nas actuais. A única diferença é uma melhoria na qualidade das texturas, um aumento de resolução para 1080p e um aumento para 60 fotogramas.
Ambos os jogos correm em cerca de 25 GB/s de largura de banda da Playstation 3, e como tal estão longe de serem problemáticos com os 176 GB/s da Playstation 4.
No entanto, ambos os jogos possuem o problema no Anisotropic Filtering.
Stryder possui um AF 16x no PC, um AF 8x na Xbox One, mas basicamente nenhum AF na Playstation 4.
Unfinished Swan apresenta um AF 16x na PS3 mas menor qualidade na PS4.
Ora será fácil de concluir que se estes jogos sem problemas de performance apresentam o problema com a filtragem, então esse problema é o que estamos a ver aplicado nos restantes jogos. Com excepções eventualmente pontuais, o motivo pelo qual não temos um AF de qualidade nos restantes jogos será pelo mesmo motivo pelo qual não o temos neste jogos mais simples. Um problema qualquer em qualquer sítio e ainda não identificado!
Teorias
As teorias para a causa do problema são muitas.
– Bug no SDK.
É uma possibilidade, mas levanta a questão: Se sim, porque não foi ainda corrigida?
– Bug ao nível da driver video
Mais provável. A correcção seria da responsabilidade da AMD e só poderá ser corrigida com uma actualização do firmware de todas as consolas.
– Incompatibilidade de conversão entre o DirectX e o GNM
Outra possibilidade. Todos os jogos em causa foram criados para a PS4 por equipas externas à Sony e foram programados em PC. A excepção é Unfinished Swan onde a Sony Santa Mónica criou a versão PS3. No entanto foram a Giant Sparrow e a Armature Studio quem estiveram por detrás da conversão para a PS4 e o jogo pode ter sido desenvolvido em DirectX.
Se tal for o caso, o problema poderá estar do lado da Microsoft. Eis algo que se pensa estar relacionado e relacionado com uma limitação do Visual Studio face ao Anisotropic Filtering.
Basicamente o que se refere em cima é que caso o hardware seja reconhecido como feature level 9.1 ao ser compilada a filtragem anisotrópica será no máximo de 2x. E este pode ser o problema: Dado que a gráfica da PS4 não é exactamente standard, ela pode estar a ser erroneamente detectada.
Mas como referido, tudo de cima são apenas teorias. As verdadeiras causas do problema são desconhecidas, sendo a situação bastante ilógica no seu global.
Ninguem percebe os motivos desta situação, e ninguém fala sobre ela!
Nota: Curiosamente The Order 1886 não usa Anisotropic Filtering, mas uma metodologia nova chamada Lean Mapping (Pag 23).