NEW STATE Mobile zmniejsza wykorzystanie GPU o 22% dzięki narzędziu Android GPU Inspector

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.

Zrzut ekranu z aplikacji NEW STATE na urządzeniu mobilnym

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.

Zrzut ekranu z aplikacji NEW STATE na urządzeniu mobilnym

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.

Dane wewnętrzne przedstawiające zmniejszenie wykorzystania GPU

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).