가상 텍스처링은 GPU 메모리에서 고정 크기 텍스처 캐시를 사용합니다. 그래픽스 포맷당 하나의 캐시가 있습니다. 캐시의 기본 크기를 설정하고 해당 기본 크기를 덮어쓸 수 있습니다.
또한 가상 텍스처링 스트리밍(SVT) 시스템은 메인 메모리에 있는 하나의 CPU 캐시를 사용하여 타일 페이지를 저장합니다. 타일 페이지에는 SVT 시스템이 디스크에서 CPU 캐시로 한꺼번에 읽는 여러 타일이 포함되어 있습니다. 이렇게 하면 느린 드라이브에서 디스크의 읽기 처리 속도가 향상됩니다. 가상 텍스처링 시스템이 타일을 요청하면 해당 타일이 포함된 페이지를 읽습니다. 시스템이 다음 프레임에서 해당 페이지의 다른 타일을 요청할 수 있으므로, CPU 캐시는 디스크에서 다른 읽기를 방지하기 위해 해당 페이지를 유지합니다. CPU 캐시 크기가 클수록 가상 텍스처링이 페이지를 메인 메모리에 더 오래 유지할 수 있습니다.
가상 텍스처링은 해당 포맷을 사용하는 텍스처와 함께 텍스처 스택이 있는 머티리얼을 렌더링할 때 특정 그래픽스 포맷의 GPU 캐시를 할당합니다. HDRP 에셋에서 캐시 크기(MB)를 설정할 수 있습니다. 이렇게 하면 각 품질 레벨에 대해 다른 설정을 지정할 수 있습니다.
또한 VirtualTexturing.Streaming.SetGPUCacheSettings
메서드를 사용하여 스크립트에서 캐시 크기를 설정할 수 있습니다.
캐시 크기를 변경할 수 있지만, 이렇게 하면 CPU 및 GPU 작업의 리소스 소모가 크게 증가하며, 메인 스레드와 렌더 스레드가 모두 차단됩니다. 캐시 크기를 변경하는 데 걸리는 시간은 캐시의 크기와 개수에 따라 다릅니다. 눈에 띄는 정지 또는 불안정성 문제를 피하려면 레벨 로드 등과 같이 프레임 속도가 덜 중요할 때 캐시 크기를 변경해야 합니다.
특정 캐시의 최적 크기에 영향을 미치는 주요 요인은 출력 화면 해상도와 해당 그래픽스 포맷을 사용하는 각 텍스처 스택의 레이어 개수입니다. 씬의 머티리얼 개수와 텍스처 해상도는 최적 크기에 큰 영향을 주지 않습니다. 최고 품질 설정에서 풀 HD 화면 해상도의 경우 총 GPU 캐시 크기는 보통 700MB입니다.
“캐시 스래싱(cache thrashing)” 문제는 캐시 크기가 너무 작아서 해당 콘텐츠를 수용하지 못하고 동일한 프레임에서 타일을 로드 및 언로드해야 하는 경우에 발생합니다. 캐시 스래싱을 방지하기 위해 가상 텍스처링 시스템은 필요에 따라 텍스처 품질을 자동으로 낮춥니다. 또한 캐시 사용량을 모니터링하고, 픽셀 셰이더에서 텍스처 스택 샘플링을 위한 밉맵 바이어스를 자동으로 관리합니다. 캐시가 가득 차면 밉맵 바이어스가 증가합니다. 이렇게 하면 가상 텍스처링 시스템이 더 낮은 해상도의 타일을 요청하여 캐시 공간을 절약하고 요청된 모든 타일을 포함할 수 있습니다.
텍스처가 흐릿하게 보이면 캐시 크기를 늘리십시오. 캐시가 프레임을 최고 품질로 렌더링할 수 있을 만큼 충분히 큰 경우 캐시 크기를 더 늘리면 캐시가 타일을 추방하기 전에 더 오래 보관할 수 있습니다. 이렇게 하면 최근에 표시된 타일이 여전히 캐시에 있을 가능성이 더 높기 때문에 카메라를 이동하거나 돌릴 때 텍스처 파핑(texture popping) 등과 같은 원치 않는 효과를 줄일 수 있습니다.