Version: 2021.2
언어: 한국어
정적 배칭
메시 수동 결합

동적 배칭

동적 배칭은 드로우 콜을 줄이기 위해 움직이는 게임 오브젝트를 배칭하는 드로우 콜 배칭 메서드입니다. 파티클 시스템과 같이 Unity가 런타임 시 동적으로 생성하는 지오메트리에 대한 동적 배칭과 메시에 대한 동적 배칭은 서로 다르게 작동합니다. 메시와 동적 지오메트리의 내부 차이점에 대한 정보는 메시에 대한 동적 배칭동적으로 생성된 지오메트리에 대한 동적 배칭을 참조하십시오.

참고: 메시에 대한 동적 배칭은 오래된 저가형 기기에서 성능을 최적화하도록 설계되었습니다. 최신 소비자 하드웨어에서 CPU에서 수행하는 동적 배칭 작업은 드로우 콜에 사용되는 리소스보다 클 수 있습니다. 이는 성능에 부정적인 영향을 미칩니다. 자세한 내용은 메시에 대한 동적 배칭을 참조하십시오.

요구 사항 및 호환성

이 섹션은 동적 배칭의 렌더 파이프라인 호환성에 대한 정보를 포함하고 있습니다.

렌더 파이프라인 호환성

기능 빌트인 렌더 파이프라인 유니버설 렌더 파이프라인(URP) 고해상도 렌더 파이프라인(HDRP) 커스텀 스크립터블 렌더 파이프라인(SRP)
Dynamic Batching 지원 지원 지원 안 함 지원

동적 배칭 사용

Unity는 파티클 시스템과 같은 동적 지오메트리에 대해 항상 동적 배칭을 사용합니다.

메시에 동적 배칭을 사용하려면 다음 단계를 따르십시오.

  1. Edit > Project Settings > Player로 이동합니다.
  2. Other Settings에서 Dynamic Batching을 활성화합니다.

Unity는 공통 사용 정보에 설명된 기준을 충족하는 경우 움직이는 메시를 동일한 드로우 콜 안에 자동으로 배칭합니다.

메시에 대한 동적 배칭

메시에 대한 동적 배칭은 모든 버텍스를 월드 공간(GPU가 아닌 CPU에서)으로 변환하여 이루어집니다. 즉, 변환 작업이 드로우 콜을 수행하는 것보다 리소스 소모가 적은 경우에만 동적 배칭이 최적화됩니다.

드로우 콜의 리소스 요구사항은 주로 사용되는 그래픽스 API를 비롯한 여러 요인에 따라 달라집니다. 예를 들어 콘솔이나 Apple Metal 같은 최신 API에서는 드로우 콜에 사용되는 리소스가 일반적으로 훨씬 더 적고 종종 동적 배칭은 성능상 이득을 얻지 못합니다. 애플리케이션에서 동적 배칭 사용의 유불리 여부를 결정하려면 동적 배칭을 사용하기도 하고 사용하지 않기도 하는 애플리케이션을 프로파일합니다.

Unity는 그림자 패스에 필요한 머티리얼 값이 동일하다면 머티리얼이 다르더라도 그림자 캐스터에 대해 동적 배칭을 사용할 수 있습니다. 예를 들어, 여러 상자에서 텍스처가 다른 머티리얼을 사용할 수 있습니다. 머티리얼 에셋은 다르지만 그 차이는 그림자 캐스터 패스와 관련이 없으며 Unity는 그림자 렌더 단계에서 상자 게임 오브젝트에 대해 그림자를 배칭할 수 있습니다.

제한 사항

다음 시나리오에서 Unity는 동적 배칭을 전혀 사용할 수 없거나 제한된 범위에서만 동적 배칭을 적용할 수 있습니다.

  • Unity는 900개 이상의 버텍스 속성과 300개 이상의 버텍스를 포함하는 메시에 동적 배칭을 적용할 수 없습니다. 메시에 대한 동적 배칭에는 버텍스마다 리소스 소모가 있기 때문입니다. 예를 들어 셰이더가 버텍스 포지션, 버텍스 노멀, 싱글 UV를 사용하는 경우 Unity는 최대 300개의 버텍스를 배칭할 수 있습니다. 그러나 셰이더가 버텍스 포지션, 버텍스 노멀, UV0, UV1, 버텍스 탄젠트를 사용하는 경우 180개까지만 배칭할 수 있습니다.
  • Unity는 트랜스폼 컴포넌트에 미러링이 포함된 게임 오브젝트에 동적 배칭을 적용할 수 없습니다. 예를 들어, Unity는 스케일이 1인 게임 오브젝트와 스케일이 –1인 또 다른 게임 오브젝트를 함께 배칭할 수 없습니다.
  • 게임 오브젝트가 다른 머티리얼 인스턴스를 사용하는 경우 본질적으로 동일하더라도 함께 배칭할 수 없습니다. 단, 유일하게 그림자 캐스터 렌더링만 예외입니다.
  • 라이트맵이 있는 게임 오브젝트에는 추가 렌더러 파라미터가 있습니다. 즉, 라이트맵이 적용된 게임 오브젝트를 배칭하려면 동일한 라이트맵 위치를 가리켜야 합니다.
  • Unity는 멀티 패스 셰이더를 사용하는 게임 오브젝트에 동적 배칭을 완전히 적용할 수 없습니다.
    • 거의 모든 Unity 셰이더는 포워드 렌더링 시에 몇 가지 조명을 지원합니다. 이를 위해 각 광원에 대해 추가 렌더 패스를 처리합니다. Unity는 첫 번째 렌더 패스만 배칭합니다. 추가 픽셀당 광원에 대한 드로우 콜을 배칭할 수 없습니다.
    • 레거시 디퍼드 렌더링 경로는 두 개의 렌더 패스에서 게임 오브젝트를 드로우하기 때문에 동적 배칭을 지원하지 않습니다. 첫 번째 패스는 가벼운 사전 패스이고 두 번째 패스는 게임 오브젝트를 렌더링합니다.

동적으로 생성된 지오메트리에 대한 동적 배칭

다음 렌더러는 동적 배칭을 사용하여 최적화할 수 있는 지오메트리(예: 파티클, 라인)를 동적으로 생성합니다.

동적으로 생성된 지오메트리에 대한 동적 배칭은 메시에 대한 동적 배칭과 다르게 동작합니다.

  1. Unity는 각 렌더러에 대해 동적으로 배칭 가능한 모든 콘텐츠를 하나의 큰 버텍스 버퍼로 빌드합니다.
  2. 렌더러는 배치에 대한 머티리얼 상태를 설정합니다.
  3. 그런 다음 Unity는 버텍스 버퍼를 GPU에 바인드합니다.
  4. 배치의 각 렌더러에 대해 Unity는 버텍스 버퍼의 오프셋을 업데이트하고 새 드로우 콜을 제출합니다.

이러한 접근 방식은 Unity가 정적 배칭에 대한 드로우 콜을 제출하는 방법과 유사합니다.

정적 배칭
메시 수동 결합
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961