Les shader en cache

Pourquoi c'est cool !

Petit article explicatif sur ce que c'est qu'un Shader et pourquoi c'est pas mal de les mettre en cache pour le rendu d'un jeu, notamment dans Steam.

Shader ? Shredder ?

C'est un programme informatique (et pas un ninja traquant des tortues dans des égouts), utilisé dans les jeux (ou dans des rendus 3D), pour paramétrer une partie du processus de rendu. Il sert à décrire plein de trucs et appliquer pas mal d'effets : l'absorption et la diffusion de la lumière, la texture à utiliser, les réflexions et réfractions, l'ombrage, le déplacement de primitives et des effets post-traitement... Les Shader peuvent être exécutés directement par la carte graphique ou être mis en cache dans la mémoire de celle-ci lorsqu'ils sont utiles.

Pixar

Mémoire et cache

Les mémoires des cartes graphiques sont très, très, très rapides (de l'ordre de la nano seconde). Au plus une application va pouvoir stocker des données dedans, au plus cela va accélérer le traitement et donc les performances. Quand vous avez un jeu gourmand en mémoire (typiquement un jeu en 4K avec plein de textures comme The Witcher 3), la carte graphique va stocker dans sa mémoire les textures du jeu et permettre un affichage sans accro. Elle va calculer en temps réel les Shaders, voire les stocker dans sa mémoire pour tous les effets du jeu. Si votre PC est puissant, aucun soucis, le CPU prendra en charge certains calculs dans le jeu, le GPU aura sa tâche, tout va bien se dérouler et vous aurez vos 144FPS en 4K (!). Mais sur des configurations plus modestes ou pour avoir plus de performances, au lieu d'avoir à calculer en temps réel des Shader, il est possible de les calculer en premier, de les stocker en mémoire et de les charger lors d'un jeu.

Caché, mais où ?

Il est possible de stocker son cache sur la RAM voire sur un espace dans son disque dur (ou SSD) et d'appeler les Shader déjà calculés lors d'un chargement d'un jeu. De ce fait, la carte graphique est soulagé d'un calcul en temps réel et peut se concentrer sur d'autres tâches, d'où le gain de performances.

Witcher 3

Steam et les Shader

On avait déjà la possibilité de “cacher” des Shader (pas dans des égouts, non), notamment avec GLSL, OpenGL Shader Langage, Windows a déjà par exemple le HLSL, DirectX Shader Langage... Et voilà qu'arrive le Vulkan Shader Langage dans la version béta de Steam !

Vulkan Shader Steam