[Unity] Statistics 패널에 대해 알아보자

Donghee·2024년 5월 22일
0

개요

유니티 에디터 내의 게임 플레이 화면에는 Stats라고 하는 버튼이 있다. 테스트 플레이 중 이를 클릭하면 아래 사진과 같이 수많은 숫자들이 나타나며 변화한다. 이중에서는 대강 알아듣겠는 용어들도 있으나, 처음 보는 용어들도 존재한다. 이를 명확하게 짚고 넘어가보자.

Audio

지금 플레이 중인 씬의 현재 프레임에 대한 오디오 정보를 나타낸다.

Level

현재 프레임의 사운드 데시벨을 나타낸다. 만약 게임 플레이 화면에서 아래의 음소거(Mute) 버튼을 눌렀다면, (MUTED) 라는 텍스트가 추가로 표시된다.

Clipping

클리핑이란, 오디오 소스의 볼륨이 최대 출력을 넘어갈 때 이를 왜곡시켜 최대 출력보다 낮게 만드는 기법을 의미한다. Statistics 패널에서의 Clipping은 현재 프레임에서의 클리핑으로 인한 오디오 왜곡의 백분율을 나타낸다.

DSP load

DSP는 Digtal Signal Processor(디지털 신호 처리 장치)로, 디지털 신호로 들어온 소리 정보를 컴퓨터가 처리하기 편하게 가공해주는 역할을 한다. DSP load는 이런 DSP가 처리하는 버퍼의 총 부하 비율을 나타낸다. 유니티에서는 보통 오디오 필터나 효과 등에 자주 사용된다고 한다.

Stream load

게임에서 재생 중, 즉 스트리밍 중인(Streaming) 오디오 소스의 부하 비율을 나타낸다. 오디오 파일의 크기, 재생 속도 등이 크게 관여된다. 이를 통해 오디오 성능을 파악하는데 큰 역할을 한다.

Graphics

현재 플레이 화면의 렌더링 처리에 대한 통계가 나온다.

FPS

FPS는 Frames Per Second로 초당 몇 프레임으로 재생되는지 나타내준다. 옆의 숫자는 이 프레임이 처리되는데 걸린 시간을 나타낸다. 여기에 기타 에디터 처리에 걸리는 시간은 포함되지 않는다.

CPU

CPU에는 main과 render thread 두 가지에 대한 시간이 존재한다. main의 시간은 한 프레임을 처리하는데 걸리는 총 시간을 의미한다. 여기에는 에디터 처리에 걸리는 시간도 포함한다. render thread의 시간은 한 프레임을 렌더링 하는 데에 걸리는 시간을 의미한다. 이는 프레임 업데이트에 소요되는 시간은 포함하지만, 에디터 처리에 관한 시간은 포함하지 않는다.

Batches

Batch에 대해 알기 위해선 DrawCall과 SetPass Call에 관해 알아야 한다.

DrawCall

DrawCall이란 CPU가 GPU에게 오브젝트를 렌더링하라고 요청하는 것이다. 유니티에서는 게임엔진이 그래픽스 API(OpenGL, Direct3D 등)에 DrawCall을 보낸다. DrawCall이 일어나면 CPU는 GPU에게 메시 정보, 텍스처 정보, 쉐이더 정보, 트랜스폼 정보 등의 정보를 포함해 같이 보낸다.

SetPass Call

여기서 텍스처, 쉐이더, 알파 블렌딩 정보들을 SetPass Call이라고 한다. 보통 SetPass Call은 처리하는 비용이 높기 때문에, 최적화할때 먼저 고려해야하는 요소라고 한다. 따라서 이 SetPass Call을 줄일 수 있다면, 성능이 향상되는 것이다. 이런 관점에서 Batching 기법이 등장한다.

Batching

Batch는 DrawCall과 SetPass Call을 포함한 렌더 상태 변경 명령들을 포함한 넓은 명령을 뜻한다. 여기서 비용이 높은 SetPass Call을 최소화시킨다. 다른 Mesh더라도 같은 Material이라면 SetPass Call을 한번만 호출하고, 여러 Batch들을 하나의 Batch로 합쳐 CPU 퍼포먼스를 아낀다. 이런 기법을 Batching 이라고 한다.

결국 Statistics 패널의 Batches는 Batching을 진행한 후 현재 프레임을 위해 렌더링된 Batch의 수를 나타낸다.

Saved by batching

유니티가 Batching을 통해 절약한 Batch의 수를 나타낸다. 이 수가 높을수록 Batching의 관점에서 최적화가 잘 진행된 것이다.

Tris

현재 프레임에서 그려진(렌더링에 사용된) 삼각형(Triangles)의 수를 나타낸다.

Verts

현재 프레임에서 그려진(렌더링에 사용된) 정점(Vertexes)의 수를 나타낸다.

Screen

화면의 해상도와 그 화면이 사용하는 메모리 양를 나타낸다.

SetPass calls

현재 프레임에서 호출한 SetPass Call의 개수를 나타낸다. SetPass Call의 개수가 적을수록 CPU의 부하가 줄어든다. 또한 Batches에 비해 SetPass calls의 개수가 적을수록 Batching을 활용한 최적화를 잘 수행한 것이라 볼 수 있다.

Shadow casters

현재 프레임에서 그림자를 캐스트하는 오브젝트의 수를 나타낸다.

Visible skinned meshes

프레임에서 나타나는 Skinned Mesh Renderer의 수를 나타낸다.

Animation components playing

프레임 중 재생되는 Animation 컴포넌트의 수를 나타낸다.

Animator components playing

프레임 중 재생되는 Animator 컴포넌트의 수를 나타낸다.

참고

profile
마포고개발짱

0개의 댓글