View a markdown version of this page

Caché de sombreadores - Amazon GameLift Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Caché de sombreadores

Con el almacenamiento en caché de los sombreadores, su aplicación puede omitir la costosa recompilación de los sombreadores en futuras sesiones de transmisión. Si tu aplicación se retrasa o los tiempos de carga son lentos, la captura de una caché de sombreadores puede mejorar considerablemente la experiencia de los usuarios finales.

Con Amazon GameLift Streams, puede capturar una caché de sombreadores de una sesión de transmisión especialmente designada. Las sesiones de transmisión posteriores de la aplicación en todos los grupos de transmisiones compatibles utilizan automáticamente la caché de sombreadores capturada. El uso de la función de almacenamiento en caché de sombreadores no requiere código ni otros cambios en la aplicación.

Requisitos previos

Para usar el almacenamiento en caché de sombreadores, debes cumplir los siguientes requisitos:

  • El grupo de transmisiones debe haberse creado el 31 de julio de 2026 o después. Los grupos de streaming creados antes de esta fecha no admiten el almacenamiento en caché de los sombreadores.

Cómo funciona el almacenamiento en caché de los sombreadores

Las aplicaciones gráficas, como los juegos, se benefician de las cachés de sombreadores. Las cachés evitan el trabajo repetido de procesamiento y compilación relacionado con los gráficos. Para capturar una caché de sombreadores de las sesiones de transmisión designadas, Amazon GameLift Streams recopila los archivos de caché de sombreadores del sistema que se generan automáticamente para su aplicación. El servicio almacena esta caché y la aplica automáticamente a sesiones futuras en grupos de transmisiones compatibles. Esto reduce el tiempo dedicado a procesar los sombreadores durante las sesiones futuras. La generación o el consumo de una caché de sombreadores no requieren cambios en la aplicación.

El ciclo de vida del almacenamiento en caché de los sombreadores consta de tres etapas:

  1. Captura: se ejecuta una sesión de transmisión con la captura de caché de sombreadores habilitada. Durante esta sesión, el sistema compila automáticamente los programas de sombreado utilizados por la aplicación en una memoria caché del sistema de archivos local. Cuando sale correctamente de la aplicación, Amazon GameLift Streams empaqueta y carga esta caché local.

  2. Replicación: Amazon GameLift Streams replica la caché de sombreadores en todas las ubicaciones de streaming del grupo de transmisiones. Puede supervisar el estado de la replicación mediante la operación de la ListApplicationShaderCaches API.

  3. Consumo: Amazon GameLift Streams descarga y aplica automáticamente la caché de sombreadores a todas las sesiones de transmisión posteriores para la misma aplicación. La caché de sombreadores se usa en todos los grupos de transmisión y ubicaciones de transmisión asociados compatibles. Este comportamiento está activado de forma predeterminada.

Capturar una caché de sombreadores

Para capturar una caché de sombreadores, sigue estos pasos:

  1. Inicie una sesión de transmisión mediante la operación de la StartStreamSession API. En la solicitud, incluye el GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE set to 1 como variable de entorno adicional al llamar a StartStreamSession:

    { "AdditionalEnvironmentVariables": { "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE": "1" } }
  2. Usa la aplicación como lo harías normalmente durante la sesión.

  3. Cuando haya terminado, salga correctamente de la aplicación desde el menú integrado o mediante otros comandos de salida integrados. Esto garantiza que la caché de sombreadores esté lista para recopilarse.

  4. Tras la finalización, Amazon GameLift Streams empaqueta la caché de sombreadores compilada y comienza la replicación en todas las ubicaciones de streaming de todos los grupos de transmisiones asociados compatibles.

sugerencia

En las aplicaciones de juegos, la navegación por diferentes entornos, contenidos y niveles genera datos de sombreado adicionales. Cuanto más se ocupe de la aplicación durante la captura, más completa será la cobertura de la caché de sombreadores. La mejora de la cobertura puede reducir aún más los tiempos de procesamiento de los sombreadores en sesiones futuras.

importante

Evite terminar la sesión mediante la operación de la TerminateStreamSession API. Si su aplicación no tiene una salida integrada, utilice la Shell de administración de sesiones de streaming función para iniciar sesión de forma remota. A continuación, detenga el proceso de solicitud después de asegurarse de que la aplicación está inactiva y no muestra contenido nuevo.

Tras generar una caché de sombreadores, puede mejorarla iniciando más sesiones con la GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE configuración en. 1 Estas sesiones comienzan con la caché de sombreadores existente y producen una versión actualizada.

Límites de tamaño de la caché de sombreadores

Se rechazan las cachés de sombreado de menos de 10 KB o de más de 4 GB (sin comprimir).

Flujo de trabajo en caché de sombreadores

Al generar una caché de sombreadores para una aplicación de Amazon GameLift Streams existente, todos los grupos de transmisiones asociados compatibles comienzan a usarla automáticamente.

Para probar una caché de sombreadores antes de que afecte a las sesiones de producción, recomendamos este enfoque:

  1. Crea una aplicación independiente.

  2. Recopila la caché de sombreadores de esa aplicación.

  3. Verifique los resultados mediante una nueva sesión de transmisión.

  4. Usa la aplicación en tu configuración de producción.

Replicación de Shader cache

Tras una captura exitosa, Amazon GameLift Streams hace que la caché de sombreadores esté disponible automáticamente en todas las ubicaciones de streaming activas de los grupos de transmisiones asociados compatibles a la aplicación. Este proceso de replicación normalmente se completa en unos minutos.

