Rencontrez le moddeur qui a piraté la nouvelle technologie de mise à l’échelle d’AMD dans Cyberpunk 2077

Rencontrez le moddeur qui a piraté la nouvelle technologie de mise à l’échelle d’AMD dans Cyberpunk 2077

Plus tôt cette semaine, la nouvelle d’un moddeur qui a piraté la technologie de mise à l’échelle temporelle FSR 2.0 d’AMD dans Cyberpunk 2077, permettant aux utilisateurs de cartes graphiques non RTX de jouer au jeu à des fréquences d’images plus élevées avec une qualité visuelle nettement meilleure qu’avec la mise à l’échelle FSR 1.0. C’est énorme pour les propriétaires de GPU AMD, et le mod fonctionne même parfaitement sur Steam Deck.

Nous avons rencontré le créateur du mod, le brillamment nommé PotatoOfDoom1337, pour savoir exactement comment cela fonctionne – et si cela signifie que FSR 2.0 sera bientôt disponible dans une tonne de jeux existants. Voici l’interview, légèrement modifiée pour plus de clarté. Prendre plaisir!

L’introduction d’Alex Battaglia sur FSR 2.0 présente la fonctionnalité de God of War, l’un des trois jeux FSR 2.0 sortis.

Quelle est votre expérience en programmation et en modding de jeux ? Sur NexusMods, il semble que vous ne fassiez des mods que depuis avril dernier ?

PotatoOfDoom: J’étudie l’informatique, j’ai toujours été intéressé par l’aspect technique des jeux vidéo et j’ai été fasciné lorsque j’ai découvert des projets comme Reshade, Special K ou DXVK. Je considère la programmation comme mon passe-temps favori et j’aime aussi l’ingénierie inverse et jouer beaucoup avec le code. J’ai créé mon premier mod Cyberpunk 2077 car le CDPR a corrigé un bug très amusant dans le jeu. Cela m’a tellement ennuyé que j’ai téléchargé les outils de développement et réimplémenté le bogue moi-même. Le processus de création de ce mod m’a rendu accro, j’en ai appris davantage sur le jeu au fil du temps et j’ai commencé à créer des mods plus complexes.

Qu’est-ce qui vous a motivé à essayer de pirater FSR 2.0 dans Cyberpunk 2077 ?

PotatoOfDoom: Principalement ma GTX 1080 vieillissante, une certaine envie envers les utilisateurs de RTX en raison de leur technologie DLSS exclusive, et une curiosité sur le fonctionnement des solutions de mise à l’échelle temporaire en général. De plus, FSR 2.0 et DLSS ont été décrits comme très similaires, donc je voulais juste voir si c’était possible.

Comment avez-vous développé le mod ?

PotatoOfDoom: J’ai commencé le mod il y a quelques semaines en prévision de la sortie open source FSR 2.0. Les premières étapes consistaient à faire en sorte que le jeu parle à mon fichier .dll personnalisé et à dire au jeu qu’il prend en charge DLSS et à signaler les résolutions DLSS disponibles au jeu en implémentant les interfaces nécessaires. Ensuite, j’ai écrit un petit shader qui montre juste une image rouge vierge. Mon objectif était de l’utiliser comme base pour vérifier que les parties DirectX de mon code fonctionnaient correctement. Ensuite, j’ai juste attendu la version open source. Après qu’AMD ait publié le code source, j’ai immédiatement remplacé mon code de test par FSR 2.0. Je m’attendais à y travailler pendant plusieurs jours, mais j’ai été agréablement surpris qu’il ne m’ait fallu que quelques heures pour l’intégrer. J’ai utilisé des débogueurs comme x64dbg et des logiciels de rétro-ingénierie comme IDA et Ghidra pour trouver les spécificités du comportement DLSS dans le code du jeu. RenderDoc a également été incroyablement utile pour déboguer les tampons.

See also  UAH, le FBI met en garde les étudiants contre l'escroquerie «d'extorsion».

Veuillez activer JavaScript pour utiliser nos outils de comparaison.

Voici à quoi ressemble le mod en action dans Cyberpunk 2077 et Dying Light 2, par rapport à DLSS, FSR 1.0 et 4K natif.

