로깅 및 프로파일링 툴을 사용하여 Unity가 컴파일하는 셰이더 배리언트 수를 확인하고, 배리언트를 제거(스트리핑)하여 빌드 시간을 개선하고 메모리 사용량을 줄일 수 있는 방법을 확인할 수 있습니다. 다음을 수행할 수 있습니다.
씬 뷰와 게임 뷰에서 에디터가 사용하는 셰이더 배리언트 리스트를 생성할 수 있습니다. 이 작업을 수행하는 방법은 다음과 같습니다.
프로젝트를 빌드한 후 Editor.log 로그 파일을 열고 Compiling shader를 검색하여 Unity가 어떤 배리언트를 컴파일하고 스트리핑하는지 확인합니다. 예시:
Compiling shader "Sprites/Default" pass "" (vp)
Full variant space: 8
After settings filtering: 8
After built-in stripping: 4
After scriptable stripping: 4
Processed in 0.00 seconds
starting compilation...
finished in 0.03 seconds. Local cache hits 0 (0.00s CPU time), remote cache hits 0 (0.00s CPU time), compiled 4 variants (0.09s CPU time), skipped 0 variants
Prepared data for serialisation in 0.00s
URP(유니버설 렌더 파이프라인)와 HDRP(고해상도 렌더 파이프라인)를 사용하는 경우 다음을 참조하십시오.
Unity에서 GPU용 셰이더를 컴파일할 때 콘솔 창에 Compiled shader 메시지를 출력합니다.
Memory Profiler 모듈 또는 Memory Profiler 패키지를 사용하여 런타임 시 셰이더가 사용하는 메모리 양을 확인합니다. 셰이더가 메모리를 많이 사용하는 경우 해당 배리언트를 스트리핑하여 실험할 수 있습니다.
Unity 2022.2 이상에서는 머티리얼에서 누락된 셰이더 배리언트를 사용하려고 할 때 런타임 중에 분홍색 오류 셰이더를 강제로 표시하게 만들 수 있습니다.
strictShaderVariantMatching을 사용하여 C# 스크립트에서도 활성화할 수 있습니다.
이렇게 하면 Unity가 콘솔에 누락된 배리언트와 해당 키워드가 포함된 경고를 표시합니다. 프로젝트에 필요한 셰이더 배리언트가 제거되지 않았는지 확인하기 위해 스트리핑 중에 사용할 수 있습니다.