셰이더 오브젝트는 수백 또는 수천 개의 셰이더 배리언트를 포함할 수 있습니다. 셰이더 오브젝트를 로드할 때 에디터가 모든 배리언트를 컴파일하면 임포트 프로세스가 매우 느려집니다. 대신 에디터는 셰이더 배리언트를 처음 만날 때 필요 시 컴파일합니다.
이러한 셰이더 배리언트를 컴파일하면 그래픽스 API 및 셰이더 오브젝트의 복잡도에 따라 에디터가 몇 밀리초 또는 몇 초 지연될 수 있습니다. 이러한 지연을 방지하기 위해 비동기 셰이더 컴파일을 사용하여 백그라운드에서 셰이더 배리언트를 컴파일하고 그 사이에 플레이스홀더 셰이더 오브젝트를 사용할 수 있습니다.
비동기 셰이더 컴파일의 작동 방식
비동기 셰이더 컴파일은 다음과 같이 작동합니다.
에디터가 컴파일되지 않은 셰이더 배리언트를 처음 발견하면 작업 스레드의 컴파일 대기열에 셰이더 배리언트를 추가합니다. 에디터의 오른쪽 하단에 있는 진행 표시줄에 컴파일 대기열의 상태가 표시됩니다.
셰이더 배리언트를 로드하는 동안 Unity 에디터는 지오메트리를 일반 청록색으로 표시되는 플레이스홀더 셰이더로 렌더링합니다.
에디터가 셰이더 배리언트 컴파일을 끝내면 셰이더 배리언트를 사용하여 지오메트리를 렌더링합니다.
Unity는 컴파일이 완료될 때까지 청록색 더미 셰이더로 컴파일 중인 셰이더 배리언트를 렌더링합니다. 오른쪽 하단의 진행 표시줄에 컴파일 대기열 진행률이 표시됩니다.
Unity 에디터는 비동기 셰이더 컴파일을__ Blit__‘bit block transfer’의 약어입니다. blit 동작은 데이터 블록을 메모리의 한 곳에서 다른 곳으로 전송하는 과정입니다. See in Glossary 작업과 함께 사용하지 않습니다. 이는 가장 일반적인 활용 사례에서 올바른 출력을 보장하기 위한 것입니다.