

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Dengan caching shader, aplikasi Anda dapat melewati kompilasi ulang shader yang mahal di sesi streaming mendatang. Jika aplikasi Anda mengalami kegagalan atau waktu muat yang lambat, menangkap cache shader dapat secara signifikan meningkatkan pengalaman bagi pengguna akhir Anda.

Dengan Amazon GameLift Streams, Anda dapat menangkap cache shader dari sesi streaming yang ditunjuk khusus. Sesi aliran berikutnya dari aplikasi di semua grup aliran yang kompatibel secara otomatis menggunakan cache shader yang diambil. Menggunakan fitur caching shader tidak memerlukan kode atau perubahan lain pada aplikasi Anda.

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

Untuk menggunakan caching shader, Anda harus memenuhi persyaratan berikut:
+ Grup streaming harus dibuat pada atau setelah 31 Juli 2026. Grup streaming yang dibuat sebelum tanggal ini tidak mendukung caching shader.

## Cara kerja caching shader
<a name="shader-caches-how-it-works"></a>

Aplikasi grafis seperti game mendapat manfaat dari cache shader. Cache menghindari pemrosesan dan kompilasi terkait grafik yang berulang. Untuk menangkap cache shader dari sesi streaming yang ditunjuk, Amazon Stre GameLift ams mengumpulkan file cache shader sistem yang dibuat secara otomatis untuk aplikasi Anda. Layanan menyimpan cache ini dan secara otomatis menerapkannya ke sesi mendatang pada grup aliran yang kompatibel. Ini mengurangi waktu yang dihabiskan untuk memproses shader selama sesi mendatang. Menghasilkan atau menggunakan cache shader tidak memerlukan perubahan pada aplikasi Anda.

Siklus hidup caching shader memiliki tiga tahap:

1. **Menangkap ** — Anda menjalankan sesi streaming dengan penangkapan cache shader diaktifkan. Selama sesi ini, sistem mengkompilasi program shader yang digunakan oleh aplikasi Anda secara otomatis ke cache filesystem lokal. Saat Anda keluar dari aplikasi dengan anggun, Amazon GameLift Streams mengemas dan mengunggah cache lokal ini.

1. **Replikasi ** — Amazon GameLift Streams mereplikasi cache shader ke semua lokasi streaming grup streaming. Anda dapat memantau status replikasi menggunakan operasi [ ListApplicationShaderCaches ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) API.

1. **Konsumsi ** — Amazon GameLift Streams secara otomatis mengunduh dan menerapkan cache shader ke semua sesi streaming berikutnya untuk aplikasi yang sama. Cache shader digunakan di semua grup aliran terkait yang kompatibel dan lokasi streaming. Perilaku ini aktif secara default.

## Menangkap cache shader
<a name="shader-caches-capturing"></a>

Untuk menangkap cache shader, ikuti langkah-langkah berikut:

1. Mulai sesi streaming menggunakan operasi [ StartStreamSession ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) API. Dalam permintaan, sertakan `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE` set ke `1` sebagai variabel lingkungan tambahan saat memanggil [ StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html):

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

1. Gunakan aplikasi Anda seperti biasanya selama sesi.

1. Setelah selesai, keluar dari aplikasi Anda dengan anggun dari menu bawaan atau dengan menggunakan perintah keluar bawaan lainnya. Ini memastikan bahwa cache shader siap untuk dikumpulkan.

1. Setelah penghentian, Amazon GameLift Streams mengemas cache shader yang dikompilasi dan memulai replikasi ke semua lokasi streaming di semua grup aliran terkait yang kompatibel.

**Tip**  
Dalam aplikasi game, menavigasi melalui lingkungan, konten, dan level yang berbeda menghasilkan data shader tambahan. Semakin banyak aplikasi yang Anda tutupi selama pengambilan, semakin komprehensif cakupan cache shader. Peningkatan cakupan dapat mengurangi waktu pemrosesan shader di sesi mendatang.