Puede supervisar el progreso de la replicación mediante la operación ListApplicationShaderCaches de la API. El Status campo de caché de sombreados indica el estado agregado en todas las ubicaciones del grupo de transmisiones. Entre los posibles estados se incluyen los siguientes.

Status Description (Descripción)
INITIALIZED Amazon GameLift Streams recibió la solicitud y está preparando la caché de sombreadores.
PROCESSING Amazon GameLift Streams está replicando la caché de sombreadores en las ubicaciones de streaming de los grupos de transmisiones asociados.
READY La caché de sombreadores se replica y está disponible para su uso en las sesiones de transmisión.
ERROR Se ha producido un error durante el procesamiento de la caché de sombreadores. Crea una nueva caché de sombreadores para volver a intentarlo.
DELETING Amazon GameLift Streams está eliminando la caché de sombreadores.

Cuando el estado esREADY, la caché de sombreadores se aplica automáticamente a todas las nuevas sesiones de transmisión de la aplicación.

La capacidad de transmisión recién aprovisionada recibe la caché de sombreadores de forma inmediata. La capacidad actual del grupo de streaming puede tardar hasta una hora en obtener la nueva caché de sombreadores.

Inhabilitar el consumo de caché de sombreadores

De forma predeterminada, Amazon GameLift Streams descarga y aplica la caché de sombreadores antes de lanzar la aplicación. Para inhabilitar este comportamiento en una sesión específica, defina la siguiente variable de entorno:

{ "AdditionalEnvironmentVariables": { "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE": "1" } }

Para mejorar una caché de sombreadores existente, proporcione únicamenteGAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE. Para descartar la caché existente y recopilar una completamente nueva, proporcione las dos GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE opciones y. GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE

Compatibilidad con la caché de sombreadores

Puede asociar una aplicación a varios grupos de transmisiones. Para saber a qué grupos de transmisiones está asociada actualmente su aplicación, utilice la operación de la GetApplication API y revise el AssociatedStreamGroups campo.

No todos los grupos de transmisiones asociados son necesariamente compatibles con una caché de sombreadores recopilada. Puedes determinar qué grupos de transmisiones asociados son compatibles mediante la operación de la ListApplicationShaderCaches API. En su respuesta, el AssociatedStreamGroups campo contiene solo los grupos de transmisiones asociados que son compatibles con la caché de sombreadores.

El hardware gráfico y los controladores determinan la forma en que el sistema compila los programas de sombreado. Por este motivo, las cachés no se pueden transferir entre diferentes configuraciones de hardware y software. Con Amazon GameLift Streams, la compatibilidad de la caché de sombreadores viene determinada por las propiedades del grupo de transmisiones utilizado durante la captura:

  • Modelo exacto del hardware gráfico subyacente (GPU)

  • Versión del controlador de GPU instalada

En la práctica, esto significa que la caché de GameLift sombreadores de Amazon Streams tiene las siguientes restricciones de compatibilidad.

  • Una caché de sombreadores no es compatible entre clases de transmisión que utilizan hardware de GPU diferente, es decir, clases de transmisión de diferentes generaciones. Por ejemplo, gen5n_high las clases de gen6n_high transmisión no son compatibles, pero sí lo gen6n_high gen6n_ultra son. Del mismo modo, gen6n_pro y tampoco gen6e_pro son compatibles.

  • Una caché de sombreadores no es compatible entre grupos de transmisiones que tengan instalada una versión diferente del controlador de GPU. Un grupo de transmisión usa la misma versión del controlador de GPU durante toda su vida útil, pero uno recién creado puede recibir una versión actualizada. Para obtener más información sobre las versiones de los controladores de GPU disponibles actualmente en Amazon GameLift Streams para los nuevos grupos de transmisiones, consulteVersiones de controladores de GPU.

  • Una caché de sombreadores no es compatible entre WindowsLinux, y los tiempos de Proton ejecución.

Amazon GameLift Streams determina automáticamente esta compatibilidad y utiliza la caché de sombreadores recopilada solo con sesiones compatibles.

Ejemplo: clases de transmisión de diferentes generaciones

Su aplicación está asociada a dos grupos de transmisiones:

  • El primer grupo de transmisiones usa la clase de transmisión gen5n_high

  • El segundo grupo de transmisiones usa la clase de transmisión gen6n_high

La misma caché de sombreadores no es compatible en estos dos grupos de transmisiones de diferentes generaciones. Para admitir ambos grupos de transmisiones, genere una caché de sombreadores independiente para cada clase de transmisión.

Ejemplo: diferentes versiones de controladores de GPU

Tienes un grupo de transmisiones que usa la clase de gen6n_high transmisión y has generado una caché de sombreadores para él. Más adelante, crearás otro grupo de transmisiones y seguirás usando la misma clase de transmisióngen6n_high.

Este nuevo grupo de transmisiones ahora usa una versión diferente y más reciente del controlador de GPU. Al usarlo ListApplicationShaderCaches, descubres que tu nuevo grupo de transmisión no aparece en la listaAssociatedStreamGroups. Por lo tanto, la caché de sombreadores existente no es compatible con el nuevo grupo de transmisiones. Genere una nueva caché de sombreadores mediante el nuevo grupo de transmisiones.

Solución de problemas de caché de sombreadores

  • ListApplicationShaderCaches muestra el estado ERROR: se produjo un error durante el procesamiento de la caché de sombreadores. Crea una nueva caché de sombreadores para volver a intentarlo.

  • ListApplicationShaderCaches no muestra la nueva caché de sombreadores

    • La caché de sombreadores era demasiado pequeña o demasiado grande para recopilarla.

    • La aplicación no salió correctamente.

    • Se ha producido un error durante la recopilación.

    Crea una nueva caché de sombreadores para volver a intentarlo.