Version: 2022.1
언어: 한국어
셰이더 배리언트
셰이더 키워드

보유하고 있는 셰이더 배리언트 수 확인

로깅 및 프로파일링 툴을 사용하여 Unity가 컴파일하는 셰이더 배리언트 수를 확인하고, 배리언트를 제거(스트리핑)하여 빌드 시간을 개선하고 메모리 사용량을 줄일 수 있는 방법을 확인할 수 있습니다.다음을 수행할 수 있습니다.

에디터에서 사용하는 셰이더 배리언트 리스트 가져오기

씬 뷰와 게임 뷰에서 에디터가 사용하는 셰이더 배리언트 리스트를 생성할 수 있습니다.이 작업을 수행하는 방법은 다음과 같습니다.

  1. Edit > Project Settings > Graphics로 이동합니다.
  2. Shader Loading 아래에서 Currently tracked: 옆에 있는 셰이더 및 셰이더 배리언트 수를 확인할 수 있습니다.
  3. Save to asset…을 선택하여 셰이더 배리언트 컬렉션 에셋을 생성합니다.

빌드 시점에 Unity에서 생성하는 셰이더 배리언트 리스트 가져오기

프로젝트를 빌드한 후 Editor.log 로그 파일을 열고 Compiling shader를 검색하여 Unity가 어떤 배리언트를 컴파일하고 스트리핑하는지 확인합니다.예시:

Compiling shader "Universal Render Pipeline/Lit" pass "ForwardLit" (fp)
320 / 786432 variants left after stripping, processed in 6.77 seconds
starting compilation...
finished in 29.72 seconds.Local cache hits 202 (0.24s CPU time), remote cache hits 0 (0.00s CPU time), compiled 118 variants (582.41s CPU time), skipped 0 variants

URP(유니버설 렌더 파이프라인) 또는 HDRP(고해상도 렌더 파이프라인)를 사용하는 경우 Unity가 컴파일하고 스트리핑한 총 배리언트 개수를 기록할 수도 있습니다.다음에서 Shader Stripping > Shader Variant Log Level에서 Disabled가 아닌 로깅 레벨을 선택하십시오.

그러면 Editor.logTotal 로깅이 추가됩니다.예시:

STRIPPING:Universal Render Pipeline/Lit (ForwardLit pass) (Fragment) - Remaining shader variants = 640/5760 = 11.11111% - Total = 2657/10169 = 26.12843%

Editor.log의 위치는 로그 파일을 참조하십시오.

런타임에 Unity에서 컴파일하는 셰이더 배리언트 리스트 가져오기

  1. Edit > Project Settings > Graphics로 이동합니다.
  2. Shader Loading 아래에서 Log Shader Compilation을 활성화합니다.
  3. 프로젝트를 빌드할 때 빌드 설정에서 Development Build를 활성화합니다.
  4. 콘솔 창에서 Editor를 선택하고 Full Log [Developer Mode Only]를 활성화합니다.
  5. 빌드한 애플리케이션을 시작합니다.

Unity에서 GPU용 셰이더를 컴파일할 때 콘솔 창에 ‘Compiled shader’ 메시지를 출력합니다.

런타임에 셰이더가 사용하는 메모리 양 확인

메모리 프로파일러 모듈 또는 Memory Profiler 패키지를 사용하여 런타임에 셰이더가 얼마나 많은 메모리를 사용하는지 확인하십시오.셰이더가 많은 메모리를 사용하는 경우 해당 배리언트를 스트리핑하는 실험을 해볼 수 있습니다.

런타임에 누락된 셰이더 하이라이트

Unity 2022.2 이상에서는 머티리얼에서 누락된 셰이더 배리언트를 사용하려고 할 때 런타임 중에 분홍색 오류 셰이더를 강제로 표시하게 만들 수 있습니다.

  1. Edit > Project Settings > Player로 이동합니다.
  2. Other Settings 아래의 Script Compilation 섹션에서 Strict shader variant matching을 선택합니다.

이것은 strictShaderVariantMatching을 사용하여 C# 스크립트에서도 활성화할 수 있습니다.

이렇게 하면 Unity가 누락된 배리언트와 해당 키워드가 포함된 경고를 콘솔에 표시합니다.스트리핑 중에 이 기능을 사용하여 프로젝트에 필요한 셰이더 배리언트가 제거되지 않았는지 확인할 수 있습니다.

셰이더 배리언트
셰이더 키워드