Lá estava eu, em minha noite tranquila vagando pela Internet quando me deparei com uma entrevista com Carl Jones da Crytek sobre o CryENGINE 3, que vai poder rodar os jogos da próxima geração de Crysis no PC, Playstation 3 e Xbox 360. Como qualquer entusiasta de PC, estou muito animado com a perspectiva de um novo jogo Crysis com gráficos ainda melhores do que o primeiro para a geração atual e futura de hardwares. Então, imediatamente pulei para a parte que se refere ao PC, e através da leitura da referida entrevista me deparei com uma resposta muito interessante.
Quando perguntado sobre o que as novas tecnologias foram implementadas em CryENGINE 3, Mr Jones respondeu:
"Temos implementado mais multi-core support, streaming e uma nova técnica de renderização:
Deferred Lighting, o que permite um enorme número de luzes dinâmicas em uma cena, sem exigir uma elevada quantidade de poder de processamento, iluminação global no motor em tempo real, além de uma série de pequenas, mas importantes melhorias para todas as nossas tecnologias e funcionalidades."
Preste muita atenção ao texto acima. Assim que eu li o texto, algo me incmodou. Eu pensei, não era esse "Deferred Lighting ou Shading" a razão por trás da falta de anti-aliasing em STALKER: Shadow of Chernobyl e Dead Space? Bom, eu não sou programador de jogos, então eu não sei o que esta técnica é ou como trabalha. Então, fiz o que um usuário normal faria quando as coisas não funcionam como esperado. Procurei na Wikipedia sobre esta técnica, e em seguida procurei no Google por algo concreto sobre o porquê de um jogo desenvolvido com "Deferred Lighting" não suporta Anti-Aliasing.
Aqui está o que Wikipedia tem a dizer:
"Em computação gráfica, "Deferred Lighting" é uma técnica de três dimensões de sombreamento em que o resultado de um algoritmo de sombreamento é calculado dividindo-o em partes menores, que são escritos no buffer de armazenamento intermediário para serem combinados mais tarde, em vez de imediatamente por escrito o resultado de sombreamento para a cor framebuffer. Implementações em hardware modernos tendem a usar Multiple Render Targets (MRT) para evitar transformações de vértices redundantes. Normalmente, uma vez que todos os buffers necessários são construídos em seguida, são lidos (geralmente como texturas de entrada) de um algoritmo de sombreamento (por exemplo, uma equação de iluminação) e combinados para produzir o resultado final. Desta forma, a computação e largura de banda de memória necessária à sombra de uma cena é reduzido à partes visíveis, reduzindo a complexidade da profundidade sombreada."
Não se preocupe se você ficou oprimido por todo o tecnicismo acima, preste muita atenção para a citação abaixo como eu tinha confirmado em minha suspeita.
Wikipedia afirma:
"Outra desvantagem bastante importante é que, devido à separação da fase de iluminação a partir da fase geométrica, anti alias hardware não produzem mais resultados corretos e embora o primeiro passe de renderização usado quando as propriedades básicas (difuso,normal, etc ) pode usar anti alias, não é completa até que a iluminação anti alias seja aplicada quando necessária. Uma das técnicas habituais de superar esta limitação está em usar a detecção de bordas na imagem aplicando "blur" sobre as bordas."
Isto significa que quando se usa "Deferred Shading" em um hardware tradicional, a assistência do Anti-Aliasing não funciona. No entanto, como uma solução para isso, um "blur" é aplicado sobre as bordas irregulares da imagem.
A próxima parte da prova vem de um livro publicado pela Nvidia em seu site desenvolvedor intitulado "GPU Gems 2: Técnicas de programação de gráficos de alto desempenho e computação General-Purpose". Oles Shishkovtsov da GSC Game World no Chapter 9, falando sobre "Deferred Shading" em STALKER, explica:
"Um deferred renderer é apenas incompatível com o hardware atual assistido com antialiasing ,infelizmente (Hargreaves e Harris 2004). Assim, torna-se o anti-aliasing unicamente de responsabilidade da aplicação e do shader, não podemos contar com a GPU sozinha. Por que o aliasing já decorre da falta de correspondência entre as freqüências do sinal de origem e de destino, em representação discreta, uma boa aproximação de um filtro anti-aliasing é apenas um filtro low-pass, que é simples blurring."
Junto com STALKER, Dead Space é um outro jogo que usa o "Deferred Shading". Então eu carreguei Dead Space para ver o quanto blur é adicionado para as bordas, e com certeza não havia visto a diferença na minha frente.
Embora a diferença no jogo não seja perceptível, chega ser uma blasfêmia pensar que o próximo Crysis, entre tantos outros jogos, não poderia apoiar uma técnica como Anti-Aliasing.
Mr Jones explica:
"Com CryENGINE 3 - você realmente tem uma porta para cada plataforma - ao construir o seu jogo, ele será executado no PS3, Xbox 360 e PC. Sua plataforma de ligação é agora apenas uma questão de design - não um requisito para favorecer uma abordagem de desenvolvimento em detrimento de outra, devido a limitações técnicas.
Esperemos que os jogadores de PC venham ter um jogo adaptado para tirar maior proveito de todo o hardware mais recente da Intel, AMD e Nvidia no momento da liberação, embora possamos ter que conviver com um certo blurring em torno das bordas.
Update: Parece que o Anti-aliasing pode ser habilitado com "Deferred Shading" no modo DX10. Nvidia publicou um documento técnico intitulado "DirectX 10: The Next Generation Graphics API", que explica isso.
O slide acima veio diretamente da Crytek, falando sobre os objetivos do projeto da CryENGINE 3. Assim, parece que eles poderiam estar usando EdgeAA (o método de remoção de serrilhados blurry) em DirectX9 e terminam com:
"EdgeAA,...Estamos trabalhando nisso".
Podemos supor que eles possam aplicar anti-aliasing no modo DX10?
Mas não me impede de jogar. Ter gráficos topados não é tudo(no meu caso é claro) dou importância ao enredo e ao envolvimento que jogo proporciona...