Game Dev그래픽스와 렌더링

draw call, batching, overdraw

rendering cost를 볼 때 draw call 수만 세지 않고 batching, state change, overdraw를 함께 읽어야 하는 이유를 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

text
같은 mesh/material을 많이 그린다
  -> batching / instancing 가능성 확인
겹쳐 그리는 픽셀이 많다
  -> overdraw 확인

설명

  • draw call은 CPU가 GPU에게 "이것을 그려라"라고 보내는 작업 단위입니다. 숫자가 많아지면 비용이 늘 수 있지만, 그 자체만으로 성능을 단정하면 안 되고 material 변경, pass 수, shader complexity, overdraw도 함께 봐야 합니다.
  • batching과 instancing은 비슷해 보여도 목적과 조건이 다릅니다. 둘 다 호출 수나 상태 변경을 줄이는 데 도움을 주지만, 같은 데이터 구조와 render state를 얼마나 공유하느냐에 따라 효과가 달라집니다.
  • overdraw는 이미 그린 픽셀을 다시 여러 번 덮어 그리는 현상입니다. 투명 UI, 파티클, foliage, post-processing 전후 구성이 많을수록 GPU fragment cost가 커질 수 있습니다.
  • 그래서 rendering cost를 볼 때는 "CPU가 draw submission에서 막히는가"와 "GPU가 fragment work에서 막히는가"를 나눠 봐야 합니다. draw call 최적화가 필요한 문제와 overdraw 최적화가 필요한 문제는 해결책이 다릅니다.
  • 실무적으로는 profiler와 frame debugger류 도구를 함께 쓰는 게 중요합니다. 숫자를 하나만 보는 대신, submission 수, state change, pass, overdraw hotspot을 같이 봐야 방향이 잡힙니다.

빠른 정리

항목무엇을 의미하나
draw callCPU가 GPU에 보내는 그리기 작업 단위
batching여러 draw를 더 효율적으로 묶는 전략
instancing같은 mesh/material 반복 렌더링 최적화
overdraw같은 픽셀을 여러 번 다시 그리는 비용
핵심 질문CPU submission 문제인가, GPU fragment 문제인가

주의할 점

draw call 숫자만 낮추는 데 집착하면 정작 shader cost나 overdraw를 놓칠 수 있습니다. 반대로 overdraw만 줄이다가 material 분기를 늘려 state change를 키울 수도 있습니다. 병목이 CPU인지 GPU인지부터 먼저 구분하세요.

참고 링크

3 sources