기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
셰이더 캐시
셰이더 캐싱을 사용하면 애플리케이션이 향후 스트림 세션에서 비용이 많이 드는 셰이더 재컴파일을 건너뛸 수 있습니다. 애플리케이션이 끊기거나 로드 시간이 느린 경우 셰이더 캐시를 캡처하면 최종 사용자의 경험을 크게 개선할 수 있습니다.
Amazon GameLift Streams를 사용하면 특별히 지정된 스트림 세션에서 셰이더 캐시를 캡처할 수 있습니다. 호환되는 모든 스트림 그룹에 있는 애플리케이션의 후속 스트림 세션은 캡처된 셰이더 캐시를 자동으로 사용합니다. 셰이더 캐싱 기능을 사용하면 애플리케이션에 대한 코드나 기타 변경 사항이 필요하지 않습니다.
사전 조건
셰이더 캐싱을 사용하려면 다음 요구 사항을 충족해야 합니다.
-
스트림 그룹은 2026년 7월 31일 이후에 생성되어야 합니다. 이 날짜 이전에 생성된 스트림 그룹은 셰이더 캐싱을 지원하지 않습니다.
셰이더 캐싱 작동 방식
게임과 같은 그래픽 애플리케이션은 셰이더 캐시의 이점을 누릴 수 있습니다. 캐시는 반복되는 그래픽 관련 처리 및 컴파일 작업을 방지합니다. 지정된 스트림 세션에서 셰이더 캐시를 캡처하기 위해 Amazon GameLift Streams는 애플리케이션에 대해 자동으로 생성된 시스템 셰이더 캐시 파일을 수집합니다. 서비스는이 캐시를 저장하고 호환되는 스트림 그룹의 향후 세션에 자동으로 적용합니다. 이렇게 하면 향후 세션 중에 셰이더를 처리하는 데 소요되는 시간이 줄어듭니다. 셰이더 캐시를 생성하거나 사용하는 경우 애플리케이션을 변경할 필요가 없습니다.
셰이더 캐싱 수명 주기에는 세 단계가 있습니다.
-
캡처 - 셰이더 캐시 캡처가 활성화된 상태에서 스트림 세션을 실행합니다. 이 세션 중에 시스템은 애플리케이션에서 사용하는 셰이더 프로그램을 자동으로 로컬 파일 시스템 캐시로 컴파일합니다. 애플리케이션을 정상적으로 종료하면 Amazon GameLift Streams가이 로컬 캐시를 패키징하고 업로드합니다.
-
복제 - Amazon GameLift Streams는 셰이더 캐시를 스트림 그룹의 모든 스트리밍 위치에 복제합니다. ListApplicationShaderCaches API 작업을 사용하여 복제 상태를 모니터링할 수 있습니다.
-
소비 - Amazon GameLift Streams는 자동으로 셰이더 캐시를 다운로드하여 동일한 애플리케이션의 모든 후속 스트림 세션에 적용합니다. 셰이더 캐시는 호환되는 모든 관련 스트림 그룹 및 스트리밍 위치에서 사용됩니다. 이 동작은 기본적으로 켜져 있습니다.
셰이더 캐시 캡처
셰이더 캐시를 캡처하려면 다음 단계를 따릅니다.
-
StartStreamSession API 작업을 사용하여 스트림 세션을 시작합니다. 요청에 StartStreamSession을 호출할 때 로
GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE설정된를 추가 환경 변수1로 포함합니다.{ "AdditionalEnvironmentVariables": { "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE": "1" } } -
세션 중에 평소와 같이 애플리케이션을 사용합니다.
-
완료되면 기본 제공 메뉴에서 또는 다른 기본 제공 종료 명령을 사용하여 애플리케이션을 정상적으로 종료합니다. 이렇게 하면 셰이더 캐시를 수집할 준비가 됩니다.
-
종료 후 Amazon GameLift Streams는 컴파일된 셰이더 캐시를 패키징하고 호환되는 모든 관련 스트림 그룹의 모든 스트리밍 위치로 복제를 시작합니다.
작은 정보
게임 애플리케이션에서 다양한 환경, 콘텐츠 및 레벨을 탐색하면 추가 셰이더 데이터가 생성됩니다. 캡처 중에 다루는 애플리케이션이 많을수록 셰이더 캐시 적용 범위가 더 포괄적이 됩니다. 적용 범위를 개선하면 향후 세션에서 셰이더 처리 시간을 더욱 줄일 수 있습니다.
중요
TerminateStreamSession API 작업을 사용하여 세션을 종료하지 마세요. 애플리케이션에 기본 제공 종료가 없는 경우 스트림 세션 관리자 셸 기능을 사용하여 원격으로 로그인합니다. 그런 다음 애플리케이션이 유휴 상태이고 새 콘텐츠를 렌더링하지 않는지 확인한 후 애플리케이션 프로세스를 중지합니다.
셰이더 캐시를 생성한 후를 로 GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE 설정하여 추가 세션을 시작하여 셰이더 캐시를 개선할 수 있습니다1. 이러한 세션은 기존 셰이더 캐시로 시작하여 업데이트된 버전을 생성합니다.
셰이더 캐시 크기 제한
10KB보다 작거나 4GB(압축되지 않음)보다 큰 셰이더 캐시는 거부됩니다.
셰이더 캐시 워크플로
기존 Amazon GameLift Streams 애플리케이션에 대한 셰이더 캐시를 생성하면 호환되는 모든 관련 스트림 그룹이 자동으로 사용을 시작합니다.
프로덕션 세션에 영향을 미치기 전에 셰이더 캐시를 테스트하려면 다음 방법을 사용하는 것이 좋습니다.
별도의 애플리케이션을 생성합니다.
해당 애플리케이션의 셰이더 캐시를 수집합니다.
새 스트림 세션을 사용하여 결과를 확인합니다.
프로덕션 설정에서 애플리케이션을 사용합니다.
셰이더 캐시 복제
캡처에 성공하면 Amazon GameLift Streams는 애플리케이션의 호환되는 관련 스트림 그룹의 모든 활성 스트리밍 위치에서 셰이더 캐시를 자동으로 사용할 수 있도록 합니다. 이 복제 프로세스는 일반적으로 몇 분 내에 완료됩니다.
ListApplicationShaderCaches API 작업을 사용하여 복제 진행 상황을 모니터링할 수 있습니다. 셰이더 캐시 Status 필드는 스트림 그룹의 모든 위치에서 집계된 상태를 나타냅니다. 가능한 상태는 다음과 같습니다.
| Status | 설명 |
|---|---|
INITIALIZED |
Amazon GameLift Streams가 요청을 수신하고 셰이더 캐시를 준비 중입니다. |
PROCESSING |
Amazon GameLift Streams가 셰이더 캐시를 연결된 스트림 그룹의 스트리밍 위치로 복제하고 있습니다. |
READY |
셰이더 캐시가 복제되어 스트림 세션에서 사용할 수 있습니다. |
ERROR |
셰이더 캐시 처리 중에 오류가 발생했습니다. 다시 시도할 새 셰이더 캐시를 생성합니다. |
DELETING |
Amazon GameLift Streams가 셰이더 캐시를 삭제하고 있습니다. |
상태가 이면 READY셰이더 캐시가 애플리케이션의 모든 새 스트림 세션에 자동으로 적용됩니다.
새로 프로비저닝된 스트림 용량은 셰이더 캐시를 즉시 수신합니다. 기존 스트림 그룹 용량은 새 셰이더 캐시를 가져오는 데 최대 1시간이 걸릴 수 있습니다.
셰이더 캐시 소비 비활성화
기본적으로 Amazon GameLift Streams는 애플리케이션을 시작하기 전에 셰이더 캐시를 다운로드하고 적용합니다. 특정 세션에 대해이 동작을 비활성화하려면 다음 환경 변수를 설정합니다.
{ "AdditionalEnvironmentVariables": { "GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE": "1" } }
기존 셰이더 캐시를 개선하려면 만 제공합니다GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE. 기존 캐시를 삭제하고 완전히 새로운 캐시를 수집하려면 GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_IGNORE 및를 모두 제공합니다GAMELIFT_STREAMS_PACKAGED_SHADER_CACHE_CAPTURE.
셰이더 캐시 호환성
애플리케이션을 여러 스트림 그룹과 연결할 수 있습니다. 애플리케이션이 현재 연결되어 있는 스트림 그룹을 확인하려면 GetApplication API 작업을 사용하고 AssociatedStreamGroups 필드를 검토합니다.
연결된 모든 스트림 그룹이 수집된 셰이더 캐시와 반드시 호환되는 것은 아닙니다. ListApplicationShaderCaches API 작업을 사용하여 호환되는 연결된 스트림 그룹을 확인할 수 있습니다. 응답에서 AssociatedStreamGroups 필드에는 셰이더 캐시와 호환되는 연결된 스트림 그룹만 포함됩니다.
그래픽 하드웨어 및 드라이버는 시스템이 셰이더 프로그램을 컴파일하는 방법을 결정합니다. 따라서 캐시는 다양한 하드웨어 및 소프트웨어 구성에서 이전할 수 없습니다. Amazon GameLift Streams에서 셰이더 캐시 호환성은 캡처 중에 사용되는 스트림 그룹의 속성에 따라 결정됩니다.
-
기본 그래픽 하드웨어(GPU)의 정확한 모델
-
설치된 GPU 드라이버 버전
실제로 이는 Amazon GameLift Streams 셰이더 캐시에 다음과 같은 호환성 제한이 있음을 의미합니다.
-
셰이더 캐시는 서로 다른 GPU 하드웨어를 사용하는 스트림 클래스 간에 호환되지 않습니다. 즉, 세대 스트림 클래스가 다릅니다. 예를 들어
gen5n_high및gen6n_high스트림 클래스는 호환되지 않지만gen6n_high및 스트림 클래스gen6n_ultra는 호환됩니다. 마찬가지로gen6n_pro및gen6e_pro도 호환되지 않습니다. -
셰이더 캐시는 다른 GPU 드라이버 버전이 설치된 스트림 그룹 간에 호환되지 않습니다. 스트림 그룹은 수명 주기 동안 동일한 GPU 드라이버 버전을 사용하지만 새로 생성된 드라이버는 업데이트된 버전을 받을 수 있습니다. 새 스트림 그룹에 대해 현재 Amazon GameLift Streams에서 사용할 수 있는 GPU 드라이버 버전에 대한 자세한 내용은 섹션을 참조하세요GPU 드라이버 버전.
-
셰이더 캐시는 Windows, Linux및 Proton 런타임 간에 호환되지 않습니다.
Amazon GameLift Streams는이 호환성을 자동으로 결정하고 수집된 셰이더 캐시를 호환되는 세션에서만 사용합니다.
예: 다양한 생성 스트림 클래스
애플리케이션은 두 개의 스트림 그룹과 연결됩니다.
-
첫 번째 스트림 그룹은 스트림 클래스를 사용합니다.
gen5n_high -
두 번째 스트림 그룹은 스트림 클래스를 사용합니다.
gen6n_high
동일한 셰이더 캐시는이 두 세대 스트림 그룹 간에 호환되지 않습니다. 두 스트림 그룹을 모두 지원하려면 각 스트림 클래스에 대해 별도의 셰이더 캐시를 생성합니다.
예: 다양한 GPU 드라이버 버전
스트림 클래스를 사용하고 이를 위한 셰이더 캐시를 생성한 gen6n_high 스트림 그룹이 있습니다. 나중에 동일한 스트림 클래스를 사용하여 다른 스트림 그룹을 생성합니다gen6n_high.
이 새 스트림 그룹은 이제 다른 최신 GPU 드라이버 버전을 사용합니다. ListApplicationShaderCaches를 사용하면 새 스트림 그룹이 아래에 나열되지 않는다는 것을 알 수 있습니다AssociatedStreamGroups. 따라서 기존 셰이더 캐시는 새 스트림 그룹과 호환되지 않습니다. 새 스트림 그룹을 사용하여 새 셰이더 캐시를 생성합니다.
셰이더 캐시 문제 해결
-
ListApplicationShaderCaches는 ERROR - 셰이더 캐시 처리 중에 오류가 발생했습니다 상태를 표시합니다. 다시 시도할 새 셰이더 캐시를 생성합니다.
-
ListApplicationShaderCaches는 새 셰이더 캐시를 나열하지 않습니다.
셰이더 캐시가 너무 작거나 너무 커서 수집할 수 없습니다.
애플리케이션이 정상적으로 종료되지 않았습니다.
수집 중에 오류가 발생했습니다.
다시 시도할 새 셰이더 캐시를 생성합니다.