

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Shader-Cache
<a name="shader-caches"></a>

Mit Shader-Caching kann Ihre Anwendung die kostspielige Neukompilierung von Shadern in zukünftigen Stream-Sitzungen überspringen. Wenn Ihre Anwendung unter Stottern oder langsamen Ladezeiten leidet, kann die Erfassung eines Shader-Caches das Erlebnis für Ihre Endbenutzer erheblich verbessern.

Mit Amazon GameLift Streams können Sie einen Shader-Cache aus einer speziell dafür vorgesehenen Stream-Sitzung erfassen. Nachfolgende Stream-Sitzungen der Anwendung in allen kompatiblen Stream-Gruppen verwenden automatisch den erfassten Shader-Cache. Für die Verwendung der Shader-Caching-Funktion sind weder Code noch andere Änderungen an Ihrer Anwendung erforderlich.

## Voraussetzungen
<a name="shader-caches-prerequisites"></a>

Um Shader-Caching verwenden zu können, müssen Sie die folgenden Anforderungen erfüllen:
+ Die Stream-Gruppe muss am oder nach dem 31. Juli 2026 erstellt worden sein. Stream-Gruppen, die vor diesem Datum erstellt wurden, unterstützen kein Shader-Caching.

## Wie funktioniert Shader-Caching
<a name="shader-caches-how-it-works"></a>

Grafikanwendungen wie Spiele profitieren von Shader-Caches. Caches vermeiden wiederholte grafikbezogene Verarbeitungs- und Kompilierungsarbeiten. Um einen Shader-Cache aus bestimmten Stream-Sitzungen zu erfassen, sammelt Amazon GameLift Streams System-Shader-Cache-Dateien, die automatisch für Ihre Anwendung generiert wurden. Der Service speichert diesen Cache und wendet ihn automatisch auf zukünftige Sitzungen in kompatiblen Stream-Gruppen an. Dies reduziert den Zeitaufwand für die Verarbeitung von Shadern in zukünftigen Sitzungen. Für das Generieren oder Verwenden eines Shader-Cache sind keine Änderungen an Ihrer Anwendung erforderlich.

Der Shader-Caching-Lebenszyklus besteht aus drei Phasen:

1. **Erfassung ** — Sie führen eine Stream-Sitzung mit aktivierter Shader-Cache-Erfassung aus. Während dieser Sitzung kompiliert das System die von Ihrer Anwendung verwendeten Shader-Programme automatisch in einen lokalen Dateisystem-Cache. Wenn Sie Ihre Anwendung ordnungsgemäß beenden, packt Amazon GameLift Streams diesen lokalen Cache und lädt ihn hoch.

1. **Replikation ** — Amazon GameLift Streams repliziert den Shader-Cache an alle Streaming-Standorte der Stream-Gruppe. Sie können den Replikationsstatus mithilfe der [ ListApplicationShaderCaches ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) API-Operation überwachen.

1. **Verbrauch ** — Amazon GameLift Streams lädt den Shader-Cache automatisch herunter und wendet ihn auf alle nachfolgenden Stream-Sitzungen für dieselbe Anwendung an. Der Shader-Cache wird für alle kompatiblen zugehörigen Stream-Gruppen und Streaming-Standorte verwendet. Dieses Verhalten ist standardmäßig aktiviert.

## Erfassen eines Shader-Cache
<a name="shader-caches-capturing"></a>

Gehen Sie folgendermaßen vor, um einen Shader-Cache zu erfassen:

1. Starten Sie eine Stream-Sitzung mithilfe der [ StartStreamSession ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) API-Operation. Fügen Sie in der Anfrage das `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE` Set to `1` als zusätzliche Umgebungsvariable ein, wenn Sie Folgendes aufrufen [ StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html):

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

1. Verwenden Sie Ihre Anwendung wie gewohnt während der Sitzung.

1. Wenn Sie fertig sind, beenden Sie Ihre Anwendung ordnungsgemäß über das integrierte Menü oder mithilfe anderer integrierter Beendenbefehle. Dadurch wird sichergestellt, dass der Shader-Cache bereit ist, gesammelt zu werden.

1. Nach der Beendigung packt Amazon GameLift Streams den kompilierten Shader-Cache und beginnt mit der Replikation an alle Streaming-Standorte in allen kompatiblen zugehörigen Stream-Gruppen.

**Tipp**  
In Spieleanwendungen generiert das Navigieren durch verschiedene Umgebungen, Inhalte und Level zusätzliche Shader-Daten. Je mehr Bereiche Ihrer Anwendung Sie während der Erfassung abdecken, desto umfassender wird der Shader-Cache. Durch eine verbesserte Abdeckung können die Shader-Verarbeitungszeiten in zukünftigen Sitzungen weiter reduziert werden.

