동적 배칭
유니티에서의 동적 배칭(Dynamic Batching)은 성능 최적화의 한 방법으로, 유사한 그래픽 요소를 하나의 그룹으로 묶어서 처리하는 기술입니다.
이 과정은 렌더링 시간을 단축시키기 위해 사용됩니다. 동적 배칭의 주요 목적은 여러 개의 작은 메시를 한 번에 묶어서 GPU에 전송하는 것으로, 이를 통해 드로우 콜의 수를 줄일 수 있습니다.
동적 배칭 전제조건
1.
동일한 Material : 배치되는 모든 객체들은 동일한 머티리얼을 공유해야 합니다. 동일한 머티리얼이라 함은 같은 셰이더, 텍스처, 컬러 등을 사용하는 머티리얼을 의미합니다.
a.
완전히 동일한 속성 값을 가진 머티리얼을 사용해야 한다는 뜻입니다.
2.
정점 수 제한 : 동적 배칭은 정점 수에 제한이 있습니다. 동적 배칭은 개별 메시가 일정 정점 수 이하일 때 효과적으로 작동합니다
a.
900 정점 이하의 메시에서 동적 배칭을 적용됩니다.
3.
게임 오브젝트의 활성 상태 : 비활성화된(Disabled) 게임 오브젝트는 배칭 대상에서 제외됩니다.
4.
GPU 인스턴싱과의 호환성 : 동적 배칭과 GPU 인스턴싱은 서로 다른 최적화 기법이며, 때때로 상호 배타적일 수 있습니다. GPU 인스턴싱을 사용하는 경우 동적 배칭이 적용되지 않을 수 있으므로, 두 기법 간의 호환성을 고려해야 합니다.
동적 배칭에서의 MPB 사용
MPB(Material Property Block)를 사용하여, 동적 배칭을 하는 것도 좋은 방법이라 생각합니다.
MPB는 이전에 GPU Instancing에서 언급했듯이, 머티리얼을 새로 인스턴스화하지 않고 변경 가능한 방법이므로, 동적 배칭에 유용하게 사용될 수 있습니다.
MPB를 굳이 사용할 필요 없이 몇 개의 머티리얼의 속성을 변경하는 경우에도 MPB를 동적 배칭에서도 사용하면 좋다고 생각합니다.
그에 대한 제 개인적인 의견은 아래 링크에 있습니다.