🌍 Unity/영상 필기

[영상 필기] 다양한 프로파일링 툴 소개

맨텀 2023. 11. 20. 16:08

영상 링크
https://www.youtube.com/watch?v=Z4xoJeXsk2U

유니티에서 사용되는 프로파일러 툴의 종류와 사용방법에 관한 영상

 

다양한 프로파일러

유니티 내장 프로파일러

Unity Profiler

Profile Analyzer

Frame Debugger

Memory Profiler

 

외부 툴 : IOS

Xcode Instrument

Xcode GPU Profiling

 

윈도우 플랫폼 게임

PIX for Window

 

 

Physics Debug

- 프로파일링이라기 보다는 디버깅툴

- 충돌 검출 동작 여부 등을 확인 가능

 

Unity Profiler

- 에디터에서 프로파일링하는건 1차적인 거고, 빌드해서 디바이스랑 연결해서 프로파일링 하기를 권장함 

- 빌드세팅 - Development Build 체크해야 원격 프로파일링 가능

- 빌드세팅 - Autoconnect Profiler 도 체크하고 빌드앤 런 하면 자동으로 붙는다.

 

물리요소는 직접 움직이지 말 것

- 프로파일러로 찍어보면 Physics.SyncTransform Change 가 발생하는 경우가 있다. 

- transform.Translate 등으로 움직이면 C++ Engine 상의 위치값과 Physics 상의 위치값이 달라진다.

 그런 경우 SyncTransform Change가 발생한다.

 

ProfilerMarker

프로파일러 마커를 사용하여 특정 구간을 프로파일러에서 체크 가능하다.

https://docs.unity3d.com/ScriptReference/Unity.Profiling.ProfilerMarker.html

 

Unity Profiler

- 왼쪽 상당의 Profiler Modules 에서 모듈을 토글 할 수 있는데,

모듈 중 UI를 체크하면 UI Batch를 확인 할 수 있다. 오히려 프레임 디버거에서 확인 불가능한 UI 디버거를 확인 가능하다.

- UI 쪽 최적화는 프레임 디버거 보다는 이쪽을 사용하자.

 

Gfx.WaitForPresent

CPU가 GPU를 기다릴 때 발생하는 이벤트.

이 값이 크다면 GPU병목이다.

 

PostLateUpdate.PlayerUpdateCanvases

- Graphic.OnRectTransformDimensionsChange

UI에서 막 스크롤해보면 위의 이벤트가 발생하면서 프레임이 떨어짐

이는 UI를 Rebuild 하는 과정에서 생기는 부하이다.

UI도 실은 메쉬로 되어있는 것이기 때문에 움직이면 하위에 있는 UI 메쉬들을 매 프레임 전부 다시 그려야 함

 

 

Profiler Analyzer

- 유니티 프로파일러를 보조해 주는 툴

- 프로파일러에서 캡처된 상태에서 창을 열고 Pull Data 하면 더 자세한 정보를 얻을 수 있다.

- 특정 두 시점의 데이터를 비교하는 것도 가능하다. 예를 들어 프레임이 정상일 때랑 부하가 걸릴 때 두 군데를 찍어서 비교하면 가장 차이가 많은 부분이 최적화 대상이다.

 

HP Bar

- UI로 빼는 방법도 있는데, 그냥 SortingLayer를 UI로 하나 만들고서 최상단으로 둬서 드로우 오더를 조정하는 방법으로 최적화가 가능하다.

- 게임에 따라 HP Bar의 크기가 유지되야 되는 경우 Canvas로, 아닌 경우 2D오브젝트의 Sortinglayer로 선택하면 될 듯.

 

Physics Debug

- 프로파일링이라기 보다는 디버깅툴

- 충돌 검출 동작 여부 등을 확인 가능

 

Memory Profiler

메모리 프로파일러도 역시 스냅샷 두 개를 비교하는 기능을 제공한다.

 

Xcode Instrument

iOS 기기를 연결한 상태에서 실행.

유니티쪽 프로파일러는 유니티 측에서 생성해 놓은 마커들만 볼 수 있는데,

이쪽은 cpp 레벨의 부하까지 볼 수 있다.

 

className _ MethodName _ UID 순으로 표시된다.

 

XCode GPU Profiler

화면 왼쪽에 FPS가 표시되지 않는 경우

상단 메뉴 Product - Scheme - Edit Scheme - Rum - Options - GPUFrameCapture - Metal

로 설정해야 보인다.

하단에 Capture GPU workload 눌러서 캡처로 볼 수 있다.

 

캡처가 완료되면 다양한 정보 확인 가능 

 

PIX for Window

윈도우 게임 프로파일러.

 

사용하려면 윈도우, 그래픽카드에서 각각 개발자 모드를 켜야 한다.

 

윈도우는 윈도우 설정에서 개발자 모드 ON

그래픽카드는 NVIDIA 제어판 - 개발자 - GPU 성능 카운터 관리 - 액세스 옵션 선택 - 허용

빌드할 때 Direct3D12 켜야 한다 (Auto X)