Doar
Arrecadar
Sobre
OPEN SOURCE DLSS AMD NR
Arte / Entretenimento

OPEN SOURCE DLSS AMD NR

ID: 6328742
DLSS 5 Neural Rendering rodando em placa AMDCódigo aberto, licença MIT: https://github.com/zmodelerlover/dlss5-neural-amdO que é issoO DLSS 5 Neural Rendering é a parte do DLSS 5 que sintetiza detalhe, luz e cor dentro da imagem do jogo. Qu ver tudo
Sobre
Atualizações
Quem ajudou
Vakinha Premiada
Selos recebidos
Perguntas e Respostas
Você pode ajudar via Pix usando a chave:
6328742@vakinha.com.brCopiar link
Vaquinha criada em: 10/09/2026

DLSS 5 Neural Rendering rodando em placa AMD

Código aberto, licença MIT: https://github.com/zmodelerlover/dlss5-neural-amd

O que é isso

O DLSS 5 Neural Rendering é a parte do DLSS 5 que sintetiza detalhe, luz e cor dentro da imagem do jogo. Quando ele vazou, apareceu um monte de ferramenta pra usar ele fora dos jogos que suportam oficialmente: renodx-dlss, DLSS5-Feeder, DLSS5-Swapper, OptiScaler.

Todas fazem a mesma coisa por baixo. Chamam o nvngx_dlssnr.dll da NVIDIA. Numa Radeon esse arquivo não roda, então quem possui AMD infelizmente ficou de fora. Não é caso de mexer numa config ou esperar uma atualização, é que não existe caminho.

Existe um port da rede pra AMD, que roda em HIP. O que não existia era alguma coisa que soubesse conversar com ele dentro de um jogo de verdade: pegar a imagem, a profundidade e os vetores de movimento, entregar pra rede no formato certo, receber a resposta e recompor o quadro sem estragar a cor. Foi isso que eu escrevi.

O que já roda

É um add-on de ReShade. Três arquivos ao lado do executável do jogo, sem compilar nada e sem lista de jogos suportados.

Testado numa RX 9070 XT. Euro Truck Simulator 2 é o melhor resultado até agora, comparável à mesma rede rodando em NVIDIA. Mirror's Edge deu resultado bom também. Batman Arkham Knight roda. PCSX2, o emulador de PS2, roda, e os clipes que estão no repositório são dele. Need for Speed 2015 rodou 10.920 quadros sem uma falha de redimensionamento. God of War 2018 está em teste agora.

Aqui é um slider de comparação do ETS2 na NVIDIA e na AMD no nosso projeto.

https://www.diffchecker.com/image-compare/QYk5zGtI/

E aqui no GOW2

https://www.diffchecker.com/image-compare/MABpPB8o/

Acima, God of War II na mesma cena, com o Neural Rendering ligado nos dois lados. À esquerda a minha rota, numa RX 9070 XT. À direita a implementação original da NVIDIA. É a mesma rede, o mesmo efeito, e é isso que eu queria: não ganhar da NVIDIA, chegar perto o bastante pra que ter uma Radeon deixe de ser motivo pra ficar de fora.

Vídeo, pra quem quiser ver antes de acreditar:

O add-on mede ele mesmo e joga os números no log. PCSX2, God of War, back buffer 1920x1080, escala 0.50, um passe:

  • Entrada da rede, média absoluta: 0.0207
  • Correção, média: 0.0115
  • Correção, máxima: 0.792
  • Custo por avaliação: 15 a 16 ms
  • Quadros com correção nova: 3932 de 3960

Eu insisto nessa medição porque "a rede não tá fazendo nada" e "a rede tá funcionando e a minha composição tá comendo o resultado" são a mesma coisa olhando da poltrona, e o conserto de um não tem nada a ver com o do outro. Sem número é chute.

Por que Direct3D 11

Quase todo add-on de DLSS 5 mira D3D12. Esse aqui mira D3D11 primeiro, e foi escolha, não limitação.

