Unity 셰이더 배리언트 관리 가이드
이 문서는 Unity의 셰이더 배리언트 관리 방법에 대해 설명합니다. 셰이더 배리언트는 다양한 조합으로 셰이더를 생성하는 데 필요한 요소로, 빌드 최적화 및 메모리 관리를 위해 관리해야 합니다.
셰이더 배리언트 확인하기
Unity에서 사용하는 셰이더 배리언트를 확인하는 방법에는 여러 가지가 있습니다.
에디터에서 사용하는 셰이더 배리언트 리스트 가져오기
- 프로젝트 설정으로 이동
Edit > Project Settings > Graphics로 이동합니다. - 셰이더 로딩 확인
아래의Currently tracked:부분에서 셰이더 및 배리언트의 수를 확인할 수 있습니다. - 셰이더 배리언트 컬렉션 저장
Save to asset…을 선택하여 셰이더 배리언트 컬렉션 에셋을 생성합니다.
빌드 시점의 셰이더 배리언트 리스트 가져오기
- 로그 파일 열기
프로젝트 빌드 후,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
런타임 시 셰이더 배리언트 확인하기
- 셰이더 로딩 설정
Edit > Project Settings > Graphics로 이동 후Log Shader Compilation을 활성화합니다. - 디벨롭먼트 빌드 활성화
빌드 설정에서 Development Build를 활성화합니다. - 실행 시 콘솔 확인
빌드한 애플리케이션을 시작하면 콘솔 창에 ‘Compiled shader’ 메시지가 출력됩니다.
런타임 메모리 사용량 확인하기
- 메모리 프로파일러 모듈이나 Memory Profiler 패키지를 사용하여 런타임 중 셰이더가 사용하는 메모리를 모니터링합니다.
누락된 셰이더 하이라이트
Unity 2022.2 이상에서는 누락된 셰이더 배리언트를 찾는 기능이 강화되었습니다.
- 설정으로 이동
Edit > Project Settings > Player로 이동합니다. - Strict shader variant matching 활성화
Other Settings 아래의 Script Compilation 섹션에서Strict shader variant matching을 선택합니다.
이 설정을 통해 Unity는 누락된 배리언트와 관련된 경고를 콘솔에 표시하게 됩니다.
결론
셰이더 배리언트 수를 관리하는 것은 Unity 프로젝트의 성능을 최적화하는 데 중요한 요소입니다. 위에서 설명한 방법을 통해 필요 없는 배리언트를 제거하고 메모리 사용을 줄이는 실험을 해보세요.
예제 코드
아래는 Unity에서 콘솔에 셰이더 배리언트를 기록하는 간단한 C# 스크립트 예제입니다.
using UnityEngine;
public class ShaderLogger : MonoBehaviour
{
void Start()
{
Debug.Log("Unity Shader Variants Tracking Started");
}
void Update()
{
// Log shader compilation status
}
}
이 스크립트를 통해 셰이더와 관련된 정보를 개발 중에 쉽게 추적할 수 있습니다.
즐거운 개발 되세요!