Écoutez cet article

Certains jeux présentent un type de bégaiement qui se produit quelle que soit la puissance de votre ordinateur ou les paramètres que vous choisissez. Ce phénomène est causé par un processus connu sous le nom de « compilation de shaders », et il s’agit d’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 shaders de pixels, 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 qu’un élément de votre jeu ait l’air humide, vous utilisez un shader spécial pour obtenir cet aspect 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 de GPU « pipeline à fonctions fixes » où les types de mathématiques graphiques qu’un GPU pouvait effectuer étaient câblés dans son silicium.

Qu’est-ce que la compilation de shaders ?

La « compilation » est un terme informatique qui désigne le fait de prendre le code tel qu’il a été écrit par un programmeur humain et de le traduire 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 CPU Intel ou un Silicon d’Apple.

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

Pourquoi certains jeux PC présentent-ils un bégaiement de la compilation des shaders ?

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 à la compilation des shaders pour que le jeu fonctionne correctement. Certains développeurs s’efforcent d’optimiser la compilation afin qu’elle n’ait que peu ou pas d’impact sur les performances du jeu, tandis que d’autres répartissent la compilation des shaders sur l’ensemble du jeu, en espérant que le problème sera de courte durée. Dans ce cas, vous ne rencontrerez les bégaiements qu’au début d’un nouveau niveau ou lorsque vous entrerez dans un nouvel environnement qui utilise des shaders qui n’étaient pas nécessaires jusque-là.

Les bégaiements de compilation ont été particulièrement flagrants dans les jeux Unreal Engine 4, un moteur de jeu répandu et populaire. Plus précisément, ces bégaiements deviennent un problème lorsqu’on exécute un jeu sous DirectX 12. Cela s’explique en partie par le fait que DirectX 12 modifie le fonctionnement de la compilation des shaders, ce qui permet aux développeurs d’avoir un meilleur contrôle. Cependant, cela signifie également que les développeurs peuvent ne pas avoir la meilleure façon d’optimiser la compilation des shaders en utilisant la dernière et meilleure version de DirectX.

Pourquoi les consoles n’ont-elles pas de problèmes de compilation de shaders ?

Le bégaiement de la compilation des shaders est un problème totalement absent sur les consoles telles que la PS5 et la Xbox Series X|S. Cela s’explique simplement par le fait que les développeurs savent exactement quel matériel se trouve à l’intérieur de chaque console, ce qui leur permet de 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 faire cela sur PC, mais comme il y a tellement de GPU et de configurations de systèmes, 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 entendu, 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 corriger les problèmes de compilation des shaders. La bonne nouvelle est qu’ils finiront par maîtriser le processus. Unreal Engine 5.1 pourrait inclure une fonction automatisée qui aidera les développeurs à mettre en cache les shaders sans que l’impact sur les performances ne soit trop important.

La liste des mesures que vous pouvez prendre 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 faire. Cela peut prendre un certain temps, mais l'expérience de jeu sera sans bégaiement.
À moins qu'une mise à jour du jeu ne contienne un correctif pour le bégaiement des shaders, attendez d'avoir fini de jouer, sinon les shaders risquent de se compiler à nouveau.
N'effectuez pas de mise à jour du pilote du GPU tant que vous n'avez pas terminé votre jeu actuel, au cas où la compilation se déclencherait à nouveau.
Lorsque le bégaiement de compilation commence dans un jeu, appuyez sur le bouton pause et attendez qu'il soit terminé avant de continuer à jouer.
Utilisez la version 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 fonctions DX12 dans l'affaire.
Jouez plutôt au jeu sur une console.

Avec le temps, ce problème disparaîtra probablement ou deviendra beaucoup moins gênant. Par exemple, les développeurs peuvent décharger la compilation des shaders sur les cœurs du processeur dont le jeu n’a pas besoin, ce qui est une situation courante sur les PC modernes dotés de nombreux cœurs. D’ici là, le #stutterstruggle restera un problème irritant pour les jeux sur PC.

Laisser un commentaire

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