비동기 셰이더 컴파일은 기본적으로 활성화되어 있습니다.
비동기 셰이더 컴파일을 활성화하거나 비활성화하려면 다음 단계를 따르십시오.
참고: 이 방법으로 비동기 셰이더 컴파일을 활성화하거나 비활성화하면 기본적으로 씬 뷰와 게임 뷰에만 영향을 미칩니다. 에디터의 다른 부분에서 사용하려면 커스텀 에디터 툴 및 비동기 셰이더 컴파일을 참조하십시오.
C# 스크립트에서 특정 렌더링 커맨드용 비동기 셰이더 컴파일을 활성화하거나 비활성화할 수 있습니다.
다음 지침에서는 즉각적인 범위와 CommandBuffer 범위에서 기능을 활성화하거나 비활성화하는 방법을 보여 줍니다.
즉각적인 범위에서 ShaderUtil.allowAsyncCompilation을 사용할 수 있습니다.
이 작업을 수행하는 방법은 다음과 같습니다.
ShaderUtil.allowAsyncCompilation 상태를 저장합니다.ShaderUtil.allowAsyncCompilation을 false로 설정합니다.ShaderUtil.allowAsyncCompilation을 이전 상태로 복원합니다.다음은 유사 코드 예제입니다.
// Store the current state
bool oldState = ShaderUtil.allowAsyncCompilation;
// Disable async compilation
ShaderUtil.allowAsyncCompilation = false;
// Enter your rendering code that should never use the placeholder shader, for example UI elements or characters.
Graphics.RenderMesh(...);
// Restore the old state
ShaderUtil.allowAsyncCompilation = oldState;
CommandBuffer 범위에서 ShaderUtil.SetAsyncCompilation 및 ShaderUtil.RestoreAsyncCompilation을 사용할 수 있습니다.
ShaderUtil.SetAsyncCompilation을 호출하고 false로 설정합니다. CommandBuffer의 후속 커맨드는 비동기 컴파일을 허용하지 않습니다.Shader.Util.RestoreAsyncCompilation을 호출하여 비동기 셰이더 컴파일 상태를 복원합니다.다음은 예제입니다.
// Create the CommandBuffer
CommandBuffer cmd = new CommandBuffer();
// Disable async compilation for subsequent commands
ShaderUtil.SetAsyncCompilation(cmd, false);
/// Enter your rendering commands that should never use the placeholder shader, for example UI elements or characters.
cmd.DrawMesh(...);
// Restore the old state
ShaderUtil.RestoreAsyncCompilation(cmd);
에디터가 항상 동기식으로 컴파일하도록 하여 특정 셰이더 오브젝트에 대해 비동기 셰이더 컴파일을 비활성화할 수 있습니다. 이는 렌더링 시작 시 항상 존재하는 데이터 생성 셰이더 오브젝트에 대해 좋은 옵션이며, 컴파일 속도가 상대적으로 빠릅니다. 고급 렌더링을 수행하는 경우 가장 적합합니다.
셰이더 오브젝트에 동기식 컴파일을 강제로 적용하려는 경우 #pragma editor_sync_compilation 지시문을 셰이더 소스 코드에 추가합니다.
참고: 렌더링하는 동안 새로운 셰이더 배리언트가 발견된 복잡한 셰이더 오브젝트에 대해 동기식 컴파일을 강제로 적용하면 안 됩니다. 이는 에디터에 렌더링 지연을 일으킬 수 있습니다.
비동기 셰이더 컴파일은 기본적으로 게임 및 씬 뷰에서 작동합니다. 커스텀 에디터 툴에서 사용하려면 C#을 통해 커스텀 툴에 대해 활성화할 수 있습니다.
이렇게 하려면 특정 렌더링 호출에 대해 비동기 셰이더 컴파일을 활성화합니다.