Conheça o modder que invadiu a nova tecnologia de upscaling da AMD no Cyberpunk 2077
[ad_1]
No início desta semana, surgiram notícias de um modder que invadiu a tecnologia de upscaling temporal FSR 2.0 da AMD no Cyberpunk 2077, permitindo aos usuários de placas gráficas não RTX an opportunity de jogar o jogo em taxas de quadros mais altas com qualidade visible substancialmente melhor do que com o upscaling FSR 1.0 . Isso é enorme para os proprietários de GPUs AMD, e o mod funciona lindamente no Steam Deck.
Entramos em contato com o criador do mod, o gloriosamente chamado PotatoOfDoom1337, para descobrir exatamente como ele funciona – e se isso significa que o FSR 2.0 estará disponível em breve em uma tonelada de jogos existentes. Aqui está a entrevista, editada levemente para maior clareza. Apreciar!
Qual é a sua experiência em programação e mods de jogos? No NexusMods, parece que você só cria mods desde abril do ano passado?
Batata da Perdição: Estou estudando ciência da computação, sempre me interessei pelo aspecto técnico dos videogames e fiquei fascinado quando soube de projetos como Ressoar, Especial Okay ou DXVK. Ecu vejo programação como meu passion favorito e, além disso, gosto de engenharia reversa e brincar muito com código. Fiz meu primeiro mod do Cyberpunk 2077 porque o CDPR corrigiu um worm muito divertido no jogo. Isso me incomodou tanto que baixei as ferramentas de desenvolvimento e reimplementei o worm ecu mesmo. O processo de criação deste mod me deixou viciado, aprendi mais sobre o jogo com o pace e comecei a criar mods mais complexos.
O que o motivou a tentar hackear o FSR 2.0 no Cyberpunk 2077?
Batata da Perdição: Principalmente minha GTX 1080 envelhecida, um pouco de inveja em relação aos usuários de RTX por causa de sua tecnologia DLSS exclusiva e curiosidade sobre como as soluções temporárias de upscaling funcionam em geral. Além disso, o FSR 2.0 e o DLSS foram descritos como muito semelhantes, então ecu só queria ver se technology possível.
Como você desenvolveu o mod?
Batata da Perdição: Ecu inicialmente comecei o mod algumas semanas atrás em antecipação ao lançamento de código aberto FSR 2.0. Os primeiros passos foram fazer o jogo falar com meu .dll personalizado e dizer ao jogo que ele suporta DLSS e relatar as resoluções DLSS disponíveis para o jogo implementando as interfaces necessárias. Então ecu escrevi um pequeno shader que exibe apenas uma imagem vermelha em branco. Meu objetivo technology usar isso como base para verificar se as partes do DirectX do meu código estavam funcionando corretamente. Então ecu apenas esperei pelo lançamento de código aberto. Depois que a AMD lançou o código-fonte, substituí imediatamente meu código de teste pelo FSR 2.0. Ecu esperava trabalhar nele por vários dias, mas fiquei agradavelmente surpreso que levei apenas algumas horas para integrar. Usei depuradores como x64dbg e instrument de engenharia reversa como IDA e Ghidra para encontrar as especificidades do comportamento do DLSS no código do jogo. Além disso, para depurar os buffers, o RenderDoc foi incrivelmente útil.
Ative o JavaScript para usar nossas ferramentas de comparação.
Veja como o mod fica em ação em Cyberpunk 2077 e Demise Gentle 2, em comparação com DLSS, FSR 1.0 e 4K nativo.
Houve alguma surpresa em termos de coisas mais difíceis ou mais fáceis de realizar?
Batata da Perdição: Os principais buffers de entrada DLSS e FSR são os mesmos. Basicamente, apenas copiei a integração FSR do exemplo da AMD, defini os valores de FoV/Intensity, lancei o jogo e imediatamente obtive uma imagem bastante decente. A pior coisa foi uma peculiaridade no Cyberpunk, onde o jogo não redefine uma estrutura especial do DirectX (ComputeRootSignature) depois de executar o DLSS. Isso não é tão importante para o DLSS da Nvidia, pois ele united states CUDA, mas infelizmente o FSR united states shaders de computação DirectX comuns, que quebram o jogo. Então ecu tive que encontrar uma maneira de restaurar essa estrutura depois de executar o FSR.
Em termos de implementação do FSR 2.0 CP2077, o que está funcionando bem no momento e o que precisa ser corrigido?
Batata da Perdição: Ghosting e texturas animadas são os maiores problemas no momento. Tanto o DLSS quanto o FSR usam máscaras separadas para fornecer dicas ao algoritmo sobre reutilizar o subject material temporal antigo ou descartá-lo, mas eles não parecem ser compatíveis e preciso criar um sombreador que traduza as máscaras DLSS em máscaras FSR.
Máscaras DLSS e FSR… elas são semelhantes a uma máscara do Photoshop?
Batata da Perdição: Sim, basicamente assim. Você pode imaginá-los como uma imagem em lots de cinza com valores variando de 0,0 a 1,0 e o upscaler temporal reprojeta quadros antigos dependendo desses valores. o Documentação FSR entra em mais detalhes sobre isso.
Aqui está um exemplo visible. Ecu joguei uma granada de fogo na rua e, como você pode ver, não há nada nos vetores de movimento ou no buffer de profundidade. Isso porque nem a textura de fogo 2D, nem as partículas de faísca têm uma representação 3-d no jogo. Para garantir que as pequenas faíscas não causem traços desagradáveis, elas são mascaradas no InputBiasColorMask para que o algoritmo de reprojeção forget about esses pixels e não reprojete nada naquele native.
O FSR 2.0 e o DLSS têm requisitos semelhantes em termos de quais entradas eles exigem?
Batata da Perdição: Sim, caso contrário este mod não seria possível. Ambas as integrações precisam de cores, vetores de movimento e um buffer de profundidade como entrada. Além disso, eles usam as máscaras que mencionei anteriormente. Eles são muito importantes para coisas que não têm vetores de movimento, como partículas ou texturas animadas como fumaça e telas de computador no jogo e máscaras aplicadas incorretamente são a predominant razão para o aparecimento de fantasmas em um jogo. Além disso, o FSR precisa conhecer o FOV e os planos próximos e distantes do buffer de profundidade. O DLSS não precisa dessas informações adicionais (acho que descobre isso por meio do algoritmo de ML integrado).
Com o que você sabe agora, quão fácil seria desenvolver uma solução semelhante para outros jogos DLSS?
Batata da Perdição: Acho que sim. Ainda não terminei com este, mas se outros jogos forem semelhantes, isso não deve demorar mais do que alguns dias por jogo. Já fiz alguns testes iniciais com Dying Stranding e os primeiros resultados parecem muito bons.
Por exemplo, o FSR 2.0 poderia ser adicionado ao Regulate, um jogo que roda extremamente mal em GPUs AMD, mesmo com RT desabilitado?
Batata da Perdição: Acho que sim. O controle foi atualizado para o DLSS 2.0, o que significa que a interface DLSS com a qual o jogo se comunica é a mesma ou é pelo menos muito semelhante ao Cyberpunk. Esta é a parte mais importante.
Dado o enorme interesse público no mod, quais são seus planos daqui para frente? Você estaria aberto a outros desenvolvedores se juntarem ao projeto para melhorar os resultados ou implementar mods semelhantes para outros jogos?
Batata da Perdição: Ecu realmente não esperava tanto interesse no meu mod, e se ecu soubesse disso, teria me preparado um pouco mais quando apertei o botão de publicação na quinta-feira passada. Ecu quero terminar o Cyberpunk primeiro (se os desenvolvedores reais não forem mais rápidos que ecu XD) e depois passar para outros jogos DLSS. E sim, é claro que ecu adoraria que outros desenvolvedores se juntassem a mim e me ajudassem a tirar esse projeto do estágio de prova de conceito mais rápido e transformá-lo em algo que as pessoas possam usar. Ouvi dizer que já existe alguém querendo portar meu mod para Pink Useless Redemption 2.
Será possível criar uma substituição DLSS drop-in que funcione em uma variedade de jogos (‘dlss2fsr’, como sugerido por um usuário do Github) ou você vê que é mais uma série de mods, cada um adaptado a um determinado jogo?
Batata da Perdição: Apenas com alguns compromissos. Seria possível criar algum tipo de mod que pegasse os valores de FoV e Intensity de um simples arquivo ini. Este mod pode funcionar para quase qualquer jogo DLSS, mas a qualidade da imagem pode não ser tão boa quanto poderia ser. Quero dizer, até a Nvidia otimiza o DLSS para certos jogos. Por exemplo, as primeiras versões do DLSS tinham fantasmas terríveis no Cyberpunk, enquanto as atualizações posteriores do DLSS melhoraram a situação. Não posso falar por outros jogos, mas por exemplo Cyberpunk envia involuntariamente o buffer de ID de objeto para DLSS (que é um buffer que atribui um valor de cor único a cada objeto na cena). O DLSS não precisa desse buffer e não pode fazer nada com essas informações, mas isso me permite melhorar tremendamente o anti-ghosting (especialmente ao dirigir). Além disso, o worm ComputeRootSignature que mencionei anteriormente é exclusivo do Cyberpunk e torna esta versão do mod FSR incompatível com qualquer outro jogo. Cada jogo tem algumas peculiaridades ou até mesmo insects que tornam importante otimizar cada jogo para obter a melhor experiência. Obviamente, não posso fazer algo assim para todos os jogos, mas acho que se houver algum tipo de estrutura DLSS2FSR, deve ser possível para outros desenvolvedores com alguma experiência em programação integrar e otimizar facilmente o FSR para outros jogos DLSS.
Qualquer outra coisa que você gostaria de compartilhar sobre o processo de criação do mod, ou que você gostaria que as pessoas soubessem?
Batata da Perdição: Acho que minhas respostas acima devem cobrir tudo sobre o mod por enquanto. Este mod tem apenas alguns dias e já é tão bem recebido. Tenho certeza de que veremos muitos desenvolvimentos empolgantes nas próximas semanas. Fique atento para mais.
Coisas emocionantes mesmo! Desde que esta entrevista ocorreu, outro colaborador do ID de mnnx adaptado com sucesso o mod para Demise Gentle 2, e espero ver muito mais jogos suportados nas próximas semanas se tudo correr bem. Obrigado ao PotatoOfDoom por seu pace criando o mod e conversando conosco!
Se você estiver interessado em experimentar o mod por si mesmo, você pode encontrá-lo em NexusMods. A instalação é bastante simples – substitua alguns arquivos no diretório CP2077 e faça uma alteração no registro. Você também pode acompanhar o desenvolvimento do mod em Repositório GitHub do PotatoOfDoom.
[ad_2]
Fonte da Notícia: www.eurogamer.web