**penting**  
Hindari mengakhiri sesi menggunakan operasi [ TerminateStreamSession ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_TerminateStreamSession.html) API. Jika aplikasi Anda tidak memiliki pintu keluar bawaan, gunakan [Shell admin sesi streaming](troubleshoot-admin-shell-guide.md) fitur ini untuk masuk dari jarak jauh. Kemudian hentikan proses aplikasi setelah memastikan bahwa aplikasi dalam keadaan idle dan tidak merender konten baru.

Setelah membuat cache shader, Anda dapat memperbaikinya dengan memulai sesi lebih lanjut dengan `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE` set to`1`. Sesi ini dimulai dengan cache shader yang ada dan menghasilkan versi yang diperbarui.

### Batas ukuran cache Shader
<a name="shader-caches-size-limits"></a>

Cache Shader yang lebih kecil dari 10 KB atau lebih besar dari 4 GB (tidak terkompresi) ditolak.

### Alur kerja cache Shader
<a name="shader-caches-workflow"></a>

Saat Anda membuat cache shader untuk aplikasi Amazon GameLift Streams yang ada, semua grup aliran terkait yang kompatibel secara otomatis mulai menggunakannya.

Untuk menguji cache shader sebelum mempengaruhi sesi produksi, kami merekomendasikan pendekatan ini:

1. Buat aplikasi terpisah.

1. Kumpulkan cache shader untuk aplikasi itu.

1. Verifikasi hasil menggunakan sesi streaming baru.

1. Gunakan aplikasi dalam pengaturan produksi Anda.

## Replikasi cache Shader
<a name="shader-caches-replication"></a>

Setelah pengambilan berhasil, Amazon GameLift Streams secara otomatis membuat cache shader tersedia di setiap lokasi streaming aktif di grup aliran terkait aplikasi yang kompatibel. Proses replikasi ini biasanya selesai dalam beberapa menit.

Anda dapat memantau kemajuan replikasi menggunakan operasi [ ListApplicationShaderCaches ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) API. Bidang cache `Status` shader menunjukkan status agregat di semua lokasi grup aliran. Status yang mungkin termasuk yang berikut ini.


| Status | Deskripsi | 
| --- | --- | 
| INITIALIZED | Amazon GameLift Streams menerima permintaan dan sedang mempersiapkan cache shader. | 
| PROCESSING | Amazon GameLift Streams mereplikasi cache shader ke lokasi streaming di grup aliran terkait. | 
| READY | Cache shader direplikasi dan tersedia untuk digunakan dalam sesi streaming. | 
| ERROR | Terjadi kesalahan selama pemrosesan cache shader. Buat cache shader baru untuk mencoba lagi. | 
| DELETING | Amazon GameLift Streams menghapus cache shader. | 

Ketika statusnya`READY`, cache shader secara otomatis diterapkan ke semua sesi streaming baru untuk aplikasi.

Kapasitas aliran yang baru disediakan menerima cache shader segera. Kapasitas grup aliran yang ada dapat memakan waktu hingga satu jam untuk mendapatkan cache shader baru.

## Menonaktifkan konsumsi cache shader
<a name="shader-caches-disabling"></a>

Secara default, Amazon GameLift Streams mengunduh dan menerapkan cache shader sebelum meluncurkan aplikasi. Untuk menonaktifkan perilaku ini untuk sesi tertentu, tetapkan variabel lingkungan berikut:

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

Untuk meningkatkan cache shader yang ada, sediakan saja`GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE`. Untuk membuang cache yang ada dan mengumpulkan yang sama sekali baru, berikan keduanya `GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE` dan`GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE`.

## Kompatibilitas cache Shader
<a name="shader-caches-compatibility"></a>

Anda dapat mengaitkan aplikasi dengan beberapa grup aliran. Untuk mengetahui grup aliran mana yang saat ini terkait dengan aplikasi Anda, gunakan operasi [ GetApplication ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetApplication.html) API dan tinjau `AssociatedStreamGroups` bidang tersebut.