Y a-t-il eu des surprises en termes de choses plus difficiles ou plus faciles à réaliser ?

PotatoOfDoom: Les principaux tampons d’entrée pour DLSS et FSR sont les mêmes. J’ai simplement copié l’intégration FSR de l’exemple AMD, défini les valeurs FoV/Depth, lancé le jeu et obtenu immédiatement une image assez correcte. Le pire était une bizarrerie dans Cyberpunk où le jeu ne réinitialisait pas une structure DirectX spéciale (ComputeRootSignature) après avoir exécuté DLSS. Ce n’est pas si important pour le DLSS de Nvidia puisqu’il utilise CUDA, mais malheureusement FSR utilise des shaders informatiques DirectX réguliers, qui cassent le jeu. J’ai donc dû trouver un moyen de récupérer cette structure après avoir exécuté FSR.

Concernant l’implémentation de FSR 2.0 CP2077, qu’est-ce qui fonctionne bien actuellement et qu’est-ce qui doit être corrigé ?

PotatoOfDoom: Les textures fantômes et animées sont les plus gros problèmes en ce moment. DLSS et FSR utilisent des masques séparés pour donner à l’algorithme des indices pour réutiliser l’ancien matériel temporel ou le jeter, mais ils ne semblent pas être compatibles et j’ai besoin de créer un shader qui traduit les masques DLSS en masques FSR.

Les masques DLSS et FSR… sont-ils similaires à un masque Photoshop ?

PotatoOfDoom: Oui, essentiellement comme ça. Vous pouvez les imaginer comme une image en niveaux de gris avec des valeurs de 0,0 à 1,0, et l’upscaler temporel reprojette les anciennes images en fonction de ces valeurs. La documentation FSR aborde cela plus en détail.

Voici un exemple visuel. J’ai lancé une grenade incendiaire dans la rue et comme vous pouvez le voir, il n’y a rien dans les vecteurs de mouvement ou dans le tampon de profondeur. C’est parce que ni la texture de feu 2D ni les particules d’étincelles n’ont de représentation 3D dans le jeu. Pour s’assurer que les petites étincelles ne provoquent pas de traces laides, elles sont masquées dans InputBiasColorMask afin que l’algorithme de reprojection ignore ces pixels et ne reprojette rien à cet endroit.

FSR 2.0 et DLSS ont-ils des exigences similaires en termes d’entrées dont ils ont besoin ?

PotatoOfDoom: Oui, sinon ce mod ne serait pas possible. Les deux intégrations ont besoin de couleur, de vecteurs de mouvement et d’un tampon de profondeur en entrée. De plus, ils utilisent les masques que j’ai mentionnés plus tôt. Ils sont très importants pour les choses qui n’ont pas de vecteurs de mouvement, comme les particules ou les textures animées comme la fumée et les écrans d’ordinateur dans le jeu, et les masques incorrects sont la principale raison pour laquelle les fantômes apparaissent dans un jeu. Le FSR doit également connaître le FOV et les plans proches et éloignés du tampon de profondeur. DLSS n’a pas besoin de ces informations supplémentaires (je suppose qu’il le comprend via l’algorithme ML intégré).

See also  I used a penny-a-day hack to save more than £650 - it saved Christmas and you can too

Avec ce que vous savez maintenant, serait-il facile de développer une solution similaire pour d’autres jeux DLSS ?

PotatoOfDoom: Oui, je pense que oui. Je n’ai toujours pas terminé celui-ci, mais si d’autres jeux sont similaires cela ne devrait pas vraiment prendre plus de quelques jours par partie. J’ai déjà fait quelques tests initiaux avec Death Stranding et les premiers résultats semblent très bons.

Par exemple, FSR 2.0 peut-il être ajouté à Control, un jeu connu pour fonctionner extrêmement mal sur les GPU AMD, même avec RT désactivé ?

PotatoOfDoom: Oui, je pense que oui. Le contrôleur a été mis à jour vers DLSS 2.0, ce qui signifie que l’interface DLSS avec laquelle le jeu communique est la même ou du moins très similaire à Cyberpunk. C’est la partie la plus importante.

