Les shaders sont de petits programmes qui s'exécutent sur votre GPU dans le cadre du processus de rendu. Ils gèrent tout, de la transformation de la géométrie des modèles 3D à l'application des textures, de l'éclairage, des ombres et des effets de post-traitement. Ils sont essentiels aux jeux vidéo modernes et contribuent en grande partie à leur aspect si impressionnant.
Mais cela n'a pas toujours été le cas. Les premières cartes graphiques reposaient sur du matériel à fonctions fixes, avec des unités distinctes dédiées à des tâches telles que la texturation et l'éclairage. Si ces unités étaient puissantes pour l'époque, elles étaient également rigides. À mesure que les jeux sont devenus plus complexes et plus ambitieux sur le plan visuel, le matériel fixe a limité à la fois les effets visuels et la liberté créative. Les shaders programmables ont supprimé ces limites.
Les premiers shaders largement utilisés étaient les pixel shaders. Ceux-ci déterminent la couleur finale de chaque pixel à l'écran et peuvent gérer les calculs d'éclairage, les ombres, les textures, la transparence et les effets de post-traitement tels que le flou ou le cel shading. Les vertex shaders ont suivi peu après, permettant aux développeurs de manipuler les données de sommets telles que la position, la couleur et les coordonnées de texture avant le rendu de la géométrie.
Plus tard sont apparus les shaders géométriques, qui peuvent générer et modifier la géométrie à la volée dans le pipeline graphique. Bien qu'ils ne soient pas très utilisés aujourd'hui en raison de leur coût en termes de performances, ils ont permis de créer des effets tels que la géométrie procédurale et les effets de particules. Les shaders de tessellation se sont inspirés de cette idée en augmentant dynamiquement les détails géométriques, ce qui rend les surfaces plus lisses sans stocker davantage de données de modèle.
Plus récemment, les API modernes ont introduit les shaders de tâches et de maillage. Ceux-ci remplacent certaines parties des étapes traditionnelles de vertex, de géométrie et de tessellation par un système plus flexible qui offre aux développeurs un meilleur contrôle sur la manière dont la géométrie est générée et traitée.
Les shaders de ray tracing sont la dernière nouveauté. Ils sont utilisés pour des effets tels que les reflets, les ombres et l'éclairage global en traçant les trajectoires des rayons lumineux à travers une scène. Ils sont pris en charge par DirectX Raytracing et Vulkan, et nécessitent des cartes graphiques relativement modernes pour fonctionner à des niveaux de performances jouables.
Si c'est ce que sont les shaders, pourquoi leur préchargement peut-il prendre autant de temps, et que signifie réellement « préchargement » ?
Ce terme est légèrement trompeur. En pratique, le préchargement des shaders consiste à compiler et à mettre en cache les shaders plutôt qu'à simplement les charger. Les développeurs de jeux peuvent soit compiler les shaders à la volée pendant que vous jouez, soit les compiler à l'avance avant le début du jeu.
La compilation des shaders pendant le jeu peut fonctionner dans des cas simples, mais elle entraîne souvent des ralentissements et des saccades lorsque de nouveaux effets ou de nouvelles zones apparaissent. Si de nombreux shaders doivent être compilés en même temps, le temps d'affichage des images peut fortement augmenter, ce qui explique pourquoi cette approche est si visible dans les jeux en monde ouvert. Une compilation excessive à la volée est souvent le signe d'une mauvaise optimisation du PC.
Le préchargement des shaders évite ce problème en les compilant à l'avance et en stockant les résultats dans un cache. Une fois compilés, les shaders peuvent être réutilisés instantanément pendant le jeu, ce qui se traduit par des performances plus fluides. L'inconvénient est que vous devez attendre la fin de la compilation des shaders la première fois que vous lancez le jeu.
Cette attente peut réapparaître après une mise à jour majeure du jeu ou une mise à jour des pilotes graphiques, car les binaires de shaders sont étroitement liés à la version du jeu et au pilote GPU. Les pilotes graphiques étant fréquemment mis à jour, la recompilation des shaders devient une source de frustration familière pour les joueurs sur PC.
Pourquoi les développeurs ne peuvent-ils pas simplement fournir des shaders précompilés ? Sur nos chers PC, le matériel et les pilotes sont tout simplement trop variés. La compilation des shaders dépend de l'architecture du GPU, de la version du pilote et de l'API graphique. Ainsi, un shader compilé qui fonctionne sur un système ne fonctionnera pas sur un autre. Les consoles évitent ce problème car elles sont des plateformes fixes, ce qui n'est pas le cas des PC.
La prochaine fois que vous regarderez un écran de préchargement du shader, rappelez-vous qu'il est là pour réduire les saccades et améliorer les performances une fois que vous jouez. C'est une puissance au service du bien.
JOIN OUR OFFICIAL CORSAIR COMMUNITIES
Join our official CORSAIR Communities! Whether you're new or old to PC Building, have questions about our products, or want to chat the latest PC, tech, and gaming trends, our community is the place for you.