**Wichtig**  
Vermeiden Sie es, die Sitzung mithilfe der [ TerminateStreamSession ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_TerminateStreamSession.html) API-Operation zu beenden. Wenn Ihre Anwendung keinen integrierten Exit hat, verwenden Sie die [Admin-Shell für Stream-Sitzungen](troubleshoot-admin-shell-guide.md) Funktion, um sich remote anzumelden. Stoppen Sie dann den Anwendungsvorgang, nachdem Sie sichergestellt haben, dass sich die Anwendung im Ruhezustand befindet und keine neuen Inhalte wiedergibt.

Nachdem Sie einen Shader-Cache generiert haben, können Sie ihn verbessern, indem Sie weitere Sitzungen mit `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE` set auf `1` starten. Diese Sitzungen beginnen mit dem vorhandenen Shader-Cache und erzeugen eine aktualisierte Version.

### Größenbeschränkungen für den Shader-Cache
<a name="shader-caches-size-limits"></a>

Shader-Caches, die kleiner als 10 KB oder größer als 4 GB (unkomprimiert) sind, werden abgelehnt.

### Shader-Cache-Arbeitsablauf
<a name="shader-caches-workflow"></a>

Wenn Sie einen Shader-Cache für eine bestehende Amazon GameLift Streams-Anwendung generieren, beginnen alle kompatiblen zugehörigen Stream-Gruppen automatisch, ihn zu verwenden.

Um einen Shader-Cache zu testen, bevor er sich auf Produktionssitzungen auswirkt, empfehlen wir diesen Ansatz:

1. Erstellen Sie eine separate Anwendung.

1. Sammeln Sie den Shader-Cache für diese Anwendung.

1. Überprüfen Sie die Ergebnisse mithilfe einer neuen Stream-Sitzung.

1. Verwenden Sie die Anwendung in Ihrem Produktions-Setup.

## Shader-Cache-Replikation
<a name="shader-caches-replication"></a>

Nach einer erfolgreichen Erfassung stellt Amazon GameLift Streams den Shader-Cache automatisch an jedem aktiven Streaming-Standort in den kompatiblen zugehörigen Stream-Gruppen der Anwendung zur Verfügung. Dieser Replikationsvorgang ist in der Regel innerhalb weniger Minuten abgeschlossen.

Sie können den Fortschritt der Replikation mithilfe der [ ListApplicationShaderCaches ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) API-Operation überwachen. Das `Status` Shader-Cache-Feld gibt den aggregierten Status an allen Standorten der Stream-Gruppe an. Zu den möglichen Status gehören die folgenden.


| Status | Description | 
| --- | --- | 
| INITIALIZED | Amazon GameLift Streams hat die Anfrage erhalten und bereitet den Shader-Cache vor. | 
| PROCESSING | Amazon GameLift Streams repliziert den Shader-Cache an die Streaming-Standorte in den zugehörigen Stream-Gruppen. | 
| READY | Der Shader-Cache wird repliziert und kann in Stream-Sitzungen verwendet werden. | 
| ERROR | Bei der Verarbeitung des Shader-Cache ist ein Fehler aufgetreten. Erstellen Sie einen neuen Shader-Cache, um es erneut zu versuchen. | 
| DELETING | Amazon GameLift Streams löscht den Shader-Cache. | 

Wenn der Status lautet`READY`, wird der Shader-Cache automatisch auf alle neuen Stream-Sitzungen für die Anwendung angewendet.

Die neu bereitgestellte Stream-Kapazität erhält sofort den Shader-Cache. Bei vorhandener Stream-Gruppenkapazität kann es bis zu einer Stunde dauern, bis der neue Shader-Cache abgerufen wird.

## Deaktivieren des Shader-Cache-Verbrauchs
<a name="shader-caches-disabling"></a>

Standardmäßig lädt Amazon GameLift Streams den Shader-Cache herunter und wendet ihn an, bevor die Anwendung gestartet wird. Um dieses Verhalten für eine bestimmte Sitzung zu deaktivieren, legen Sie die folgende Umgebungsvariable fest:

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

Um einen vorhandenen Shader-Cache zu verbessern, geben Sie nur `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE` an. Um den vorhandenen Cache zu verwerfen und einen komplett neuen zu sammeln, geben Sie sowohl als auch `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE` an. `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE`

## Shader-Cache-Kompatibilität
<a name="shader-caches-compatibility"></a>

Sie können eine Anwendung mehreren Stream-Gruppen zuordnen. Um herauszufinden, welchen Stream-Gruppen Ihre Anwendung derzeit zugeordnet ist, verwenden Sie die [ GetApplication ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetApplication.html) API-Operation und überprüfen Sie das `AssociatedStreamGroups` Feld.

