Les fonctionnalités d’Unreal Engine 5.2 analysées est-ce la réponse au #StutterStruggle ?

Analyse des fonctionnalités d'Unreal Engine 5.2 la réponse au #StutterStruggle ?

Près de trois ans après la première révélation d’Unreal Engine 5, nous sommes sur le point de voir sortir les premiers jeux majeurs utilisant l’UE5, dont Immortals of Aveum, The Lords of the Fallen et Stalker 2: Heart of Chernobyl. Avec la sortie de l’Unreal Engine 5.2, il semble temps de jeter un nouveau coup d’œil aux nouvelles fonctionnalités ajoutées dans la dernière révision et à la manière dont ces ajouts vont colorer les jeux du futur – y compris les titres des développeurs qui avaient auparavant construit leurs propres moteurs comme CD Projekt Red et Crystal Dynamics.

La génération procédurale est l’ajout phare de l’UE5.2, comme nous l’avons vu avec la démo Electric Dreams en mars. Si vous vous en souvenez, les espaces présentés dans la révélation originale de l’Unreal Engine 5 avec Lumen in the Land of Nanite et Valley of the Ancient ont été construits d’une manière très particulière. Les artistes ont placé manuellement et arrangé chaque élément de l’environnement à partir d’éléments préfabriqués, passant souvent du temps à copier-coller ces éléments avec des rotations et des changements d’échelle pour créer les environnements rocheux peu peuplés que l’on trouve dans ces démos. Bien que cette technique puisse être efficace pour construire des projets à plus petite échelle comme ces démonstrations, ce genre de “kit bashing”, comme on l’appelle, est peut-être impraticable pour une véritable production de jeu vidéo. Cela demande beaucoup de travail manuel et limite également du côté du moteur, car le chevauchement inutile de nombreux maillages affecte les performances du ray tracing Lumen accéléré par matériel.

Dans la démo Matrix Awakens, Epic a présenté un outil procédural pour peupler les environnements urbains, mais avec la version 5.2, ils ont également mis au point un autre système pour les environnements naturels en extérieur, comme celui que l’on voit dans la démo Electric Dreams. Ici, Nanite est utilisé non seulement pour les objets opaques comme les rochers, mais aussi pour les objets comme les feuilles et les buissons qui utilisent des transparences à masque alpha. D’après mon premier contact avec la démo et l’éditeur lui-même, cette technique semble efficace pour générer des environnements convaincants de haute qualité à partir d’un nombre limité d’éléments et avec peu d’intervention artistique. Cela devrait faciliter le peuplement de vastes mondes avec une quantité convaincante de détails, Nanite fournissant les détails requis.

Certaines différences sont mieux montrées visuellement – alors nous avons réalisé cette présentation vidéo rien que pour vous. Regardez sur YouTube

Un autre effet secondaire positif de cette méthode de placement plus systémique se manifeste en termes de performances, où Lumen accéléré par matériel peut maintenant fonctionner de manière mesurable mieux en utilisant ses paramètres épiques par défaut. Dans un exemple, j’ai mesuré une amélioration du taux de trame de 14 % par rapport à Lumen logiciel à la même résolution, tout en offrant une augmentation notable des détails de réflexion – permettant d’afficher les feuilles individuelles par opposition à des taches plus amorphes dans la version logicielle. La qualité de l’éclairage diffus est également améliorée dans l’implémentation matérielle, car la solution logicielle avait tendance à assombrir excessivement les zones d’ombre. Il s’agit d’une amélioration solide par rapport aux environnements basés sur des kits comme Valley of the Ancient, où Lumen matériel fonctionnait beaucoup moins bien, le rendant essentiellement inutilisable malgré sa qualité supérieure.

Bien que cela soit impressionnant, il est important de noter que ces généralisations ont tendance à être vraies lorsque le GPU est limité, mais des scénarios limités par le CPU peuvent donner des résultats différents. Par exemple, en exécutant la démo UE5.2 à une résolution inférieure, Lumen logiciel offre une augmentation de performances de 10 % non négligeable par rapport à Lumen matériel. Les exigences en termes de CPU sont également susceptibles d’être élevées, car même avec un Core i9 12900K et de la RAM DDR5 6400MT/s, la démo tourne à un peu plus de 60 images par seconde en moyenne. Lorsque l’on traverse le monde à une vitesse plus élevée, la démo devient de plus en plus limitée par le CPU et les performances en souffrent – et des saccades se produisent – en conséquence.

Fait intéressant, malgré le fait d’être un moteur moderne, l’UE5 ne semble pas encore bien s’adapter aux processeurs avec des nombres de cœurs et de threads plus élevés – ce qui rappelle les résultats de l’année dernière. Par exemple, passer de six à huit cœurs sur le 12900K n’augmente les performances limitées par le CPU que de six pour cent, tandis que l’activation de l’hyper-threading augmente les performances de quatre pour cent supplémentaires dans cette séquence de test. Activer huit cœurs supplémentaires plus efficaces n’améliore pas non plus les taux de rafraîchissement.

