Qu’est-ce que la compilation de shaders et pourquoi ralentit-elle les jeux informatiques ?

Qu’est-ce que la compilation de shaders et pourquoi ralentit-elle les jeux informatiques ?

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. Ceci est causé par un processus connu sous le nom de « compilation de shader » et devient de plus en plus un problème dans les jeux PC.

Que sont les shaders ?

Les shaders sont des programmes informatiques qui aident à définir 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 personnalisé, 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 faire tout ce qui peut être exprimé dans un langage de programmation de shader . 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 ?

« Compiler » est un terme informatique signifiant prendre du code écrit par un programmeur humain et le convertir en code machine que le processeur particulier conçu pour 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 le GPU. Le code du shader doit être compilé pour fonctionner avec la marque et le modèle de GPU en question. Si vous modifiez le GPU, mettez à jour ses pilotes ou si le jeu reçoit une mise à jour, les shaders doivent être recompilés.

Pourquoi la compilation des shaders se fige-t-elle dans certains jeux informatiques ?

Dans certains jeux, la compilation des shaders en arrière-plan interfère avec le jeu lui-même, provoquant des blocages visibles. L’ordinateur compile trop les shaders pour que le jeu fonctionne correctement. Certains développeurs essaient d’optimiser la compilation afin qu’elle ait peu ou pas d’effet sur les performances du jeu, tandis que d’autres étendent la compilation des shaders à l’ensemble du jeu, en espérant que l’accroc sera de courte durée. Dans ce cas, vous ne rencontrerez le bégaiement qu’au début d’un nouveau niveau, ou lors de l’entrée dans un nouvel environnement qui utilise des shaders qui n’étaient pas nécessaires jusque-là.

Les bégaiements de compilation étaient particulièrement flagrants dans les jeux alimentés par Unreal Engine 4, un moteur de jeu largement utilisé et populaire. En particulier, ces gels deviennent un problème lors de l’exécution du jeu sous DirectX 12. Cela est en partie dû au fait que DirectX 12 modifie la façon dont les shaders sont compilés, donnant aux développeurs plus de contrôle. Cependant, cela signifie également que les développeurs n’ont peut-être pas de meilleur moyen d’optimiser la compilation des shaders en utilisant la dernière et la meilleure version de DirectX.

Pourquoi la compilation des shaders ne ralentit-elle pas sur les consoles ?

Le bégaiement lors de la compilation des shaders est un problème totalement absent sur les consoles telles que PS5 et 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, ils peuvent donc 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.

Cela peut être fait sur un PC, mais comme il y a tellement de GPU et de configurations système, ce ne serait pas pratique. Cependant, dans le cas du Steam Deck de Valve, 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, dans la plupart des cas, les développeurs doivent résoudre des problèmes de compilation de shaders. La bonne nouvelle est qu’ils finiront par passer à travers le processus. Unreal Engine 5.1 peut inclure une fonctionnalité automatisée qui aidera les développeurs à mettre en cache sans avoir un impact aussi grave sur les performances.

La liste des choses que vous pouvez faire pour réduire le bégaiement est courte, mais certaines de ces options peuvent vous aider :

  • Si le jeu autorise la précompilation des shaders, autorisez-le. Cela peut prendre un certain temps, mais le jeu fonctionnera sans bégaiement.
  • Si la mise à jour du jeu n’inclut pas de correctif de gel des shaders, attendez d’avoir fini de jouer ou les shaders pourraient se compiler à nouveau.
  • Reportez les mises à jour du pilote GPU jusqu’à ce que vous ayez terminé le jeu en cours, au cas où il déclencherait à nouveau la compilation.
  • Lorsque le jeu commence à compiler le bégaiement, appuyez sur le bouton pause et attendez qu’il se termine avant de continuer à jouer.
  • Utilisez DirectX 11 au lieu de la version DirectX 12 du jeu. Souvent, le bégaiement des shaders est réduit ou absent, bien que vous renonciez aux fonctionnalités DX12 pour démarrer.
  • Au lieu de cela, jouez au jeu sur une console.

Au fil du temps, ce problème est susceptible de disparaître ou de devenir beaucoup moins intrusif. Par exemple, les développeurs peuvent déplacer la compilation des shaders vers des cœurs de processeur dont le jeu n’a pas besoin, ce qui est une situation courante sur les PC modernes dotés d’un grand nombre de cœurs. Jusque-là, #stutterstruggle continuera d’être un problème ennuyeux dans les jeux PC.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *