Static batching is a draw call batching method that combines meshes that don’t move to reduce draw calls. It transforms the combined meshes into world space and builds one shared vertex and index buffer for them. Then Unity performs a single draw call that uses this combined mesh to draw all objects in the batch at once. Static batching can significantly reduce the number of draw calls.
정적 배칭은 CPU에서 버텍스를 변환하지 않으므로 동적 배칭보다 더 효율적입니다. 정적 배칭이 성능에 미치는 영향에 관한 정보는 성능에 미치는 영향을 참조하십시오.
이 섹션은 정적 배칭의 렌더 파이프라인 호환성에 관한 정보를 포함합니다.
기능 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 스크립터블 렌더 파이프라인(SRP) |
---|---|---|---|---|
Static Batching | 지원 | 지원 | 지원 | 지원 |
Unity는 빌드 시점에 및 런타임 시 정적 배칭을 수행할 수 있습니다. 일반적으로 애플리케이션을 빌드하기 전의 씬에 게임 오브젝트가 존재하는 경우, 에디터를 사용하여 빌드 시점에 게임 오브젝트를 배치합니다. 런타임 시 게임 오브젝트와 게임 오브젝트의 메시를 만드는 경우, 런타임 API를 사용하십시오.
런타임 API를 사용하는 경우, 정적 배치 루트의 트랜스폼 프로퍼티를 변경할 수 있습니다. 즉, 정적 배치를 구성하는 메시의 조합 전체를 이동하거나, 회전하거나 확대/축소할 수 있습니다. 개별 메시의 트랜스폼 프로퍼티는 변경할 수 없습니다.
게임 오브젝트 세트에 정적 배칭을 사용하려면 해당 게임 오브젝트가 정적 배칭이 가능해야 합니다. 일반 사용 정보에 설명된 기준 외에도 다음을 확인하십시오.
DisableBatching
태그가 true로 설정된 셰이더가 있는 머티리얼을 사용하지 않습니다.Note: To use runtime static batching you must also set the mesh to have read/write enabled.
정적 배칭이 성능에 미치는 영향에 관한 정보는 성능에 미치는 영향을 참조하십시오.
에디터에서 빌드 시점에 정적 배칭을 활성화할 수 있습니다.
빌드 시점에 정적 배칭을 수행하려면 다음 단계를 따르십시오.
지정된 정적 메시가 일반 사용 정보에 설명된 기준을 충족하는 경우, Unity는 해당 정적 메시를 자동으로 같은 드로우 콜에 배칭합니다.
참고: 빌드 시점에 정적 배칭을 수행하면 Unity가 런타임 시 정적 배치를 위해 메시 데이터를 생성하는 데 CPU 리소스를 사용하지 않습니다.
Unity는 런타임 시 정적 메시를 배칭하기 위해 StaticBatchingUtility 클래스를 제공합니다. 정적 StaticBatchingUtility.Combine 메서드는 전달한 게임 오브젝트를 조합하여 정적 배칭을 준비합니다. 이는 런타임 시 순서대로 생성하는 메시에 특히 유용합니다.
빌드 시점의 정적 배칭과는 달리, 런타임 시 배칭에서는 Static Batching 플레이어 설정을 활성화할 필요가 없습니다. 이 API를 사용하는 방법은 StaticBatchingUtility를 참조하십시오.
정적 배칭을 사용하려면 결합한 지오메트리를 저장할 추가적인 CPU 메모리가 필요합니다. 여러 개의 게임 오브젝트가 같은 메시를 사용하는 경우, Unity는 각 게임 오브젝트를 위한 메시 사본을 1부씩 생성하고 각 사본을 결합된 메시에 삽입합니다. 즉, 같은 지오메트리가 조합된 메시에 여러 번 나타납니다. Unity는 게임 오브젝트의 정적 배칭을 준비하는 데 에디터를 사용하든 런타임 API를 사용하든 관계없이 이 작업을 수행합니다. 메모리 풋프린트를 줄이고 싶다면 렌더링 성능을 희생하고 일부 게임 오브젝트의 정적 배칭을 포기해야 할 수 있습니다. 예를 들어, 우거진 숲 환경에서 나무를 정적으로 표시하면 메모리 소모가 심각할 수 있습니다.
참고: 정적 배치 1개당 포함할 수 있는 버텍스 수에는 제한이 있습니다. 각 정적 배치는 최대 64,000개의 버텍스를 포함할 수 있습니다. 버텍스 수가 이를 초과하면 Unity는 새로운 배치를 만듭니다.