Qu’est-ce que la compilation Shader et pourquoi fait-elle bégayer les jeux PC?

FROM Software – Elden Ring était connu pour le bégaiement de compilation de shader au lancement

Étant donné que le GPU de chaque PC est différent, la compilation des shaders est nécessaire pour que les jeux fonctionnent sur différentes marques et modèles de cartes graphiques. Malheureusement, ce processus de compilation peut provoquer un bégaiement gênant.

Certains jeux ont un type de bégaiement qui se produit quelle que soit la puissance de votre ordinateur ou les paramètres que vous choisissez. Cela est dû à un processus connu sous le nom de « compilation de shaders », et c’est un problème croissant dans les jeux sur PC.

Que sont les shaders ?

Les shaders sont des programmes informatiques qui aident à déterminer divers aspects des graphiques rendus. Les pixel shaders, par exemple, calculent les attributs d’un pixel. Cela inclut la couleur, la luminosité, la réflectivité ou la transparence de ce pixel. Si vous voulez que quelque chose dans votre jeu ait l’air mouillé, vous utilisez un shader spécial pour obtenir ce look plutôt que de le faire minutieusement à la main.

Les shaders sont ce qui rend les GPU modernes si flexibles, car ces GPU sont conçus pour exécuter tout ce qui peut être exprimé dans le langage de programmation des shaders. Ils remplacent l’ancienne technologie GPU « pipeline à fonction fixe » où les types de calculs graphiques qu’un GPU pouvait effectuer étaient câblés dans son silicium.

Qu’est-ce que la compilation de shaders ?

« Compilation » est un terme informatique qui fait référence à la prise du code tel qu’il est écrit par un programmeur humain et à sa traduction en code machine que le processeur spécifique destiné à exécuter le logiciel en question peut comprendre. Ainsi, par exemple, vous pouvez compiler votre code pour qu’il s’exécute sur un processeur Intel ou Apple Silicon.

La même chose est nécessaire pour un GPU. Le code de shader doit être compilé pour fonctionner sur la marque et le modèle de GPU spécifiques en question. Si vous changez de GPU, mettez à jour ses pilotes ou si le jeu reçoit une mise à jour, les shaders doivent être à nouveau compilés.

Pourquoi certains jeux PC ont-ils un Shader Compilation Stutter ?

Dans certains jeux, la compilation des shaders en arrière-plan interfère avec le jeu lui-même, provoquant un bégaiement visible. L’ordinateur travaille trop dur pour compiler les shaders pour faire tourner le jeu en douceur. Certains développeurs s’efforcent d’optimiser la compilation afin qu’elle ait peu ou pas d’impact sur les performances du jeu, tandis que d’autres répartissent la compilation des shaders tout au long du jeu, en espérant que l’accrochage sera de courte durée. Dans ce cas, vous ne rencontrerez le bégaiement qu’au début d’un nouveau niveau ou lorsque vous entrez dans un nouvel environnement qui utilise des shaders qui n’ont pas été nécessaires jusqu’à présent.

Les bégaiements de compilation ont été particulièrement flagrants dans les jeux Unreal Engine 4, qui est un moteur de jeu répandu et populaire. Plus précisément, ces saccades deviennent un problème lors de l’exécution d’un jeu sous DirectX 12. C’est en partie parce que DirectX 12 modifie le fonctionnement de la compilation des shaders, donnant plus de contrôle aux développeurs. Cependant, cela signifie également que les développeurs n’ont peut-être pas le meilleur moyen d’optimiser la compilation des shaders en utilisant la dernière et la meilleure version de DirectX.

Pourquoi les consoles n’ont-elles pas de Shader Compilation Stutter ?

Le bégaiement de la compilation Shader est un problème complètement absent des consoles comme la PS5 et la Xbox Series X|S. C’est simplement parce que les développeurs savent exactement quel matériel se trouve à l’intérieur de chaque console afin qu’ils puissent pré-compiler tous les shaders ; il n’est pas nécessaire de les compiler sur le système local car vous savez déjà quel GPU vous ciblez.

Il est possible de le faire sur PC, mais comme il y a tellement de GPU et de configurations système, ce ne serait pas pratique. Cependant, dans le cas du Valve Steam Deck, Valve inclut un cache de shader pré-compilé avec certains jeux car, bien sûr, tous les Steam Decks ont le même GPU.

Que pouvez-vous faire contre le bégaiement de compilation ?

Malheureusement, la plupart du temps, les développeurs doivent résoudre des problèmes de compilation de shaders. La bonne nouvelle est qu’ils finiront par maîtriser le processus. Unreal Engine 5.1 peut inclure une fonctionnalité automatisée qui aidera les développeurs à mettre en cache sans que l’impact sur les performances ne soit si grave.

La liste des choses que vous pouvez faire pour atténuer le bégaiement n’est pas longue, mais certaines de ces options peuvent vous aider :

  • Si un jeu vous permet de pré-compiler les shaders, laissez-le. Cela peut prendre un certain temps, mais l’expérience de jeu sera sans bégaiement.
  • À moins qu’une mise à jour du jeu n’inclue un correctif de bégaiement de shader, attendez jusqu’à ce que vous ayez fini de jouer, sinon les shaders pourraient se compiler à nouveau.
  • Attendez les mises à jour du pilote GPU jusqu’à ce que vous ayez terminé votre jeu en cours au cas où il déclencherait à nouveau la compilation.
  • Lorsque le bégaiement de la compilation démarre dans un jeu, appuyez sur le bouton pause et attendez qu’il soit terminé avant de continuer à jouer.
  • Utilisez DirectX 11 au lieu de la version DirectX 12 d’un jeu. Souvent, le bégaiement des shaders est réduit ou absent, bien que vous renonciez aux fonctionnalités DX12 dans le marché.
  • Jouez plutôt au jeu sur une console.

Au fil du temps, ce problème disparaîtra probablement ou deviendra beaucoup moins intrusif. Par exemple, les développeurs peuvent décharger la compilation des shaders sur des cœurs de processeur dont le jeu n’a pas besoin, ce qui est une situation courante sur les PC modernes dotés de nombreux cœurs. Jusque-là, le #bégaiement restera un problème irritant dans les jeux sur PC.

EN RELATION: Pourquoi mes jeux ont-ils l’air pires avec le VRR ?

Source-135