Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Cache du shader
Grâce à la mise en cache des shaders, votre application peut éviter une recompilation coûteuse des shaders lors des prochaines sessions de streaming. Si votre application présente des problèmes ou des temps de chargement lents, la capture d'un cache de shaders peut améliorer considérablement l'expérience de vos utilisateurs finaux.
Avec Amazon GameLift Streams, vous pouvez capturer un cache de shaders à partir d'une session de streaming spécialement désignée. Les sessions de streaming suivantes de l'application dans tous les groupes de flux compatibles utilisent automatiquement le cache du shader capturé. L'utilisation de la fonction de mise en cache des shaders ne nécessite aucun code ni aucune autre modification de votre application.
Conditions préalables
Pour utiliser la mise en cache des shaders, vous devez remplir les conditions suivantes :
-
Le groupe de diffusion doit avoir été créé le 31 juillet 2026 ou après cette date. Les groupes de flux créés avant cette date ne prennent pas en charge la mise en cache des shaders.
Comment fonctionne la mise en cache des shaders
Les applications graphiques telles que les jeux bénéficient des caches de shaders. Les caches évitent les tâches de traitement et de compilation répétées liées aux graphiques. Pour capturer un cache de shaders à partir de sessions de streaming désignées, Amazon GameLift Streams collecte des fichiers de cache de shaders système générés automatiquement pour votre application. Le service stocke ce cache et l'applique automatiquement aux sessions futures sur des groupes de flux compatibles. Cela réduit le temps consacré au traitement des shaders lors des sessions futures. La génération ou la consommation d'un cache de shader ne nécessite aucune modification de votre application.
Le cycle de vie de la mise en cache des shaders comporte trois étapes :
-
Capture : vous exécutez une session de streaming avec la capture du cache des shaders activée. Au cours de cette session, le système compile automatiquement les programmes de shader utilisés par votre application dans un cache du système de fichiers local. Lorsque vous quittez correctement votre application, Amazon GameLift Streams empaquette et charge ce cache local.
-
Réplication : Amazon GameLift Streams réplique le cache du shader vers tous les emplacements de diffusion du groupe de flux. Vous pouvez surveiller l'état de la réplication à l'aide de l'opération ListApplicationShaderCaches API.
-
Consommation : Amazon GameLift Streams télécharge et applique automatiquement le cache du shader à toutes les sessions de streaming suivantes pour la même application. Le cache du shader est utilisé dans tous les groupes de flux et emplacements de diffusion associés compatibles. Ce comportement est activé par défaut.
Capture d'un cache de shaders
Pour capturer un cache de shaders, procédez comme suit :
-
Démarrez une session de streaming à l'aide de StartStreamSession l'opération API. Dans la demande, incluez la variable d'environnement
GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTUREset to1en tant que variable d'environnement supplémentaire lors de l'appel StartStreamSession :{ "AdditionalEnvironmentVariables": { "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE": "1" } } -
Utilisez votre application comme vous le feriez normalement pendant la session.
-
Lorsque vous avez terminé, quittez votre application en douceur à partir de son menu intégré ou à l'aide d'autres commandes de sortie intégrées. Cela garantit que le cache du shader est prêt à être collecté.
-
Après la résiliation, Amazon GameLift Streams met en package le cache du shader compilé et commence la réplication vers tous les emplacements de diffusion sur tous les groupes de flux associés compatibles.
Astuce
Dans les applications de jeu, la navigation dans différents environnements, contenus et niveaux génère des données de shader supplémentaires. Plus vous couvrez une grande partie de votre application pendant la capture, plus la couverture du cache du shader devient complète. Une couverture améliorée peut encore réduire les temps de traitement des shaders lors des sessions futures.
Important
Évitez de mettre fin à la session à l'aide de l'opération TerminateStreamSession API. Si votre application ne possède pas de sortie intégrée, utilisez la Interface d'administration de session de streaming fonction pour vous connecter à distance. Arrêtez ensuite le processus d'application après vous être assuré que l'application est inactive et qu'elle ne génère pas de nouveau contenu.
Après avoir généré un cache de shaders, vous pouvez l'améliorer en démarrant d'autres sessions avec GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE set to1. Ces sessions démarrent avec le cache de shader existant et produisent une version mise à jour.
Limites de taille du cache des shaders
Les caches de shader inférieurs à 10 Ko ou supérieurs à 4 Go (non compressés) sont rejetés.
Flux de travail du cache des shaders
Lorsque vous générez un cache de shader pour une application Amazon GameLift Streams existante, tous les groupes de flux associés compatibles commencent automatiquement à l'utiliser.
Pour tester le cache d'un shader avant qu'il n'affecte les sessions de production, nous vous recommandons cette approche :
Créez une application distincte.
Collectez le cache du shader pour cette application.
Vérifiez les résultats à l'aide d'une nouvelle session de streaming.
Utilisez l'application dans votre configuration de production.
Réplication du cache des shaders
Une fois la capture réussie, Amazon GameLift Streams rend automatiquement le cache du shader disponible dans chaque emplacement de diffusion actif des groupes de flux associés compatibles à l'application. Ce processus de réplication se termine généralement en quelques minutes.
Vous pouvez suivre la progression de la réplication à l'aide de ListApplicationShaderCaches l'opération API. Le Status champ de cache du shader indique l'état agrégé pour tous les emplacements du groupe de flux. Les statuts possibles sont les suivants.
| Statut | Description |
|---|---|
INITIALIZED |
Amazon GameLift Streams a reçu la demande et prépare le cache du shader. |
PROCESSING |
Amazon GameLift Streams réplique le cache du shader vers les emplacements de diffusion des groupes de flux associés. |
READY |
Le cache du shader est répliqué et peut être utilisé dans les sessions de streaming. |
ERROR |
Une erreur s'est produite lors du traitement du cache du shader. Créez un nouveau cache de shaders pour réessayer. |
DELETING |
Amazon GameLift Streams est en train de supprimer le cache du shader. |
Lorsque l'état est définiREADY, le cache du shader est automatiquement appliqué à toutes les nouvelles sessions de streaming de l'application.
La capacité de flux nouvellement provisionnée reçoit immédiatement le cache du shader. La capacité existante des groupes de flux peut prendre jusqu'à une heure pour obtenir le nouveau cache du shader.
Désactivation de la consommation du cache du shader
Par défaut, Amazon GameLift Streams télécharge et applique le cache du shader avant de lancer l'application. Pour désactiver ce comportement pour une session spécifique, définissez la variable d'environnement suivante :
{ "AdditionalEnvironmentVariables": { "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE": "1" } }
Pour améliorer un cache de shaders existant, fournissez uniquementGAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE. Pour supprimer le cache existant et en récupérer un tout nouveau, saisissez à la fois GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE etGAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE.
Compatibilité avec le cache des shaders
Vous pouvez associer une application à plusieurs groupes de flux. Pour savoir à quels groupes de flux votre application est actuellement associée, utilisez l'opération GetApplication API et consultez le AssociatedStreamGroups champ.
Tous les groupes de flux associés ne sont pas nécessairement compatibles avec un cache de shaders collecté. Vous pouvez déterminer quels groupes de flux associés sont compatibles à l'aide de l'opération ListApplicationShaderCaches API. Dans sa réponse, le AssociatedStreamGroups champ contient uniquement les groupes de flux associés compatibles avec le cache du shader.
Le matériel graphique et les pilotes déterminent la façon dont le système compile les programmes de shader. De ce fait, les caches ne sont pas transférables entre différentes configurations matérielles et logicielles. Avec Amazon GameLift Streams, la compatibilité du cache des shaders est déterminée par les propriétés du groupe de flux utilisé lors de la capture :
-
Modèle exact du matériel graphique (GPU) sous-jacent
-
Version du pilote GPU installée
En pratique, cela signifie qu'un cache de shader Amazon GameLift Streams présente les restrictions de compatibilité suivantes.
-
Un cache de shader n'est pas compatible entre les classes de flux qui utilisent un matériel GPU différent, c'est-à-dire des classes de flux de générations différentes. Par exemple, les classes de
gen6n_highfluxgen5n_highet ne sont pas compatibles, maisgen6n_highelles legen6n_ultrasont. De même,gen6n_proet negen6e_prosont pas non plus compatibles. -
Un cache de shader n'est pas compatible entre les groupes de flux sur lesquels une version différente du pilote GPU est installée. Un groupe de flux utilise la même version du pilote GPU pendant toute sa durée de vie, mais un groupe nouvellement créé peut recevoir une version mise à jour. Pour plus d'informations sur les versions des pilotes GPU actuellement disponibles sur Amazon GameLift Streams pour les nouveaux groupes de flux, consultezVersions des pilotes GPU.
-
Un cache de shader n'est pas compatible entre les environnements d'Protonexécution WindowsLinux, et.
Amazon GameLift Streams détermine automatiquement cette compatibilité et utilise le cache de shader collecté uniquement avec les sessions compatibles.
Exemple : différentes classes de flux de génération
Votre application est associée à deux groupes de flux :
-
Le premier groupe de flux utilise la classe stream
gen5n_high -
Le deuxième groupe de flux utilise la classe stream
gen6n_high
Le même cache de shader n'est pas compatible entre ces deux groupes de flux de générations différentes. Pour prendre en charge les deux groupes de flux, générez un cache de shader distinct pour chaque classe de flux.
Exemple : différentes versions de pilotes GPU
Vous disposez d'un groupe de flux qui utilise la classe gen6n_high stream et qui a généré un cache de shaders pour celui-ci. Plus tard, vous créerez un autre groupe de flux, en utilisant toujours la même classe de fluxgen6n_high.
Ce nouveau groupe de flux utilise désormais une version différente et plus récente du pilote GPU. En utilisant ListApplicationShaderCaches, vous découvrez que votre nouveau groupe de flux ne figure pas dans la listeAssociatedStreamGroups. Le cache de shader existant n'est donc pas compatible avec le nouveau groupe de flux. Générez un nouveau cache de shaders à l'aide du nouveau groupe de flux.
Résolution des problèmes de cache des shaders
-
ListApplicationShaderCaches affiche le statut ERROR : une erreur s'est produite lors du traitement du cache du shader. Créez un nouveau cache de shaders pour réessayer.
-
ListApplicationShaderCaches ne répertorie pas le nouveau cache du shader
Le cache du shader était trop petit ou trop volumineux pour être collecté.
L'application ne s'est pas terminée correctement.
Une erreur s'est produite lors de la collecte.
Créez un nouveau cache de shaders pour réessayer.