Nicht alle zugehörigen Stream-Gruppen sind unbedingt mit einem gesammelten Shader-Cache kompatibel. Mithilfe der [ ListApplicationShaderCaches ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) API-Operation können Sie ermitteln, welche zugehörigen Stream-Gruppen kompatibel sind. In der Antwort enthält das `AssociatedStreamGroups` Feld nur die zugehörigen Stream-Gruppen, die mit dem Shader-Cache kompatibel sind.

Grafikhardware und Treiber bestimmen, wie das System Shader-Programme kompiliert. Aus diesem Grund sind Caches nicht auf verschiedene Hardware- und Softwarekonfigurationen übertragbar. Bei Amazon GameLift Streams wird die Shader-Cache-Kompatibilität durch die Eigenschaften der bei der Erfassung verwendeten Stream-Gruppe bestimmt:
+ Exaktes Modell der zugrunde liegenden Grafikhardware (GPU)
+ Installierte GPU-Treiberversion

In der Praxis bedeutet dies, dass für einen Amazon GameLift Streams-Shader-Cache die folgenden Kompatibilitätsbeschränkungen gelten.
+ Ein Shader-Cache ist nicht mit Stream-Klassen kompatibel, die unterschiedliche GPU-Hardware verwenden, d. h. Stream-Klassen unterschiedlicher Generationen. Zum Beispiel `gen5n_high` sind `gen6n_high` Stream-Klassen nicht kompatibel, aber `gen6n_high` und `gen6n_ultra` schon. Ähnlich `gen6n_pro` und `gen6e_pro` sind auch nicht kompatibel.
+ Ein Shader-Cache ist zwischen Stream-Gruppen, auf denen eine andere GPU-Treiberversion installiert ist, nicht kompatibel. Eine Stream-Gruppe verwendet während ihrer gesamten Lebensdauer dieselbe GPU-Treiberversion, aber eine neu erstellte Gruppe erhält möglicherweise eine aktualisierte Version. Weitere Informationen zu den GPU-Treiberversionen, die derzeit auf Amazon GameLift Streams für neue Stream-Gruppen verfügbar sind, finden Sie unter[Versionen von GPU-Treibern](configuration-options.md#configuration-options-gpu-driver-versions).
+ Ein Shader-Cache ist zwischen den Proton Laufzeiten WindowsLinux, und nicht kompatibel.

Amazon GameLift Streams bestimmt diese Kompatibilität automatisch und verwendet den gesammelten Shader-Cache nur bei kompatiblen Sitzungen.

### Beispiel: Stream-Klassen verschiedener Generationen
<a name="shader-caches-compatibility-example1"></a>

Ihre Anwendung ist zwei Stream-Gruppen zugeordnet:
+ Die erste Stream-Gruppe verwendet die Stream-Klasse `gen5n_high`
+ Die zweite Stream-Gruppe verwendet die Stream-Klasse `gen6n_high`

Derselbe Shader-Cache ist für diese beiden Stream-Gruppen unterschiedlicher Generationen nicht kompatibel. Um beide Stream-Gruppen zu unterstützen, generieren Sie für jede Stream-Klasse einen separaten Shader-Cache.

### Beispiel: Verschiedene GPU-Treiberversionen
<a name="shader-caches-compatibility-example2"></a>

Sie haben eine Stream-Gruppe, die die `gen6n_high` Stream-Klasse verwendet, und haben dafür einen Shader-Cache generiert. Später erstellen Sie eine weitere Stream-Gruppe, die immer noch dieselbe Stream-Klasse verwendet`gen6n_high`.

Diese neue Stream-Gruppe verwendet jetzt eine andere, neuere GPU-Treiberversion. Durch die Verwendung [ ListApplicationShaderCaches ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) stellst du fest, dass deine neue Stream-Gruppe nicht unter aufgeführt ist`AssociatedStreamGroups`. Der bestehende Shader-Cache ist daher nicht mit der neuen Stream-Gruppe kompatibel. Generieren Sie einen neuen Shader-Cache, indem Sie die neue Stream-Gruppe verwenden.

## Behebung von Problemen mit dem Shader-Cache
<a name="shader-caches-troubleshooting"></a>
+ **ListApplicationShaderCaches zeigt den Status FEHLER ** — Während der Shader-Cache-Verarbeitung ist ein Fehler aufgetreten. Erstellen Sie einen neuen Shader-Cache, um es erneut zu versuchen.
+ **ListApplicationShaderCaches listet den neuen Shader-Cache nicht auf **
  + Der Shader-Cache war zu klein oder zu groß, um gesammelt zu werden.
  + Die Anwendung wurde nicht ordnungsgemäß beendet.
  + Bei der Erfassung ist ein Fehler aufgetreten.

  Erstellen Sie einen neuen Shader-Cache, um es erneut zu versuchen.