Grafika Call of Duty Warzone Mobile zapewnia lepszą grafikę dzięki interfejsowi Vulkan

Zrzut ekranu z logo Call of Duty Warzone Mobile.

Call of Duty: Warzone Mobile to gra akcji z perspektywy pierwszej osoby należąca do popularnej serii Call of Duty. Wersja mobilna tej popularnej gry na konsole i komputery korzysta z interfejsów API na niskim poziomie, aby zapewnić graczom świetne wrażenia.

Z technicznego punktu widzenia celem implementacji na urządzeniach mobilnych jest zapewnienie obsługi wielu urządzeń mobilnych z Androidem przy jednoczesnym zachowaniu jak największego podobieństwa do wersji na konsole i sprawdzenie, czy łańcuch narzędzi i przepływ danych są zgodne z obecnymi tytułami i treściami na konsole i komputery.

Silnik Call of Duty obsługuje synchronizację, przydzielanie pamięci i harmonogram przesyłania danych do renderowania za pomocą systemu zwanego renderowaniem grafu zadań, który określa zadania do wykonania na GPU i określa wymagane zasoby. Konkretnie jest to graf renderowania z zadaniami, zasobami i zależnościami zdefiniowanymi w skrypcie wysokiego poziomu, który jest przetwarzany w momencie wczytywania, aby wygenerować optymalne uporządkowanie zadań do wykonania na procesorze graficznym i zapewnić zasoby używane w momencie przesyłania klatki.

Jako interfejs renderowania w tła dla renderowania grafu zadań na Androidzie wybrano Vulkan, czyli nowoczesny wieloplatformowy interfejs API do obsługi grafiki 3D.

Rysunek 1. Szczegółowy tło z nałożoną grafiką.

Zalety interfejsu Vulkan API

Aby zachować charakterystyczny styl wizualny Call of Duty i lepiej obsługiwać wspólny postęp w Call of Duty: Warzone Mobile oraz jego odpowiednikach na konsole i komputery, gra korzysta z interfejsu API do renderowania podobnego do istniejących implementacji na konsole i komputery. Na Androidzie Vulkan umożliwia firmie Activision korzystanie z dotychczasowych narzędzi, procesów i shaderów oraz obsługę treści tworzonych przez artystów bez konieczności gruntownej zmiany całego oprogramowania.

Użycie do tego celu zupełnie innego renderera byłoby zbyt kosztowne, a próba obsługi interfejsów API grafiki starszej generacji w pipeline Call of Duty miałaby zbyt duży wpływ na zestaw funkcji. Firma Activision uznała, że Vulkan jest najlepszym wyborem, jeśli chodzi o zapewnienie pełnej funkcjonalności na Androidzie przy jednoczesnym zminimalizowaniu wpływu na ogólne koszty programowania. Vulkan zyskał znaczące wsparcie wśród producentów urządzeń z Androidem, dzięki czemu interfejs API jest również dobrym wyborem na potrzeby przyszłego rozwoju.

Urządzenia bez sprzętu lub sterowników obsługujących Vulkan są zazwyczaj starsze i nie są wystarczająco wydajne, aby uruchomić grę. Vulkan jest więc nie tylko technicznie odpowiedni dla silnika i przepływu danych, ale jako wymaganie sprzętowe pełni funkcję filtra wydajności.

Zgodność z dotychczasowym interfejsem API platformy

Vulkan jest pod względem koncepcyjnym podobny do istniejących interfejsów API używanych w grze Call of Duty: Warzone. Oferuje on jawne zarządzanie zasobami, aliasing pamięci, podobny przepływ danych i dostęp do zasobów bez wiązania. Dzięki tym podobieństwom Activision mógł zachować strukturę renderowania zgodną z renderowaniem na konsoli i na PC, wymagając tylko zmian w backendzie, aby umożliwić obsługę interfejsu Vulkan.

Obsługa dotychczasowych shaderów opartych na HLSL z pełnymi zestawami funkcji za pomocą kompilacji DXC na SPIR-V umożliwia Androidowi integrację z dotychczasowymi systemami kompilacji Activision. Ten proces nie jest pozbawiony trudności, ale nadal jest bardziej opłacalny niż przepisywanie i nadwyżka kosztów utrzymania wielu wersji lub wersji w różnych językach.

