NEW STATE Mobile zmniejsza wykorzystanie GPU o 22% dzięki narzędziu Android GPU Inspector
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Tło
NEW STATE Mobile to gra typu battle royale firmy Krafton, która została wydana w listopadzie 2021 r. na całym świecie. W pierwszym miesiącu od premiery osiągnęła ponad 45 mln pobrania. KRAFTON, Inc. to grupa niezależnych studiów tworzących gry, które wspólnie tworzą innowacyjne i wciągające rozrywki dla graczy na całym świecie. Firma składa się z PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion i Unknown Worlds, z których każda ma unikalną wiedzę. NEW STATE Mobile zostało stworzone za pomocą Unreal Engine 4. W ramach tego projektu podjęliśmy różne próby zmniejszenia wydzielania ciepła i zużycia baterii spowodowanego wysokim wykorzystaniem procesora graficznego przez charakterystyczne funkcje gry.
Gracze mogą toczyć bitwy na dużych dystansach, więc silnik gry musi być w stanie renderować sceny z dużej odległości. Na polu bitwy znajduje się też wiele roślin, których nadmierne wyświetlanie może znacząco obniżyć wydajność. W tym celu zespół użył Android GPU Inspector (AGI), aby zoptymalizować wykorzystanie GPU w grze i wyeliminować wąskie gardła.

Rysunek 1. Zrzut ekranu z aplikacji NEW STATE Mobile
Rozwiązanie
NEW STATE Mobile używał AGI do uzyskiwania wielu informacji o licznikach GPU i odpowiedniego optymalizowania ich wykorzystania. Dzięki danym profilowania aktywności GPU udostępnionym przez AGI zidentyfikowali niepotrzebne przejścia renderowania. Po zidentyfikowaniu segmentów, które pochłaniały wykorzystanie GPU i przepustowość pamięci, zespół sprawdzał postępy optymalizacji za pomocą licznika GPU i aktywności GPU, aby sprawdzić, czy idzie w odpowiednim kierunku.

Rysunek 2. Zrzut ekranu z aplikacji NEW STATE Mobile
Oto kilka informacji o wydajności gry uzyskanych dzięki AGI:
Optymalizacja podstawowego przejścia: prepass głębi, czyli technologia zwiększająca wykorzystanie Early-z, pomogła zmniejszyć wykorzystanie cieniowania fragmentów. Przetwarzanie głębi zostało użyte w przypadku LOD0, które zajmuje większość przestrzeni ekranu, co minimalizuje obciążenie związane z dodatkowymi wywołaniami rysowania. Korzystanie z 32-bitowego formatu kolorów sceny może też zwiększyć wydajność całego procesu renderowania. Domyślny format SceneColor w Unreal Engine 4 to FloatRGBA, który jest 64-bitowy. Jeśli używasz formatu 32-bitowego, przepustowość pamięci może zostać zmniejszona o połowę.
Zmierzony wpływ: po zastosowaniu prepassu głębi wykorzystanie GPU spadło o 7, 5%. Z powodu prepassu głębokości więcej fragmentów może być wczesnych Z. Czas potrzebny na cieniowanie fragmentów zmniejszył się o 2%. Dzięki 32-bitowemu formatowi scenecolor udało się zmniejszyć wykorzystanie GPU o 5, 3%. Zajętość shaderów zmniejszyła się o 2%, a łączna ilość danych odczytywanych przez GPU z pamięci systemowej zmniejszyła się o 330 MB/s. Ilość danych zapisywanych przez GPU do pamięci systemowej została zmniejszona o 78 MB/s, a czytanie danych z pamięci tekstur – o 43 MB/s.
Optymalizacja cieni: gdy siatki są używane jako źródła cieni, stosowanie wysokiego poziomu szczegółów nie ma większego wpływu na jakość. Zaleca się używanie niskiego poziomu szczegółów poligonów, co pomaga zmniejszyć liczbę trójkątów. W Unreal Engine 4 można używać LOD z małą liczbą wielokątów za pomocą polecenia konsoli „ForceLODShadow”.
Zmierzony wpływ: liczba trójkątów użytych do cieni zmniejszyła się o około 120 tys. jednostek. Dane z licznika GPU w modelu AGI pokazały, że wykorzystanie GPU spadło o około 2%, ilość danych odczytanych z pamięci systemowej przez GPU spadła o 130 MB/s, a zapisane z GPU do pamięci systemowej – o około 23 MB/s.
Automatyczne tworzenie instancji: automatyczne tworzenie instancji, które można stosować zarówno w przypadku optymalizacji w przebiegu i optymalizacji w przebiegu z użyciem obrazu cienia, umożliwia scalanie tych samych poleceń renderowania w czasie wykonywania, a następnie ich jednoczesne renderowanie. Dzięki temu aplikacja mobilna NEWSTATE mogła stosować globalne oświetlenie do poszczególnych obiektów bez utraty wydajności. Automatyczne tworzenie instancji to podstawowa funkcja Unreal Engine 4.
Zmierzony wpływ: liczba wywołań metody draw została zmniejszona o 500. Zmniejszyło to liczbę wywołań do funkcji draw o około 48%. Wykorzystanie karty graficznej spadło o 3,5%. Te pomiary zostały wykonane za pomocą OpenGL.

