Draw Call

spixychz·2026년 5월 21일

기술면접

목록 보기
12/13

CPU tells, Draw!

  • CPU가 현재 프레임에서 무엇을 어떻게 그려야 하는지 결정해 Draw Call 생성
  • Draw Call : CPU가 GPU에 보내는 렌더링 명령 단위
  • 무엇을 = Mesh, 어떻게 = Material
  • 현재 설정된 Render State (= GPU State) 와 리소스를 사용하여 렌더링 요청
  • Render State에 포함된 정보
    • vertex / index buffers
    • shader programs (vertex / pixel)
    • all shader inputs (Material, texture, light ..)

Render State의 변경

  • CPU의 명령을 GPU의 명령으로 번역하는 비용은 비싸다
  • CPU → Command Buffer (Queue) → GPU
  • Draw Call이 많아지면 CPU Bottleneck 발생

Draw Call의 발생

  • 일반적으로 하나의 Mesh를 렌더링하면 하나의 Draw Call 발생
    • Mesh #1 + Material #1 = Draw call #1
    • Mesh #N + Material #1 = Draw call #N
      • render state 변경이 적어 효율적
    • Mesh #1 + Material #N = Draw call N
      • Material 변경으로 Render State 변경 증가
  • Multi Pass By Shader
    • Shader가 여러 Pass를 가지면 하나의 Mesh가 여러 Draw Call을 발생시킬 수 있다

Draw Call 줄이기

  • 렌더링되는 오브젝트 줄이기
    • View Frustum Culling : 카메라 시야 밖의 오브젝트 제외
      • Near Clipping Plane과 Far Clipping Plane 거리 줄이기
    • Occulusion Culling : 오브젝트에 가려진 오브젝트 제외
    • LOD (Level Of Detail)
  • 오브젝트 렌더링 횟수 줄이기
    • Real-Time 대신 Baked 라이트 사용
    • 그림자 품질 설정
    • Reflection Probes 사용 최소화
  • Atlas
    • 여러 Texture를 하나로 합쳐 같은 Material 사용 처리
    • Material #N → 1
  • Batching
    • 여러 Renderer를 적은 Draw Call 또는 적은 CPU 렌더링 비용으로 처리
    • Mesh #N → 1
  • GPU Instancing
    • 같은 오브젝트를 대량 렌더링
profile
UNITY로 게임 개발하는 사람

0개의 댓글