가상 텍스처링은 GPU 메모리에서 고정 크기 텍스처 캐시를 사용합니다. 그래픽스 포맷당 하나의 캐시가 있습니다. 캐시의 기본 크기를 설정하고 해당 기본 크기를 덮어쓸 수 있습니다.
또한 가상 텍스처링 스트리밍(SVT) 시스템은 메인 메모리에 있는 하나의 CPU 캐시를 사용하여 타일 페이지를 저장합니다. 타일 페이지에는 SVT 시스템이 디스크에서 CPU 캐시로 한꺼번에 읽는 여러 타일이 포함되어 있습니다. 이렇게 하면 느린 드라이브에서 디스크의 읽기 처리 속도가 향상됩니다. 가상 텍스처링 시스템이 타일을 요청하면 해당 타일이 포함된 페이지를 읽습니다. 시스템이 다음 프레임에서 해당 페이지의 다른 타일을 요청할 수 있으므로, CPU 캐시는 디스크에서 다른 읽기를 방지하기 위해 해당 페이지를 유지합니다. CPU 캐시 크기가 클수록 가상 텍스처링이 페이지를 메인 메모리에 더 오래 유지할 수 있습니다.
가상 텍스처링은 해당 포맷을 사용하는 텍스처와 함께 텍스처 스택이 있는 머티리얼을 렌더링할 때 특정 그래픽스 포맷의 GPU 캐시를 할당합니다. HDRP 에셋에서 캐시 크기(MB)를 설정할 수 있습니다. 이렇게 하면 각 품질 레벨에 대해 다른 설정을 지정할 수 있습니다.
또한 VirtualTexturing.Streaming.SetGPUCacheSettings
메서드를 사용하여 스크립트에서 캐시 크기를 설정할 수 있습니다.
캐시 크기를 변경할 수 있지만, 이렇게 하면 CPU 및 GPU 작업의 리소스 소모가 크게 증가하며, 메인 스레드와 렌더 스레드가 모두 차단됩니다. 캐시 크기를 변경하는 데 걸리는 시간은 캐시의 크기와 개수에 따라 다릅니다. 눈에 띄는 정지 또는 불안정성 문제를 피하려면 레벨 로드 등과 같이 프레임 속도가 덜 중요할 때 캐시 크기를 변경해야 합니다.
특정 캐시의 최적 크기에 영향을 미치는 주요 요인은 출력 화면 해상도와 해당 그래픽스 포맷을 사용하는 각 텍스처 스택의 레이어 개수입니다. 씬의 머티리얼 개수와 텍스처 해상도는 최적 크기에 큰 영향을 주지 않습니다. 최고 품질 설정에서 풀 HD 화면 해상도의 경우 총 GPU 캐시 크기는 보통 700MB입니다.
“캐시 스래싱(cache thrashing)” 문제는 캐시 크기가 너무 작아서 해당 콘텐츠를 수용하지 못하고 동일한 프레임에서 타일을 로드 및 언로드해야 하는 경우에 발생합니다. 캐시 스래싱을 방지하기 위해 가상 텍스처링 시스템은 필요에 따라 텍스처 품질을 자동으로 낮춥니다. 또한 캐시 사용량을 모니터링하고, 픽셀 셰이더에서 텍스처 스택 샘플링을 위한 밉맵 바이어스를 자동으로 관리합니다. 캐시가 가득 차면 밉맵 바이어스가 증가합니다. 이렇게 하면 가상 텍스처링 시스템이 더 낮은 해상도의 타일을 요청하여 캐시 공간을 절약하고 요청된 모든 타일을 포함할 수 있습니다.
텍스처가 흐릿하게 보이면 캐시 크기를 늘리십시오. 캐시가 프레임을 최고 품질로 렌더링할 수 있을 만큼 충분히 큰 경우 캐시 크기를 더 늘리면 캐시가 타일을 추방하기 전에 더 오래 보관할 수 있습니다. 이렇게 하면 최근에 표시된 타일이 여전히 캐시에 있을 가능성이 더 높기 때문에 카메라를 이동하거나 돌릴 때 텍스처 파핑(texture popping) 등과 같은 원치 않는 효과를 줄일 수 있습니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.