No D3D12 um add-on enxerga só o swapchain, que é a imagem final e mais nada. A rede recebe cor e adivinha o resto. No D3D11 a profundidade e os vetores de movimento do próprio jogo chegam até a rede, então ela sabe onde cada pixel estava no quadro anterior em vez de inventar.

Isso abre emulador, que é onde eu mais queria chegar. PCSX2 e RPCS3 nenhuma ferramenta de NVIDIA alcança, e é onde a técnica tem mais o que fazer, já que a imagem original é de baixa resolução por natureza.

Vulkan vem no próximo update

A rota Vulkan está escrita e é o que vem no próximo update. Não é promessa de vaquinha, é código que já está no branch, com umas 900 linhas só na travessia.

O caminho é o contrário do D3D11. Handle exportado do Vulkan é memória opaca e o D3D12 não consegue abrir, então a direção inverte: as texturas e os fences nascem no nosso device D3D12, saem como handle NT e são importados no VkDevice do host como VkImage. Não é preferência, é o único lado que funciona.

Antes de escrever isso eu conferi se o driver aceitava. São dois programas que estão no repositório, o vkprobe e o vkbridge: um pergunta pro driver Vulkan da AMD, formato por formato, se ele importa textura e fence vindos do D3D12, e o outro atravessa bytes conhecidos nos dois sentidos pra ver se chegam inteiros. Na 9070 XT os dois passam, e todo formato que o add-on carrega sobrevive byte por byte. De quebra apareceu que o tipo de handle D3D12_HEAP não é suportado nesse driver enquanto o D3D12_RESOURCE é, ou seja, não era escolha livre e escolher errado teria queimado dias.

Com Vulkan de pé entra o RPCS3, que é o emulador de PS3, e jogo Vulkan nativo.

D3D12, e o que vem depois disso

Pra cobrir D3D12 direito eu não pretendo reescrever do zero. O Matheus já tinha feito um port da rede pra AMD por cima do OptiScaler, que é onde o lado D3D12 já está resolvido. Ele encerrou o projeto dele e deixou o código no ar:

https://github.com/MatheusGViana/dlss-5-amd-project

A ideia é juntar os dois trabalhos. Só que isso não é o próximo update, é uns três à frente, porque antes tem conta pra pagar aqui: o travamento que aparece com mais de um passe nunca foi confirmado como resolvido, o campo de exposição do pacote de entrada da rede continua sendo entregue vazio, e o conteúdo dos guias de profundidade e movimento eu só medi em menu, nunca em gameplay de verdade. Botar mais superfície em cima disso agora só espalha o problema.

Quatro dias

O repositório tem 61 commits e umas 10.000 linhas de C++ e HLSL em seis módulos, escritos e depurados em quatro dias de trabalho concentrado. O grosso do histórico cabe em pouco mais de 36 horas de relógio.

Falo do prazo porque ele veio de um jeito de trabalhar, não de correria. Toda decisão do código é medida antes de ser tomada, e quando não deu pra medir isso fica escrito, no comentário do código e na interface. Quem abre o add-on vê uma etiqueta de "medido", "rastreado" ou "desconhecido" do lado de cada controle. Não tem número mágico escondido em lugar nenhum.

Exemplo dessa semana. Com mais de um passe o resultado saía saturado demais. Eu achava que era a contagem de passes, mas era a composição: a correção era somada canal por canal e depois cortada canal por canal, e canal cortado vira rotação de matiz. Troquei por composição por razão. Está tudo escrito no repositório, inclusive as tentativas que não deram certo.

Sobre a desconfiança que vem junto

Quatro dias e dez mil linhas é o tipo de número que hoje faz o pessoal torcer o nariz, e com razão: tem muita coisa sendo gerada e despejada por aí sem ninguém ter olhado. Slop, como chamam. Então eu prefiro responder antes de perguntarem.

Aqui não entra linha que ninguém conferiu. Toda decisão tem uma medição atrás, e a que não tem fica escrita como não tendo, no comentário do código e na tela do add-on. Essa parte não tem como terceirizar: alguém precisa abrir o jogo, rodar a cena, ler o log e decidir se o número faz sentido, e depois voltar e mexer no que o número mostrou. É aí que vai a maior parte do tempo, e é a parte que é minha.

