Unity 정적 배칭 가이드
개요
정적 배칭은 Unity에서 드로우 콜을 줄이기 위해 움직이지 않는 메시를 결합하는 기술입니다. 이를 통해 성능을 최적화하고 렌더링 효율성을 높일 수 있습니다.
정적 배칭의 원리
정적 배칭은 다음과 같은 방식으로 작동합니다: 1. 움직이지 않는 메시를 결합하여 하나의 공유 버텍스 및 인덱스 버퍼를 생성합니다. 2. Unity는 이 결합된 메시를 사용하여 하나의 드로우 콜로 배치의 모든 오브젝트를 그립니다.
이로 인해 드로우 콜 수가 상당히 줄어들고, CPU에서 버텍스를 변환하지 않기 때문에 동적 배칭보다 효율적입니다.
지원하는 렌더 파이프라인
정적 배칭은 다음의 렌더 파이프라인에서 지원됩니다:
기능 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인 (URP) | 고해상도 렌더 파이프라인 (HDRP) | 커스텀 스크립터블 렌더 파이프라인 (SRP) |
---|---|---|---|---|
Static Batching | 지원 | 지원 | 지원 | 지원 |
정적 배칭 사용 방법
일반적으로 정적 배칭은 두 가지 시점에서 수행할 수 있습니다: 빌드 시점과 런타임 시점.
1. 빌드 시점 정적 배칭
- 에디터에서 빌드 시점에 정적 배칭을 활성화하려면 다음 단계를 따릅니다:
- Window > Project Settings > Player로 이동합니다.
- Other Settings에서 Static Batching을 활성화합니다.
- 씬 뷰 또는 계층 구조에서 배칭할 게임 오브젝트를 선택합니다.
- 인스펙터에서 Static Editor Flags에서 Batching Static을 활성화합니다.
2. 런타임 시 정적 배칭
- 런타임 시 정적 배칭을 위해
StaticBatchingUtility
클래스를 사용할 수 있습니다.StaticBatchingUtility.Combine
메서드를 사용하여 조합할 게임 오브젝트를 전달합니다.
정적 배칭의 성능 영향
정적 배칭을 사용하면 추가적인 CPU 메모리가 필요하며, 결합하여 사용할 경우 메모리 소모가 늘어날 수 있습니다. 최대 64,000개의 버텍스를 포함할 수 있는 제한이 있으며, 이를 초과할 경우 새로운 배치가 생성됩니다.
참고: 메모리 관리
게임 오브젝트의 정적 배칭을 준비하는 데에 CPU 자원이 소모되므로, - 렌더링 성능을 유지하려면 불필요한 정적 배칭을 피해야 할 수 있습니다. - 복잡한 장면에서도 성능을 고려하여 정적 배칭을 최적화해야 합니다.
결론
정적 배칭은 게임 성능을 최적화하는 중요한 도구로, 적절히 활용하면 복잡한 씬 속에서도 뛰어난 성능을 발휘할 수 있습니다. 이를 통해 보다 효율적인 게임 개발이 가능합니다.