Unreal Engine a la solution de bégaiement du shader
Unreal Engine 5.2 a introduit un nouveau système de préchargement des objets d'état de pipeline (PSO) pour aider à réduire le bégaiement causé par la compilation des shader dans les jeux. Cela atténue le bégaiement des shader, ce qui est un énorme problème dans les jeux PC en ce moment.
Le bégaiement de compilation de shader (également connu sous le nom de bégaiement de shader) se produit lorsqu'un jeu doit préparer un shader juste avant qu'il ne puisse être affiché, conduisant à des retards notables et que le shader apparaît sensiblement. Ce retard se produit parce que la conversion du code de shader de haut niveau en code machine que différentes cartes graphiques peuvent comprendre est compliquée.
Les API graphiques modernes comme DirectX 12 et Vulkan ont introduit des PSO pour améliorer les performances. Les PSO combinent les shaders et les paramètres de rendu afin qu'ils puissent être préparés à l'avance. Cependant, le nombre de combinaisons PSO possibles peut être écrasante dans des jeux complexes avec de nombreux matériaux différents et des options de rendu. Des méthodes antérieures, comme le «cache PSO groupé» d'Unreal Engine, n'ont pas pu suivre. Ce cache nécessitait beaucoup de ressources à suivre et était difficile à gérer.
Le nouveau système de précalence PSO par Unreal résout certains problèmes précédents. Lors du chargement, il examine les matériaux, les mailles et les paramètres globaux pour déterminer les PSO (objets d'état de pipeline) sont probablement nécessaires. Ceux-ci sont préparés pendant un écran de chargement ou juste avant qu'ils ne soient nécessaires. Si les objets arrivent plus tard, ils peuvent attendre que les PSO soient prêts ou utilisent plutôt un matériau de base. Cela permet de réduire les retards notables.
C'est formidable que les moteurs travaillent pour résoudre ce problème. Ce qui est intéressant, c'est que ce n'est qu'un problème en raison des améliorations de la technologie. Dans le passé, les jeux seront livrés avec un code de shader précompilé, que le pilote graphique convertirait alors pendant que le jeu était en cours d'exécution. Cela a bien fonctionné pour des jeux plus simples, mais les problèmes de performances ont émergé à mesure que les shaders sont devenus plus complexes et que les cartes graphiques se sont améliorées.
Gardez à l'esprit que le traitement des changements de matériel est un travail en cours et ne s'applique actuellement qu'à certains shaders. Par exemple, les shaders globaux (utilisés pour des effets comme le flou de mouvement) sont gérés différemment et verront toujours des problèmes. Cependant, il est prévu d'améliorer cela à l'avenir.
Pourtant, il semble que Unreal mène la charge pour résoudre ce problème aux joueurs. Espérons que une solution permanente fera du shader bégayer une chose du passé.