Ilustracja 3. Dane wewnętrzne przedstawiające zmniejszenie wykorzystania karty graficznej
Wyniki
Dzięki zastosowaniu AGI firma NEW STATE Mobile zmniejszyła wykorzystanie GPU o 22%. Dzięki optymalizacji przejść głębi i cieni wykorzystanie GPU zmniejszyło się odpowiednio o 19% i 3%. Znacznie zmniejszyła się też liczba wywołań funkcji rysowania oraz łączna ilość odczytana i zapisywana przez GPU z pamięci systemowej.
Rozpocznij
Dowiedz się, jak analizować wpływ gry na urządzenia z Androidem, identyfikując problemy z wydajnością i obszary, które należy zoptymalizować za pomocą Inspektora GPU na Androidzie (AGI).
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2022-02-25 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2022-02-25 UTC."],[],[],null,["# NEW STATE Mobile reduces GPU usage by 22% with Android GPU Inspector\n\nBackground\n----------\n\n[NEW STATE Mobile](https://play.google.com/store/apps/details?id=com.pubg.newstate) is a battle royale game from Krafton that launched Nov 2021 worldwide, and reached 45M+ downloads in the first month of launch. KRAFTON, Inc. is a collective of independent game development studios brought together to create innovative and engaging entertainment experiences for gamers across the world. The company consists of PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion, and Unknown Worlds, each with its own unique expertise. NEW STATE Mobile was created with Unreal Engine 4, and various attempts have been made to reduce heat and battery consumption caused by high GPU usage from their distinctive gaming features.\n\nGamers can play long range battles, so the game engine needs to be able to render scenes from quite a distance. Also, numerous vegetations are present in the battleground, leading the overdraw of these vegetations to have a substantial impact on decreasing performance. This led the team to [Android GPU Inspector](http://developer.android.com/agi) (AGI) to help optimize the game's GPU usage and eliminate bottlenecks.\n\n**Figure 1**: Screenshot from NEW STATE Mobile\n\nWhat they did\n-------------\n\nNEW STATE Mobile used AGI to access loads of GPU counter information and optimize their GPU usage accordingly. They identified unnecessary render passes with the help of the GPU activity profiling data provided by AGI. After identifying which segments were taking up GPU usage and memory bandwidth, they continued to check the optimization progress using the GPU Counter and GPU activity back and forth to check if they were headed in the right direction.\n\n**Figure 2**: Screenshot from NEW STATE Mobile\n\nHere are a few things they learned about the game's performance using AGI:\n\n- **Base pass optimization**: Depth prepass, which is a technology that increases usage of Early-z, helped decrease the use of fragment shading. Depth prepass was specifically used for LOD0 which takes up most of the screen space, minimizing the burden that can come from additional draw calls. Also, using the 32-bit scenecolor format can increase the performance of the entire render pass. Default SceneColor format of UnrealEngine4 is FloatRGBA, which is 64-bit. If a 32-bit format is used, memory bandwidth can be reduced by half.\n\n- **Impact measured**: After applying depth prepass, GPU utilization dropped by 7.5%. Due to the depth prepass, more Fragments could be Early-Z. The rate of time required for fragment shading has decreased by 2%. Through the 32-bit scenecolor format, GPU utilization was reduced by 5.3%. Shaders Busy decreased by 2%, and total GPU read from system memory decreased 330 MB/s. The amount the GPU writes to system memory was reduced by 78 MB/s and Texture memory read was also reduced by 43 MB/s.\n\n- **Shadow pass optimization**: When meshes are used as shadow casters, using high polygon LOD does not really make a difference in quality. It is preferred to use low polygon LOD which helps reduce the number of triangles. In Unreal Engine 4, low polygon LOD can be used via the console command 'ForceLODShadow'.\n\n- **Impact measured**: The number of triangles used for shadows decreased by about 120,000. The GPU counter data in AGI showed that GPU usage decreased about 2%, the amount of the GPU memory read from the system memory decreased 130MB/s, and the amount written from the GPU to the system memory decreased about 23MBs.\n\n- **Auto-instancing**: Auto-instancing, which can be applied for both shadow pass and base pass optimization, allows you to merge the same render commands at runtime and then be rendered all at once. This allowed NEWSTATE mobile to apply global illumination to individual objects without losing performance. Auto-instancing is a basic feature provided by UnrealEngine4.\n\n- **Impact measured**: Draw calls were reduced by 500. It reduced about 48% of the draw calls. GPU utilization decreased about 3.5%. These measurements were taken using OpenGL.\n\n**Figure 3**: Internal data showing GPU usage reduction\n\nResults\n-------\n\nBy using AGI, NEW STATE Mobile reduced its GPU usage by 22%. From depth prepass and shadow pass optimization, GPU usage was down by 19% and 3% respectively. Draw calls and the total memory read and written by GPU from system memory was also substantially reduced.\n\nGet started\n-----------\n\nLearn how to analyze the impact of your game on Android devices by identifying performance issues and areas to optimize with the [Android GPU Inspector](https://developer.android.com/agi) (AGI)."]]