비동기 텍스처 업로드는 렌더 스레드(Render-thread)로 디스크에서 텍스처 데이터를 비동기식으로 로드하고 GPU로 시간 분할 업로드를 할 수 있게 해줍니다. 이 기능은 메인 스레드에서 GPU 업로드 대기 시간을 단축시켜 줍니다. 비동기 텍스처 업로드는 읽기-쓰기가 활성화되지 않은 모든 텍스처에 대해 자동으로 적용되므로 이 기능을 사용하기 위해 직접적인 행동을 취할 필요가 없습니다. 하지만 비동기 업로드가 작동되는 방식 중 일부를 제어할 수 있으므로 해당 프로세스를 이해하는 것은 이러한 제어 기능을 사용하는 데 도움이 됩니다.
프로젝트가 생성되면 비동기 업로드가 가능한 텍스처 데이터는 스트리밍 리소스 파일에 저장되고 비동기 방식으로 로드됩니다.
단일 링 버퍼는 텍스처 데이터를 로드하고 GPU에 업로드할 때 재사용되며 필요한 메모리 할당량을 줄여줍니다. 예를 들어 작은 텍스처 20개가 있다면, Unity가 텍스처 20개 모두 한번에 비동기 로드 요청을 합니다. 만약 하나의 큰 텍스터가 있다면 Unity가 단일 요청을 합니다.
버퍼 크기가 요청된 텍스처만큼 크지 않은 경우 텍스처에 맞게 자동으로 크기를 조정합니다. 그러나 업로드할 텍스처 중 가장 큰 텍스처에 맞게 사이즈 조정을 해 둬야 더 큰 텍스처를 만날 때마다 버퍼를 재조정할 필요가 없어집니다.
값이 크다는 것은 텍스처가 더 빨리 GPU에 준비되는 것을 의미하지만 해당 프레임에서 더 많은 CPU 오버헤드가 다른 프로세싱에 사용되기 때문에 텍스처 업로드에 소요되는 시간은 조절이 가능합니다. 이 CPU 시간은 GPU에 업로드될 텍스처가 버퍼에서 대기 중일 때에만 사용됩니다.
Quality 설정을 통해 버퍼 크기와 타임 슬라이싱을 지정할 수 있습니다.
스크립트에서 버퍼 크기와 타임 슬라이스 값을 조절할 수 있는 기능을 제공합니다.
스크립트 레퍼런스를 참고하세요: QualitySettings.asyncUploadTimeSlice.
프레임당 비동기 텍스처 업로드에 소요되는 CPU 시간을 ms로 타임 슬라이스를 설정합니다. 타겟 플랫폼과 API에 따라 다르게 설정할 수 있습니다. 업로드할 텍스처가 있을 경우 함수 호출에만 시간이 소요되고 그렇지 않으면 조기 종료됩니다.
스크립트 레퍼런스를 참고하십시오. QualitySettings.asyncUploadBufferSize
비동기 텍스처 업로드의 링 버퍼 크기를 설정합니다. 단위는 MB입니다. 타겟 플랫폼에 따라 적당한 사이즈를 설정했는지 확인하고 게임에 큰 텍스처를 로드할 만큼 충분한지 확인합니다. 예를 들어 22MB 크기의 큐브맵이 있고 RingBuffer 사이즈를 16MB으로 설정했다면 앱이 해당 씬을 로딩하는 동안 자동으로 링 버퍼를 22MB로 재조정합니다.
읽기/쓰기가 비활성화된 텍스처의 경우 TextureData는 resS(Streaming Resource)의 일부이며 렌더 스레드에서 업로드가 진행됩니다. 전과 마찬가지로 AwakeFromLoad로 호출하는 동안 텍스처의 유효성은 보장되므로 렌더링 시 텍스처의 유효성이나 로딩 순서에는 변화가 없습니다.
읽기/쓰기가 활성화된 텍스처나 LoadImage(byte[] data) 함수로 직접 로드한 텍스처 또는 Resources 폴더에서 로딩 등 다른 형식의 텍스처 로딩에 대해서는 비동기 버퍼 로딩이 사용되지 않고 이전 메서드가 적용됩니다.
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.