본문 바로가기
C#/C# 학습 (TIL)

유니티 그래픽스 퍼포먼스 최적화 관련 - 드로우콜

by jjiing 2022. 12. 30.

드로우 콜이란?

CPU가 GPU에게 오브젝트를 그리라는(렌더링 하라는) 명령을 내리는 것으로, 최적화에 아주 많은 관여를 하는 부분이다.

대부분의 병목의 원인이 드로우콜에서 발생하기 때문이다.

 

또한 게임 최적화를 위해선 CPU의 부하인지, GPU의 부하인지를 체크해야할 필요가 있다.

 

 

'배칭'이라는 방법을 사용해 메시들이 동일한 텍스쳐와 재질로 구성되면 드로우콜을 줄일 수 있다.

 

 

  • 배칭(Batching)
    • 드로우콜을 줄이기 위해 여러 Batch를 하나로 묶는 것.
    • 동일한 메터리얼을 공유하는 오브젝트들을 묶어서 드로우콜 처리
    • Batch : 렌더 상태 변경 + 그리라는 명령
  • 정적배칭 Static batching
    • 움직이지 않는 정적인 오브젝트의 경우 하나의 메시로 합쳐서 만들어서 처리
    • 하나의 메시로 합쳐서 사용하기 때문에, 사용하지 않는 메시 정보도 메모리에 올라가기 때문에 메모리 이슈가 있을 수 있음
    • 드로우콜의 수를 줄이는 것이 아니라 드로우 콜 사이의 렌더 상태 수를 줄인다.
  • 동적배칭 Dynamic batching
    • 동적으로 움직이는 오브젝트들을 하나의 메시로 만들어서 처리
    • 런타임 상에서 발생하기 때문에 CPU에 과부하가 올 수 있음
    • 동적배칭이 가능한 오브젝트는 300개 미만의 버텍스 개수, 900개 미만의 버텍스 속성을 가지는 오브젝트로 같은 재질을 공유해야함.

 

참고로 유니티에서는 Game 화면에서 Stats를 눌러 렌더링 통계를 볼 수 있다.

Batches : 드로우 콜 수

'C# > C# 학습 (TIL)' 카테고리의 다른 글

Enum flag  (0) 2023.02.06
유니티 RectTransform  (0) 2023.01.24
유니티 safe Area 대응  (1) 2022.12.12
C# SendMessage / Attributes  (0) 2022.07.02
C# 인덱서, 제네릭, 확장메서드  (0) 2022.07.01