

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
<a name="shader-caches"></a>

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
<a name="shader-caches-prerequisites"></a>

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
<a name="shader-caches-how-it-works"></a>

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.

1. **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 ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html)

1. **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
<a name="shader-caches-capturing"></a>

Per catturare una cache degli shader, seguite questi passaggi:

1. Avviate una sessione di streaming utilizzando l'operazione [ StartStreamSession ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) API. Nella richiesta, includi il `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE` set to `1` come variabile di ambiente aggiuntiva quando chiami [ StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html):

   ```
   {
     "AdditionalEnvironmentVariables": {
       "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE": "1"
     }
   }
   ```

1. Usa l'applicazione come faresti normalmente durante la sessione.

1. 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.

1. 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 ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_TerminateStreamSession.html) API. Se l'applicazione non dispone di un'uscita integrata, utilizza la [Shell di amministrazione della sessione di streaming](troubleshoot-admin-shell-guide.md) 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
<a name="shader-caches-size-limits"></a>

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

### Flusso di lavoro della cache shader
<a name="shader-caches-workflow"></a>

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.

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

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

1. Utilizzate l'applicazione nella configurazione di produzione.

## Replica della cache dello shader
<a name="shader-caches-replication"></a>

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'[ListApplicationShaderCaches](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html)operazione 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
<a name="shader-caches-disabling"></a>

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 solo`GAMELIFT_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
<a name="shader-caches-compatibility"></a>

È 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 ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetApplication.html) 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 ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) 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](configuration-options.md#configuration-options-gpu-driver-versions)
+ 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
<a name="shader-caches-compatibility-example1"></a>

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
<a name="shader-caches-compatibility-example2"></a>

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 stream`gen6n_high`.

Questo nuovo gruppo di stream ora utilizza una versione del driver GPU diversa e più recente. Usando [ ListApplicationShaderCaches](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html), scopri che il tuo nuovo gruppo di stream non è elencato sotto`AssociatedStreamGroups`. 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
<a name="shader-caches-troubleshooting"></a>
+ **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.