Tidak semua grup aliran terkait harus kompatibel dengan cache shader yang dikumpulkan. Anda dapat menentukan grup aliran terkait mana yang kompatibel dengan menggunakan operasi [ ListApplicationShaderCaches ](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html) API. Dalam tanggapannya, `AssociatedStreamGroups` bidang hanya berisi grup aliran terkait yang kompatibel dengan cache shader.

Perangkat keras grafis dan driver menentukan bagaimana sistem mengkompilasi program shader. Karena itu, cache tidak dapat ditransfer di berbagai konfigurasi perangkat keras dan perangkat lunak. Dengan Amazon GameLift Streams, kompatibilitas cache shader ditentukan oleh properti grup aliran yang digunakan selama pengambilan:
+ Model yang tepat dari perangkat keras grafis yang mendasarinya (GPU)
+ Versi driver GPU yang diinstal

Dalam praktiknya, ini berarti bahwa cache shader Amazon GameLift Streams memiliki batasan kompatibilitas berikut.
+ Cache shader tidak kompatibel di seluruh kelas aliran yang menggunakan perangkat keras GPU yang berbeda, yang berarti kelas aliran generasi yang berbeda. Misalnya, `gen5n_high` dan kelas `gen6n_high` streaming tidak kompatibel, tetapi `gen6n_high` dan `gen6n_ultra` memang demikian. Demikian pula, `gen6n_pro` dan `gen6e_pro` juga tidak kompatibel.
+ Cache shader tidak kompatibel antara grup aliran yang memiliki versi driver GPU yang berbeda diinstal. Grup streaming menggunakan versi driver GPU yang sama selama masa pakainya, tetapi yang baru dibuat mungkin menerima versi yang diperbarui. Untuk informasi selengkapnya tentang versi driver GPU yang saat ini tersedia di Amazon Stre GameLift ams untuk grup aliran baru, lihat[Versi driver GPU](configuration-options.md#configuration-options-gpu-driver-versions).
+ Cache shader tidak kompatibel antaraWindows,Linux, dan Proton runtime.

Amazon GameLift Streams secara otomatis menentukan kompatibilitas ini dan menggunakan cache shader yang dikumpulkan hanya dengan sesi yang kompatibel.

### Contoh: Kelas aliran generasi yang berbeda
<a name="shader-caches-compatibility-example1"></a>

Aplikasi Anda dikaitkan dengan dua grup aliran:
+ Grup aliran pertama menggunakan kelas stream `gen5n_high`
+ Grup aliran kedua menggunakan kelas stream `gen6n_high`

Cache shader yang sama tidak kompatibel di dua grup aliran generasi yang berbeda ini. Untuk mendukung kedua grup aliran, buat cache shader terpisah untuk setiap kelas aliran.

### Contoh: Versi driver GPU yang berbeda
<a name="shader-caches-compatibility-example2"></a>

Anda memiliki grup aliran yang menggunakan kelas `gen6n_high` aliran, dan telah menghasilkan cache shader untuk itu. Kemudian Anda membuat grup aliran lain, masih menggunakan kelas aliran yang sama`gen6n_high`.

Grup streaming baru ini sekarang menggunakan versi driver GPU yang berbeda dan lebih baru. Dengan menggunakan [ ListApplicationShaderCaches](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListApplicationShaderCaches.html), Anda mengetahui bahwa grup streaming baru Anda tidak terdaftar di bawah`AssociatedStreamGroups`. Oleh karena itu, cache shader yang ada tidak kompatibel dengan grup aliran baru. Buat cache shader baru dengan menggunakan grup aliran baru.

## Memecahkan masalah cache shader
<a name="shader-caches-troubleshooting"></a>
+ **ListApplicationShaderCaches menunjukkan status ERR ** OR — Terjadi kesalahan selama pemrosesan cache shader. Buat cache shader baru untuk mencoba lagi.
+ **ListApplicationShaderCaches tidak mencantumkan cache shader baru **
  + Cache shader terlalu kecil atau terlalu besar untuk dikumpulkan.
  + Aplikasi tidak keluar dengan anggun.
  + Terjadi kesalahan selama pengumpulan.

  Buat cache shader baru untuk mencoba lagi.