Rysunek 2. złożone środowisko renderowania,
Rysunek 3. Renderowanie treści o wysokiej jakości.

Funkcje Vulkana używane w Call of Duty: Warzone Mobile

  • Aliasowanie zasobów i wyraźne sterowanie barierą umożliwiają graficznemu procesowi renderowania znaczne zmniejszenie wymagań pamięciowych dla celów renderowania w porównaniu ze statyczną alokacją.
    • Ta elastyczność umożliwia płynne stosowanie metod przyjaznych urządzeniom mobilnym w procesie renderowania.
    • Przebiegi renderowania jako funkcje podstawowe pozwalają procesorowi renderowania podejmować optymalne decyzje w przypadku typowych architektur mobilnych GPU. Większość z tych decyzji przynosi też korzyści na innych platformach.
    • Domyślnie wykres zadań obsługuje dynamiczną rozdzielczość sceny, co umożliwia częściową kontrolę wydajności i zużycia energii.
  • Pełny potok GPU z rozbudowanym odrzucaniem na podstawie obliczeń umożliwia znacznie zwiększenie złożoności sceny.
    • Utrzymanie równowagi w sposobie odrzucania elementów, aby uwzględnić kierowanie na opóźnione mechanizmy renderowania oparte na kafelkach.
    • Butelka jest złożonym obciążeniem obliczeniowym, a nie liczbą trójkątów.
      • Potok GPU został zaprojektowany z myślą o różnych scenariuszach.
      • Opcje zmiany szczegółowości odrzucania.
  • Bardzo duże zbiory deskryptorów umożliwiają renderowanie bez ograniczeń na zgodnym sprzęcie, co z kolei znacznie zmniejsza koszt tworzenia wywołań funkcji CPU, a także wiąże się z korzyściami związanymi z wydajnością, mocą i temperaturą.
  • Konfigurator sprzętu umożliwia wprowadzanie zmian w ustawieniach jakości na podstawie konkretnych modeli urządzeń, aby zapewnić użytkownikom jak najlepsze wrażenia.
    • Użytkownicy mogą wybrać tryb: najlepsza wydajność, najlepsza jakość lub oszczędzanie baterii.
  • Projekt zestawu shaderów dla poszczególnych urządzeń zapewnia różne zestawy shaderów dla różnych wstępnie skonfigurowanych ustawień GPU (ustawienia jakości i wierności). Konfigurator sprzętu pomaga grze wybrać najlepszy zestaw shaderów dla danego urządzenia.
    • Pomaga zmniejszyć kombinatoryczną eksplozję silnie konfigurowalnych cieniowników z wymaganiami dotyczącymi tworzenia obiektów w przepływie danych.
    • Zawiera zapasowe zestawy shaderów bez bindowania, które są przeznaczone dla starszych telefonów i sterowników, które nie obsługują tak wielu zasobów shaderów.
  • Używanie konstant specjalizacji w inteligentny sposób do uwzględniania różnic w przypadku różnych kierowców.
    • Większość błędów kompilatora shaderów w sterownikach można obejść, używając stałych specyfikacji.
    • Balansuje liczbę zestawów shaderów dla poszczególnych urządzeń.
Rysunek 4. Pełny potok GPU z rozbudowanym odrzucaniem na podstawie obliczeń, umożliwiającym tworzenie złożonych scen.

Profilowanie i debugowanie

Na początku prac nad grą Activision odkryła wiele problemów ze stabilnością i funkcjonalnością przy użyciu narzędzi do profilowania i debugowania Vulkan. Od tamtej pory udoskonalenia w profilach konkretnych dostawców i narzędziach niezależnych od dostawcy, takich jak RenderDoc, są wprowadzane systematycznie. Teraz deweloperzy mogą dokładniej skupić się na problemach z renderowaniem i możliwościach optymalizacji.

Wysoka jakość dzięki Vulkan

Call of Duty: Warzone Mobile działa na wielu urządzeniach z Androidem obsługujących Vulkana, korzystając z technologii renderowania wspólnej z grami na konsole i PC. Vulkan zmniejszył koszty i problemy związane z rozwojem oraz umożliwił dostarczanie autentycznych, wysokiej jakości treści i mechanizmów rozgrywki Call of Duty graczom na Androida.