Você não precisa acreditar em mim, dá pra conferir:

  • No add-on, cada controle tem do lado uma etiqueta de "medido", "rastreado" ou "desconhecido"
  • No log, o add-on mede a própria correção e imprime o número. Foi assim que eu descobri que a saturação vinha da composição e não da contagem de passes
  • No CHANGELOG tem uma seção só pro que ainda não funciona e pro que ainda não foi medido
  • No histórico tem commit desfazendo ideia minha que a medição derrubou. O último foi hoje: eu tinha feito a trava de realce crescer junto com a contagem de passes, aí li 254 linhas de log de máquinas com RTX e todas diziam o contrário. Voltei atrás

Onde vai o dinheiro

Antes da lista, a parte que importa mais: o add-on é de graça e vai continuar de graça. Não existe versão paga e não vai existir. A vaquinha paga o tempo de trabalho pra isso continuar sendo feito, e é só isso.

Meta: R$ 7.000

  • Assinaturas de desenvolvimento, dois planos, 4 meses: R$ 5.600
  • Horas de máquina com GPU NVIDIA RTX 40 ou 50 na nuvem: R$ 900
  • Taxa da plataforma e transferência, uns 7%: R$ 500

Sobre a maior linha eu quero ser específico, porque ela é 80% do pedido. Eu trabalho com modelagem 3D e já pago assinatura pro meu trabalho. Os tokens que sobram no fim do mês são os que eu venho gastando aqui. Esse projeto anda com a sobra de outra coisa, e quando o trabalho aperta ele para no meio.

São dois planos porque não sou só eu. O Storm entrou pra ajudar e o segundo plano é dele. É isso que separa o projeto de continuar sendo hobby de madrugada.

As horas de RTX são pra comparar lado a lado contra a implementação original da NVIDIA. Hoje eu dependo de pedir log emprestado pra estranho na internet, e tem pergunta que só a comparação direta responde. Uma RTX 30 não serve: com Neural Rendering ligada ela fica perto de 1 FPS, então a medida de custo que sai dela não vale nada.

A taxa da plataforma eu botei na conta em vez de esconder.

Passando da meta, o excedente vira mais hora de RTX e mais mês de assinatura, nessa ordem. Ficando abaixo, a prioridade é a ordem da lista, de cima pra baixo.

O que muda pra quem contribuir

Duas coisas. Tag de apoiador no Discord do projeto, e acesso às builds de pre-release, que são as que estão em teste antes de virar release.

Discord oficial do projeto: https://discord.gg/Dn4WY7waAB

O que não muda é o resto. O add-on é MIT, continua de graça, e tudo que aparece numa pre-release sai depois na versão pública, pra qualquer um, sem pagar nada. Pre-release é ver antes e ajudar a testar, não é recurso trancado.

Se ninguém contribuir eu continuo, mais devagar, e sem conseguir responder o que exige uma placa que eu não tenho.

Sobre transparência: o CHANGELOG do repositório tem uma seção chamada "Known, and not fixed", onde eu listo o que ainda não funciona e o que ainda não foi medido. Ela vai continuar lá.

Agradecimentos

Ao T-Rocha Hard Tec, pelo apoio ao projeto e pela divulgação. Coisa de nicho de AMD não chega em ninguém sozinha, e foi por ali que muita gente ficou sabendo que isso existe e voltou com relato:

https://www.youtube.com/@TRochaHardTec

Ao Storm, que entrou pra ajudar no projeto.

E a quem testou e mandou log de jogo que eu não tenho aqui pra rodar.

Links

Licença MIT. Feito por cLohan.

Você também pode contribuir via Pix usando a chave: 6328742@vakinha.com.br
Denunciar essa vaquinha
AVISO LEGAL: O texto e as imagens incluídos nessa página são de única e exclusiva responsabilidade do criador da vaquinha e não representam a opinião ou endosso da plataforma Vakinha.
Arrecadado
R$ 3.135,01
de R$ 7.000,00
Corações Recebidos
20
Apoiadores3
Outras histórias também precisam de você!