Les développeurs d’Unreal Engine proposent une solution contre le latence des shaders dans les jeux

Les Développeurs D'unreal Engine Proposent Une Solution Contre Le Latence

Epic Games s’attaque aux problèmes de performances graphiques sous Unreal Engine, notamment le stuttering lié à la compilation des shaders. Grâce à un nouveau système de pré-cachage des objets d’état de pipeline (PSO), les développeurs visent une expérience de jeu fluide en réduisant les pauses indésirables lors du rendu des graphismes complexes.

Unreal Engine est l’une des solutions middleware les plus populaires pour le développement de jeux et d’autres expériences interactives, notamment sur PC et Mac. Créé par Epic Games, il est également connu pour ses problèmes de saccades et de performances graphiques. Cependant, les développeurs travaillent activement à résoudre ces problèmes une bonne fois pour toutes.

Si vous avez joué à un jeu sorti ces dernières années, vous connaissez probablement l’expérience frustrante de la saccade due à la compilation des shaders. Les shaders sont de petits programmes exécutés directement par le GPU pour gérer diverses tâches nécessaires au rendu de graphismes 3D complexes et riches en fonctionnalités. Lorsque le moteur de rendu doit compiler un nouveau shader juste avant de dessiner une scène à l’écran, tout s’arrête pendant que le pilote GPU termine la tâche, entraînant l’effet de saccade notoire dont souffrent de nombreux jeux modernes.

La saccade due aux shaders est devenue si répandue qu’Epic Games travaille désormais à éliminer ce fléau multi-plateforme des graphismes en temps réel. Les développeurs travaillant sur Unreal Engine ont récemment expliqué l’importance de la compilation des shaders et les causes profondes de la saccade. Kenzo ter Elst, Daniele Vettorel et d’autres ingénieurs d’Epic Games ont développé un nouveau système appelé pré-caching PSO, qui, en théorie, pourrait rendre la saccade liée aux shaders obsolète.

Les objets d’état de pipeline (PSO) sont une méthode utilisée par les GPU modernes pour regrouper les shaders et les autres paramètres graphiques pour une demande de dessin en une seule « unité », ont expliqué les développeurs d’Epic, permettant ainsi de les exécuter plus efficacement. Ces PSO peuvent être construits à tout moment et, en théorie, exploités pour optimiser la compilation des shaders, empêchant ainsi les saccades pendant le rendu.

Les developpeurs dUnreal Engine proposent une solution contre le latence

Avant Unreal Engine 5.2, Epic recommandait aux développeurs de regrouper les PSO les plus courants dans un cache, permettant aux jeux de précompiler la plupart du code des shaders pendant les écrans de chargement. Cependant, la conversion du bytecode des shaders en code binaire spécifique au GPU reste exigeante en ressources, et le cache nécessite souvent des mises à jour fréquentes dans les environnements en constante évolution des jeux modernes.

Selon les développeurs d’Unreal Engine, le pré-caching PSO pourrait éliminer les saccades causées par ce problème. Le moteur analyserait un objet récemment chargé et sélectionnerait un « sous-ensemble » spécifique de tous les PSO possibles nécessaires à son rendu. Bien que ce sous-ensemble soit encore plus grand que les PSO réellement utilisés pour le rendu, il serait beaucoup plus petit que les millions de combinaisons possible de rendu.

Avec le pré-caching PSO, la précompilation serait considérablement plus rapide, n’introduisant qu’un léger retard à peine perceptible de quelques images. Les développeurs d’Epic affirment que ce système peut « éliminer » la saccade de compilation PSO pour les matériaux et fonctionner sans problème avec le contenu généré par les utilisateurs. Cependant, les shaders globaux non associés aux matériaux – tels que ceux utilisés pour les effets de post-traitement comme le flou de mouvement – pourraient encore entraîner des cas rares de saccades lors de leur première compilation. Les ingénieurs d’Unreal Engine travaillent activement à résoudre ce problème également.