Après six cœurs/threads, l’UE5 n’exhibe pas une augmentation de performances significative – les processeurs modernes restent donc inexploités.

Étant donné à quel point l’UE5 semble susceptible de devenir courant au cours des prochaines années, c’est un peu décevant – d’autant plus que le nombre moyen de cœurs de CPU continue d’augmenter. Pour donner un contexte, dans Cyberpunk 2077, nous constatons une augmentation de 88 % du taux de rafraîchissement en passant de quatre à 16 cœurs sur le 12900K, tandis que dans la démo Electric Dreams, nous ne constatons qu’une amélioration de 30 %. Sur cette base, l’UE5 a encore beaucoup de marge de progression pour tirer parti des processeurs multi-thread modernes.

Si vous disposez d’une carte graphique Ada Lovelace (série Nvidia RTX 40), la génération de trames DLSS 3 peut être une contremesure efficace et facile à mettre en œuvre pour les développeurs, en ne nécessitant que 11 clics au total après avoir trouvé le plugin sur le marché de l’Unreal Engine. Avec cette fonctionnalité activée, j’ai mesuré une amélioration de 97 % du taux de rafraîchissement dans ce scénario limité par le processeur. Je pense que cela rend le DLSS3 (et les équivalents futurs d’AMD et d’Intel) incontournable pour les développeurs créant des jeux avec l’UE5.

Une autre mise à jour majeure des performances dans l’UE5.2 concerne l’amélioration du comportement de compilation des shaders, ce qui est un sujet constant de préoccupation pour moi, comme le savent les lecteurs réguliers. La seule façon pour les développeurs d’éviter les saccades lors de la compilation des shaders dans l’UE4 et l’UE5.0 est de fournir une étape de pré-compilation avant le démarrage du jeu. Cette fonctionnalité est disponible dans quelques titres de l’UE4, mais elle nécessite que les développeurs jouent méthodiquement au jeu pour constituer une bibliothèque complète de tous les shaders rencontrés par les joueurs, et si quelque chose est manqué, des saccades se produisent toujours.

Le logiciel Lumen peut parfois être trop sombre par rapport à la version matérielle, comme on peut le voir sur cette capture d’écran.

Avec l’UE 5.1 et une mise à jour correspondante de Fortnite, Epic a ajouté un schéma de compilation asynchrone des shaders qui fonctionnait en temps réel, pré-compilant les shaders en arrière-plan sur le processeur pendant le jeu pour éviter les saccades. Cette technique n’est pas tout à fait parfaite, car si un shader devait être dessiné mais n’était pas prêt, le jeu aurait des saccades. Dans l’UE5.2, ce système asynchrone est plus précis et ajoute également la possibilité pour le développeur de retarder l’affichage du shader jusqu’à ce qu’il soit entièrement compilé, éliminant ainsi potentiellement toutes les saccades liées aux shaders – mais avec la possibilité qu’un effet visuel ou un matériau puisse être affiché un peu plus tard que prévu.

Cette amélioration de la mise en cache asynchrone des shaders et la nouvelle fonctionnalité skipdraw de la version 5.2 ont un effet transformateur selon mes tests, éliminant les plus grandes saccades (~500 ms) et améliorant considérablement la fluidité. Cependant, cela n’élimine pas complètement les saccades, certaines persistant avec des exemples de 30 à 50 ms qui ne sont pas trouvés dans un cache complètement “chaud”. Certaines de ces saccades peuvent être attribuées aux saccades de traversée, que l’UE5 a héritées de l’UE4 et qui sont encore présentes dans la dernière version de Fortnite utilisant Unreal Engine 5.2.

En ce qui concerne les saccades, Unreal Engine 5.2 est certainement une amélioration – mais les saccades de traversée nécessitent encore du travail et même le nouveau système de mise en cache asynchrone des shaders n’est pas une solution miracle sur laquelle les développeurs peuvent se fier entièrement pour offrir une expérience de jeu fluide. Tout d’abord, il ne semble pas être activé par défaut, ce que certains développeurs pourraient manquer, et deuxièmement, il produit quelques saccades qui sont résolues par la méthode de mise en cache des shaders plus traditionnelle. Par conséquent, il est probablement judicieux de combiner ce nouveau système asynchrone avec l’ancien système de pré-mise en cache hors ligne pour obtenir l’expérience la plus fluide sur PC.

Il sera fascinant de voir comment ces deux nouvelles fonctionnalités de l’Unreal Engine 5.2 seront déployées dans les jeux tiers commercialisés, d’Immortals of Aveum en août à The Lords of the Fallen en octobre et Stalker 2 en décembre. 2023 n’a pas encore pris la forme de l’année que j’espérais pour les jeux PC – mais il est encore temps que cela change, et UE5.2 pourrait jouer un rôle clé.