Compte tenu de l’intérêt massif du public pour le mod, quels sont vos projets pour l’avenir ? Seriez-vous ouvert à d’autres développeurs rejoignant le projet pour améliorer les résultats, ou implémenter des mods similaires pour d’autres jeux ?

PotatoOfDoom: Je ne m’attendais pas vraiment à autant d’intérêt pour mon mod, et si j’avais su, j’aurais préparé un peu plus quand j’ai appuyé sur le bouton de publication jeudi dernier. Je veux d’abord terminer Cyberpunk (si les vrais développeurs ne sont pas plus rapides que moi XD) puis passer à d’autres jeux DLSS. Et oui, bien sûr, j’aimerais que d’autres développeurs se joignent à moi et m’aident à sortir ce projet de l’étape de preuve de concept plus rapidement et en quelque chose que les gens peuvent utiliser. J’ai entendu dire qu’il y a déjà des gens qui veulent porter mon mod sur Red Dead Redemption 2.

L'image officielle du mod est un chef-d'œuvre de Photoshop - wow, de tels graphismes.
Wow, ces graphismes. L’image officielle du mod est un chef-d’œuvre.

Serait-il possible de créer un remplacement DLSS qui fonctionne sur une gamme de jeux (“dlss2fsr”, comme suggéré par un utilisateur de Github) ou voyez-vous qu’il s’agit plutôt d’une série de mods chacun adapté à un jeu donné ?

PotatoOfDoom: Seulement avec quelques compromis. Il serait possible de faire une sorte de mod qui récupère les valeurs FoV et Depth à partir d’un simple fichier ini. Ce mod peut fonctionner pour presque tous les jeux DLSS, mais la qualité de l’image peut ne pas être aussi bonne qu’elle pourrait l’être. Je veux dire que même Nvidia optimise DLSS pour certains jeux. Par exemple, les premières versions de DLSS avaient de terribles images fantômes dans Cyberpunk, tandis que les mises à jour ultérieures de DLSS ont amélioré la situation. Je ne peux pas parler pour les autres jeux, mais par exemple, Cyberpunk envoie accidentellement le tampon d’ID d’objet à DLSS (qui est un tampon qui attribue une valeur de couleur unique à chaque objet de la scène). DLSS n’a pas besoin de ce tampon et ne peut rien faire avec ces informations, mais cela me permet d’améliorer considérablement l’anti-ghosting (surtout lors de la conduite). De plus, le bogue ComputeRootSignature que j’ai mentionné plus tôt est unique à Cyberpunk et rend cette version du mod FSR incompatible avec d’autres jeux. Chaque jeu a des bizarreries uniques ou même des bugs qui rendent important l’optimisation de chaque jeu pour la meilleure expérience. Évidemment, je ne peux pas faire quelque chose comme ça pour chaque jeu, mais je pense que s’il existe une sorte de framework DLSS2FSR, il devrait être possible pour d’autres développeurs ayant une certaine expérience en programmation d’intégrer et d’optimiser facilement FSR pour d’autres jeux DLSS.

See also  Desperate, attention-seeking, fourth-rate hack begs Celtic fans to "hit it."

Avez-vous autre chose à partager sur le processus de création du mod ou que vous voulez que les gens sachent ?

PotatoOfDoom: Je pense que mes réponses ci-dessus devraient couvrir tout ce qui concerne le mod pour l’instant. Ce mod n’a que quelques jours et est déjà si bien reçu. Je suis sûr que nous verrons beaucoup de développements passionnants dans les semaines à venir. Restez à l’écoute pour plus.

Des trucs passionnants en effet! Depuis que cette interview a eu lieu, un autre contributeur de l’ID de mnxn a adapté le mod pour Dying Light 2, et je m’attends à voir beaucoup plus de jeux supportés dans les prochaines semaines si tout se passe bien. Merci à PotatoOfDoom d’avoir pris le temps de créer le mod et de nous parler !

Si vous souhaitez essayer le mod par vous-même, vous pouvez le trouver sur NexusMods. L’installation est assez simple – remplacez quelques fichiers dans votre répertoire CP2077 et modifiez le registre. Vous pouvez également suivre la progression du mod sur le référentiel GitHub de PotatoOfDoom.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *