View a markdown version of this page

Cache dello shader - GameLift Stream Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Cache dello shader

Con lo shader caching, la tua applicazione può evitare la costosa ricompilazione degli shader nelle future sessioni di streaming. Se l'applicazione soffre di rallentamenti o rallentamenti nei tempi di caricamento, l'acquisizione di una cache dello shader può migliorare notevolmente l'esperienza degli utenti finali.

Con Amazon GameLift Streams, puoi acquisire una cache dello shader da una sessione di streaming appositamente designata. Le successive sessioni di streaming dell'applicazione in tutti i gruppi di stream compatibili utilizzano automaticamente la cache degli shader acquisita. L'utilizzo della funzionalità di caching degli shader non richiede codice o altre modifiche all'applicazione.

Prerequisiti

Per utilizzare lo shader caching, dovete soddisfare i seguenti requisiti:

  • Il gruppo di stream deve essere stato creato il 31 luglio 2026 o dopo tale data. I gruppi di stream creati prima di questa data non supportano la memorizzazione nella cache degli shader.

Come funziona la memorizzazione nella cache degli shader

Le applicazioni grafiche come i giochi traggono vantaggio dalle cache degli shader. Le cache evitano ripetuti lavori di elaborazione e compilazione relativi alla grafica. Per acquisire una cache shader da sessioni di streaming designate, Amazon GameLift Streams raccoglie i file di cache degli shader di sistema generati automaticamente per l'applicazione. Il servizio archivia questa cache e la applica automaticamente alle sessioni future su gruppi di stream compatibili. Ciò riduce il tempo impiegato per l'elaborazione degli shader durante le sessioni future. La generazione o l'utilizzo di una cache dello shader non richiede modifiche all'applicazione.

Il ciclo di vita dello shader caching è suddiviso in tre fasi:

  1. Acquisizione: si esegue una sessione di streaming con l'acquisizione della cache dello shader abilitata. Durante questa sessione, il sistema compila automaticamente i programmi shader utilizzati dall'applicazione in una cache del file system locale. Quando esci correttamente dall'applicazione, Amazon GameLift Streams impacchetta e carica questa cache locale.

  2. Replica: Amazon GameLift Streams replica la cache dello shader in tutte le posizioni di streaming del gruppo di stream. Puoi monitorare lo stato della replica utilizzando l'operazione API. ListApplicationShaderCaches

  3. Consumo: Amazon GameLift Streams scarica e applica automaticamente la cache dello shader a tutte le sessioni di streaming successive per la stessa applicazione. La cache dello shader viene utilizzata in tutti i gruppi di stream e le posizioni di streaming associati compatibili. Questo comportamento è attivo per impostazione predefinita.

Acquisizione di una cache dello shader

Per catturare una cache degli shader, seguite questi passaggi:

  1. Avviate una sessione di streaming utilizzando l'operazione StartStreamSession API. Nella richiesta, includi il GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE set to 1 come variabile di ambiente aggiuntiva quando chiami StartStreamSession:

    { "AdditionalEnvironmentVariables": { "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE": "1" } }
  2. Usa l'applicazione come faresti normalmente durante la sessione.

  3. Al termine, uscite dall'applicazione in modo corretto dal menu integrato o utilizzando altri comandi di uscita incorporati. Questo assicura che la cache dello shader sia pronta per essere raccolta.

  4. Dopo la terminazione, Amazon GameLift Streams impacchetta la cache dello shader compilata e avvia la replica in tutte le località di streaming in tutti i gruppi di stream associati compatibili.

Suggerimento

Nelle applicazioni di gioco, la navigazione tra ambienti, contenuti e livelli diversi genera dati shader aggiuntivi. Maggiore è il numero di applicazioni coperte durante l'acquisizione, più completa diventa la copertura della cache degli shader. Una migliore copertura può ridurre ulteriormente i tempi di elaborazione degli shader nelle sessioni future.

Importante

Evita di terminare la sessione utilizzando l'operazione TerminateStreamSession API. Se l'applicazione non dispone di un'uscita integrata, utilizza la Shell di amministrazione della sessione di streaming funzione per accedere in remoto. Quindi interrompi il processo di candidatura dopo esserti assicurato che l'applicazione sia inattiva e non stia visualizzando nuovi contenuti.

Dopo aver generato una cache dello shader, potete migliorarla avviando ulteriori sessioni con GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE set to. 1 Queste sessioni iniziano con la cache degli shader esistente e producono una versione aggiornata.

Limiti di dimensione della cache dello shader

Le cache shader inferiori a 10 KB o superiori a 4 GB (non compresse) vengono rifiutate.

Flusso di lavoro della cache shader

Quando si genera una cache shader per un'applicazione Amazon GameLift Streams esistente, tutti i gruppi di stream associati compatibili iniziano automaticamente a utilizzarla.

Per testare una shader cache prima che influenzi le sessioni di produzione, consigliamo questo approccio:

  1. Create un'applicazione separata.

  2. Raccogli la cache dello shader per quell'applicazione.

  3. Verifica i risultati utilizzando una nuova sessione di streaming.

  4. Utilizzate l'applicazione nella configurazione di produzione.

Replica della cache dello shader

Dopo una corretta acquisizione, Amazon GameLift Streams rende automaticamente disponibile la cache dello shader in ogni posizione di streaming attiva nei gruppi di stream associati compatibili all'applicazione. Questo processo di replica viene in genere completato in pochi minuti.

È possibile monitorare l'avanzamento della replica utilizzando l'ListApplicationShaderCachesoperazione API. Il Status campo shader cache indica lo stato aggregato in tutte le posizioni del gruppo di stream. Gli stati possibili sono i seguenti.

Stato Description
INITIALIZED Amazon GameLift Streams ha ricevuto la richiesta e sta preparando la cache dello shader.
PROCESSING Amazon GameLift Streams sta replicando la cache dello shader nelle posizioni di streaming nei gruppi di stream associati.
READY La cache dello shader è replicata e disponibile per l'uso nelle sessioni di streaming.
ERROR Si è verificato un errore durante l'elaborazione della cache dello shader. Create una nuova shader cache per riprovare.
DELETING Amazon GameLift Streams sta eliminando la cache degli shader.

Quando lo stato èREADY, la cache dello shader viene applicata automaticamente a tutte le nuove sessioni di streaming per l'applicazione.

La capacità di streaming appena assegnata riceve immediatamente la cache dello shader. La capacità dei gruppi di stream esistenti può richiedere fino a un'ora per ottenere la nuova cache degli shader.

Disattivazione del consumo della cache degli shader

Per impostazione predefinita, Amazon GameLift Streams scarica e applica la cache dello shader prima di avviare l'applicazione. Per disabilitare questo comportamento per una sessione specifica, imposta la seguente variabile di ambiente:

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

Per migliorare una shader cache esistente, fornisci soloGAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE. Per eliminare la cache esistente e raccoglierne una completamente nuova, fornisci entrambi GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE e. GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE

Compatibilità con la cache degli shader

È possibile associare un'applicazione a più gruppi di stream. Per scoprire a quali gruppi di stream è attualmente associata la tua applicazione, utilizza l'operazione GetApplication API ed esamina il AssociatedStreamGroups campo.

Non tutti i gruppi di stream associati sono necessariamente compatibili con una cache di shader raccolta. È possibile determinare quali gruppi di stream associati sono compatibili utilizzando l'operazione ListApplicationShaderCaches API. Nella sua risposta, il AssociatedStreamGroups campo contiene solo i gruppi di stream associati che sono compatibili con la cache dello shader.

L'hardware grafico e i driver determinano il modo in cui il sistema compila i programmi shader. Per questo motivo, le cache non sono trasferibili tra diverse configurazioni hardware e software. Con Amazon GameLift Streams, la compatibilità della cache degli shader è determinata dalle proprietà del gruppo di stream utilizzato durante l'acquisizione:

  • Modello esatto dell'hardware grafico (GPU) sottostante

  • Versione del driver GPU installato

In pratica, ciò significa che una shader cache di Amazon GameLift Streams presenta le seguenti restrizioni di compatibilità.

  • Una shader cache non è compatibile con classi di stream che utilizzano hardware GPU diverso, vale a dire classi di stream di diversa generazione. Ad esempio, gen5n_high le classi gen6n_high stream non sono compatibili, ma lo gen6n_high sono. gen6n_ultra Allo stesso modo, gen6n_pro e inoltre non gen6e_pro sono compatibili.

  • Una shader cache non è compatibile tra gruppi di stream in cui è installata una versione diversa del driver GPU. Un gruppo di stream utilizza la stessa versione del driver GPU per tutta la sua durata, ma un gruppo appena creato potrebbe ricevere una versione aggiornata. Per ulteriori informazioni sulle versioni dei driver GPU attualmente disponibili su Amazon GameLift Streams per i nuovi gruppi di stream, consulta. Versioni dei driver GPU

  • Una cache dello shader non è compatibile tra WindowsLinux, e runtime. Proton

Amazon GameLift Streams determina automaticamente questa compatibilità e utilizza la cache dello shader raccolta solo con sessioni compatibili.

Esempio: classi di stream di diversa generazione

L'applicazione è associata a due gruppi di stream:

  • Il primo gruppo di stream utilizza la classe stream gen5n_high

  • Il secondo gruppo di stream utilizza la classe stream gen6n_high

La stessa shader cache non è compatibile con questi due gruppi di stream di generazione diversa. Per supportare entrambi i gruppi di stream, generate una cache shader separata per ogni classe di stream.

Esempio: diverse versioni dei driver della GPU

Avete un gruppo di stream che utilizza la classe gen6n_high stream e per essa avete generato una cache shader. Successivamente crei un altro gruppo di stream, utilizzando sempre la stessa classe di streamgen6n_high.

Questo nuovo gruppo di stream ora utilizza una versione del driver GPU diversa e più recente. Usando ListApplicationShaderCaches, scopri che il tuo nuovo gruppo di stream non è elencato sottoAssociatedStreamGroups. La cache degli shader esistente non è quindi compatibile con il nuovo gruppo di stream. Genera una nuova shader cache utilizzando il nuovo gruppo di stream.

Risoluzione dei problemi relativi alla cache degli shader

  • ListApplicationShaderCaches mostra lo stato ERROR — Si è verificato un errore durante l'elaborazione della cache dello shader. Create una nuova shader cache per riprovare.

  • ListApplicationShaderCaches non elenca la nuova cache degli shader

    • La cache degli shader era troppo piccola o troppo grande per essere raccolta.

    • L'applicazione non è stata chiusa correttamente.

    • Si è verificato un errore durante la raccolta.

    Create una nuova shader cache per riprovare.