가상 텍스처링은 GPU 메모리에서 고정 크기의 텍스처 캐시를 사용합니다. 그래픽스 포맷당 하나의 캐시가 있습니다. 캐시의 기본 크기를 설정하여 기본 크기를 덮어쓸 수 있습니다.
또한 SVT(스트리밍 가상 텍스처링) 시스템은 메인 메모리에서 하나의 CPU 캐시를 사용하여 타일 페이지를 저장합니다. 타일 페이지에는 SVT 시스템이 디스크에서 CPU 캐시로 함께 읽는 여러 개의 타일이 포함되어 있습니다. 이렇게 하면 더 느린 드라이브에서 디스크의 읽기 처리 속도가 증가합니다. 가상 텍스처링 시스템이 타일을 요청하면 해당 타일이 포함된 페이지를 읽습니다. 시스템이 해당 페이지의 다른 타일을 다음 프레임에서 요청할 가능성이 높으므로 CPU 캐시는 해당 페이지를 유지하여 디스크에서 다시 읽지 않도록 합니다. CPU 캐시 크기가 클수록 가상 텍스처링으로 페이지를 메인 메모리에 더 오래 유지할 수 있습니다.
가상 텍스처링은 해당 포맷을 사용하는 텍스처가 포함된 텍스처 스택이 있는 머티리얼을 렌더링할 때 특정 그래픽스 포맷의 GPU 캐시를 할당합니다. HDRP 에셋에 캐시 크기(MB 단위)를 설정할 수 있으므로 각 품질 수준에 설정을 서로 다르게 지정할 수 있습니다.
VirtualTexturing.Streaming.SetGPUCacheSettings 메서드를 사용하여 스크립트에서 캐시 크기를 설정할 수도 있습니다.
캐시 크기를 변경할 수 있지만, 이렇게 하면 리소스를 많이 소모하는 CPU 및 GPU 작업이 발생하고 메인 스레드와 렌더 스레드가 모두 차단됩니다. 캐시 크기를 변경하는 데 걸리는 시간은 캐시의 크기와 수에 따라 다릅니다. 눈에 띄는 멈춤이나 끊김 현상을 방지하려면 프레임 속도가 덜 중요할 때(예: 레벨 로딩 시) 캐시 크기를 변경해야 합니다.
특정 캐시의 최적 크기에 영향을 주는 주요 요인은 출력 화면 해상도와 해당 그래픽스 포맷을 사용하는 각 텍스처 스택의 레이어 수입니다. 씬의 머티리얼 수와 텍스처 해상도는 최적의 크기에 영향을 주지 않습니다. 최고 품질 설정의 전체 HD 화면 해상도에서 총 GPU 캐시 크기는 일반적으로 700MB입니다.
‘캐시 스래싱’이라는 문제는 캐시의 크기가 너무 작아 콘텐츠를 다 담을 수 없어서 같은 프레임에서 타일을 로드하고 언로드해야 하는 경우에 발생합니다. 가상 텍스처링 시스템은 캐시 스래싱을 방지하기 위해 필요에 따라 텍스처 품질을 자동으로 낮춥니다. 이 시스템은 캐시 사용을 모니터링하고 픽셀 셰이더의 텍스처 스택 샘플링에 대한 밉맵 바이어스를 자동으로 관리합니다. 캐시가 채워지면 밉맵 바이어스가 증가합니다. 이렇게 하면 가상 텍스처링 시스템이 낮은 해상도의 타일을 요청하므로 캐시 공간을 절약하여 요청한 모든 타일을 포함할 수 있습니다.
텍스처가 흐릿해 보이면 캐시의 크기를 늘리십시오. 캐시가 이미 최고 품질의 프레임을 렌더링할 정도로 큰 경우 캐시 크기를 더 늘리면 캐시가 타일을 제거하기 전에 더 오래 보관할 수 있습니다. 이렇게 하면 최근에 표시했던 타일이 캐시에 남아 있을 가능성이 더 높기 때문에 카메라를 움직이거나 회전할 때 텍스처가 갑자기 튀어나오는 현상과 같은 원치 않는 효과를 줄일 수 있습니다.