드로우 콜 (Draw Call)

CPU에서 GPU에 렌더링 명령을 전달하는 단위

 

CPU에서 드로우콜을 생성해 GPU에게 보내면

GPU는 그 드로우콜을 받아 그래픽을 처리하고 화면에 출력한다

 

드로우콜의 수가 많아지면 CPU가 명령을 전달하고, GPU가 명령을 처리하는 동안 CPU가 새로운 명령을 보내기 위해 대기하는 시간이 늘어나(병목현상이 일어나) 성능 저하가 발생할 수 있다

 

 

드로우 콜 배칭

Draw Call Batching

여러 개체를 하나의 드로우콜로 묶어서 처리하는 기술

 

유니티 공식 문서: 드로우 콜 배칭은 Unity가 더 적은 드로우 콜로 렌더링할 수 있도록 메시를 결합한 드로우콜 최적화 메서드입니다.

 

배칭은 동일한 머티리얼을 사용하는 오브젝트만 가능 - 다른 텍스처나 쉐이더를 사용하는 경우 배칭 불가

 

유니티에선 두 가지의 배칭 방식을 제공한다.

 

 

정적 배칭

Static Batching

움직이지 않는 정적(Static) 게임 오브젝트인 경우, 하나의 메시로 결합해 단일 드로우콜로 처리

 

Static 체크박스 활성화 필요

건물이나 배경 등에 사용한다

 

메모리와 스토리지가 많이 사용됨

 

빌트인, URP, HDRP 모두 지원

 

 

동적 배칭

Dynamic Batching

움직이는 게임 오브젝트 실시간 처리

 

메쉬가 충분히 작은 경우(정점 300개 이하)에만 적용

 

파티클이나 움직이는 적 등에 사용한다

 

CPU 리소스 많이 사용

 

빌트인, URP에서만 지원(HDRP에선 지원안함)

 

 

 

+동일한 메쉬와 머티리얼을 사용하는 다수의 객체는 GPU Instancing을 사용하면 더 효율적으로 처리할 수도 있다.

GPU Instancing: 동일한 메쉬와 머티리얼을 사용하는 다수의 객체

드로우콜 배칭: 동일한 머티리얼을 사용하는 서로 다른 메쉬를 묶는데에 적합