histats

Découvrez le mod qui a piraté la nouvelle technologie de mise à l’échelle d’AMD dans Cyberpunk 2077

Découvrez le mod 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 mode fonctionne même à merveille sur Steam Deck.

Nous avons contacté le créateur de mode, 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, facilement modifiable par souci de clarté. Prendre plaisir!

L’introduction d’Alex Battaglia sur FSR 2.0 montre 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 ? Chez NexusMods, il semble que vous ne fassiez des mods que depuis avril de l’année dernière ?

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 le fait de 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é l’erreur 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, un peu jalouse des utilisateurs de RTX en raison de leur technologie DLSS exclusive, et de la 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 mûri ?

PotatoOfDoom: J’ai commencé à mûrir 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 ombrage qui ne montre qu’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 à travailler dessus 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 développement inverse comme IDA et Ghidra pour trouver les spécifications du comportement DLSS dans le code du jeu. RenderDoc a également été incroyablement utile pour déboguer les tampons.

See also  Nous avons besoin d'un nouveau jeu Star Wars qui a l'air aussi cool qu'Andor

Activez JavaScript pour utiliser nos outils de comparaison.

C’est ainsi que la maturité semble 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 étant donné que les choses étaient plus difficiles ou plus faciles à réaliser ?

PotatoOfDoom: Les principaux tampons d’entrée pour DLSS et FSR sont les mêmes. J’ai vraiment juste 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 décente. Le pire était une bizarrerie dans Cyberpunk où le jeu ne réinitialisait pas une structure DirectX particulière (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 ombres de données DirectX régulières, qui cassent le jeu. J’ai donc dû trouver un moyen de restaurer cette structure après avoir exécuté FSR.

Concernant l’implémentation de FSR 2.0 CP2077, qu’est-ce qui fonctionne bien pour le moment 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 tous deux des masques séparés pour donner à l’algorithme des indices sur la réutilisation du matériel ancien ou son élimination, mais ils ne semblent pas être compatibles et je dois créer un ombrage qui traduit les masques DLSS en masques FSR.

Les masques DLSS et FSR… ressemblent-ils à 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 reproduit les anciennes images en fonction de ces valeurs. La documentation FSR donne plus de détails à ce sujet.

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. En effet, 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 pistes laides, elles sont masquées dans InputBiasColorMask afin que l’algorithme de reproduction ignore ces pixels et ne reproduise rien à cet endroit.

FSR 2.0 et DLSS ont-ils des exigences similaires quant aux entrées dont ils ont besoin ?

See also  La chaîne YouTube de Twitch Streamer Super a été piratée

PotatoOfDoom: Oui, sinon cette maturité 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 éléments qui n’ont pas de vecteurs de mouvement, tels que les particules ou les textures animées telles que la fumée et les écrans d’ordinateur dans le jeu, et les masques mal appliqués 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 découvre via l’algorithme ML intégré).

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 fini avec celui-ci, mais si d’autres jeux sont pareils, cela ne devrait pas vraiment prendre plus de quelques jours par match. J’ai déjà fait quelques premiers tests avec Death Stranding, et les premiers résultats s’annoncent 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. Le contrôle 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 la maturité, quels sont vos plans pour l’avenir ? Seriez-vous ouvert à ce que d’autres développeurs rejoignent le projet pour améliorer les résultats ou implémentent des mods similaires pour d’autres jeux ?

PotatoOfDoom: Je ne m’attendais pas vraiment à beaucoup d’intérêt pour mon courage, et si j’avais su, j’aurais préparé un peu plus quand j’ai appuyé sur le bouton publier 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 faire quelque chose que les gens peuvent utiliser. J’ai entendu dire qu’il y en a déjà qui veulent transférer mon courage à Red Dead Redemption 2.

L'image officielle de la mode est un chef-d'œuvre de Photoshop - wow, donc graphique.
Wow, donc les graphismes. L’image officielle de la mode est un chef-d’œuvre.

Sera-t-il possible de créer un remplacement DLSS qui fonctionne sur une série 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é ?

See also  Rencontrez les moddeurs de Nier Automata qui recréent leur mystérieuse église secrète alors que leur communauté explose

PotatoOfDoom: Seulement avec quelques compromis. Il serait possible de créer une sorte de mod qui récupère les valeurs FoV et Depth à partir d’un simple fichier ini. Ce mode 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 par inadvertance le tampon d’ID d’objet à DLSS (qui est un tampon qui attribue une seule valeur de couleur à chaque objet de la scène). DLSS n’a pas besoin de ce buffer et ne peut rien faire avec ces informations, mais cela me permet d’améliorer énormément l’anti-ghosting (surtout quand je conduis). De plus, le bogue ComputeRootSignature que j’ai mentionné plus tôt est unique à Cyberpunk et rend cette version du mode FSR incompatible avec d’autres jeux. Chaque jeu a des particularités uniques ou même des défauts qui rendent important d’optimiser chaque jeu pour obtenir la meilleure expérience. Bien sûr, je ne peux pas faire une telle chose 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.

Y a-t-il autre chose que vous voudriez partager sur le processus de maturation ou que vous voudriez que les gens sachent ?

PotatoOfDoom: Je pense que mes réponses ci-dessus devraient couvrir tout ce qui concerne la maturité pour l’instant. Cette mature n’a que quelques jours et est déjà si bien accueillie. 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 mnxn’s ID a adapté la maturité de Dying Light 2, et je m’attends à voir beaucoup plus de jeux pris en charge au cours des 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 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 l’évolution de la mode sur le dépôt GitHub de PotatoOfDooms.

You may also like...

Leave a Reply

Your email address will not be published.