Unity 가상 텍스처링 스트리밍
개요
Unity에서는 가상 텍스처링을 통해 GPU 메모리에서 고정 크기의 텍스처 캐시를 사용하여 그래픽 자원을 효율적으로 관리합니다. 이 문서에서는 가상 텍스처링의 개념과 활용 방법에 대해 설명하겠습니다.
가상 텍스처링의 특징
- 고정 크기 캐시 사용: 그래픽스 포맷당 하나의 캐시가 있으며, 기본 크기를 설정하고 오버라이드 할 수 있습니다.
- CPU 캐시 활용: 메인 메모리에 있는 하나의 CPU 캐시를 사용하여 타일 페이지를 저장합니다.
- 타일 요청 프로세스: 시스템이 타일을 요청하면 해당 타일이 포함된 페이지를 읽어옵니다.
캐시 크기 설정
- HDRP 에셋에서 각 품질 레벨에 대해 캐시 크기(MB)를 조정할 수 있습니다.
- 스크립트에서
VirtualTexturing.Streaming.SetGPUCacheSettings
메서드를 사용하여 캐시 크기를 설정할 수 있습니다.
캐시 크기 변경 시 고려사항
- 리소스 소모가 증가하므로 캐시 크기를 변경할 때는 레벨 로드와 같이 프레임 속도가 덜 중요할 때 수행해야 합니다.
- 출력 화면 해상도와 텍스처 스택의 레이어 개수는 캐시의 최적 크기에 큰 영향을 미칩니다.
캐시 스래싱(cache thrashing)
- 캐시 크기가 너무 작으면 동일한 프레임에서 타일을 로드 및 언로드해야 하여 성능 저하가 발생할 수 있습니다.
- 시스템은 필요에 따라 텍스처 품질을 자동으로 낮추고, 캐시 사용량을 모니터링하여 빈번한 샘플링을 피합니다.
문제 해결
- 텍스처가 흐릿하게 보이면 캐시 크기를 늘려야 합니다.
- 캐시 크기가 충분히 커야 조작 중에 최근 타일을 계속 유지할 수 있습니다.
셰이더 그래프에서의 가상 텍스처링
- 텍스처를 "Virtual Texturing Only"로 표시하여 가상 텍스처링 스트리밍을 활용할 수 있습니다.
예제 코드
캐시 크기를 설정하는 스크립트 예제는 다음과 같습니다:
// 캐시 크기 설정
VirtualTexturing.Streaming.SetGPUCacheSettings(1024); // 1024MB로 설정
요약
가상 텍스처링 스트리밍은 그래픽 자원의 효율성을 높이기 위한 Unity의 강력한 기능입니다. 이 기능을 통해 개발자는 높은 품질의 비주얼을 유지하면서도 성능을 최적화할 수 있습니다. 필요한 때에 적절한 캐시 크기를 설정하고, 시스템의 특성을 이해하여 최상의 결과를 얻는 것이 중요합니다.