PSO Cache
Pipeline State Object Cache
- 구식 API는 Draw Call 전에 관련 GPU 파라미터를 변경하기 위해 여러 번의 콜을 해야했다
- Parameter A 업데이트 + Parameter B 업데이트 + …
- 최신 API는 PSO라는 GPU Parameter의 집합, 즉 GPU State를 패키징하여 한번에 적용함으로써 더 효율적인 Rendering을 할 수 있다
캐싱을 하는 이유?
- 어떤 Draw Call을 할 때, 이 GPU State가 한번도 없었던 새로운 State 라면 GPU는 이 PSO를 생성하고 컴파일한다
- 이 단계가 꽤나 무겁기 때문에, 게임에서는 스터터링으로 나타날 수도 있다
단계
- 개발 단계에서 필요한 PSO 조합을 수집
- 최대한 많은 머티리얼과 비주얼 이펙트를 본다
- 수집된 정보를 PSO 캐시 파일로 저장
- 게임을 배포할 때 POS 캐시 파일을 함께 배포
- 프로젝트를 쿠킹 또는 패키징
- 배포된 게임을 실행하면, 게임 시작 시 캐시 파일을 읽어 필요한 모든 PSO를 미리 컴파일하고 준비