Version: Unity 6.0 (6000.0)
언어 : 한국어
비동기 셰이더 컴파일 소개
비동기 셰이더 컴파일 감지

비동기 셰이더 컴파일 활성화 또는 비활성화

비동기 셰이더 컴파일은 기본적으로 활성화되어 있습니다.

비동기 셰이더 컴파일을 활성화하거나 비활성화하려면 다음 단계를 따르십시오.

  1. Edit > Project Settings > Editor 로 이동합니다.
  2. 에디터 설정 하단의 Shader Compilation 에서 Asynchronous Shader Compilation 체크박스를 선택하거나 선택 해제합니다.

참고: 이 방법으로 비동기 셰이더 컴파일을 활성화하거나 비활성화하면 기본적으로 씬 뷰와 게임 뷰에만 영향을 미칩니다. 에디터의 다른 부분에서 사용하려면 커스텀 에디터 툴 및 비동기 셰이더 컴파일을 참조하십시오.

특정 렌더링 호출에 대한 비동기 셰이더 컴파일 활성화 또는 비활성화

C# 스크립트에서 특정 렌더링 커맨드용 비동기 셰이더 컴파일을 활성화하거나 비활성화할 수 있습니다.

다음 지침에서는 즉각적인 범위와 CommandBuffer 범위에서 기능을 활성화하거나 비활성화하는 방법을 보여 줍니다.

즉각적인 범위에서

즉각적인 범위에서 ShaderUtil.allowAsyncCompilation을 사용할 수 있습니다.

이 작업을 수행하는 방법은 다음과 같습니다.

  1. 변수에 현재의 ShaderUtil.allowAsyncCompilation 상태를 저장합니다.
  2. 렌더링 커맨드를 호출하기 전에 ShaderUtil.allowAsyncCompilationfalse로 설정합니다.
  3. 렌더링 커맨드를 호출합니다.
  4. 렌더링 커맨드를 호출한 후 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 범위에서

CommandBuffer 범위에서 ShaderUtil.SetAsyncCompilationShaderUtil.RestoreAsyncCompilation을 사용할 수 있습니다.

  1. 렌더링 커맨드를 호출하기 직전에 ShaderUtil.SetAsyncCompilation을 호출하고 false로 설정합니다. CommandBuffer의 후속 커맨드는 비동기 컴파일을 허용하지 않습니다.
  2. 렌더링 커맨드를 CommandBuffer에 추가합니다.
  3. 렌더링 커맨드 후 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#을 통해 커스텀 툴에 대해 활성화할 수 있습니다.

이렇게 하려면 특정 렌더링 호출에 대해 비동기 셰이더 컴파일을 활성화합니다.

비동기 셰이더 컴파일 소개
비동기 셰이더 컴파일 감지