Call of Duty Warzone Mobile использует Vulkan для улучшения графики

Скриншот логотипа названия игры из Call of Duty Warzone Mobile.

Call of Duty: Warzone Mobile — это экшен от первого лица из популярной франшизы Call of Duty . Мобильная реализация чрезвычайно популярной игры для консолей и ПК использует преимущества мобильных низкоуровневых API, чтобы обеспечить игрокам отличный опыт.

С технической точки зрения целью мобильной реализации является поддержка широкого спектра мобильных устройств Android, сохраняя при этом реализацию как можно ближе к консольной версии и обеспечивая совместимость графического конвейера и набора инструментов с текущими играми для консолей и ПК. содержание.

Движок Call of Duty реализует синхронизацию, распределение памяти и планирование для управления представлением рендеринга с помощью системы, называемой рендерером графа задач , которая определяет работу, которую необходимо выполнить на графическом процессоре, и указывает необходимые ресурсы. Более конкретно, система представляет собой граф рендеринга с задачами, ресурсами и зависимостями, определенными в высокоуровневом сценарии, который обрабатывается во время загрузки для создания оптимального порядка работы, которая будет выполняться на графическом процессоре, и предоставления ресурсов, используемых во время отправки кадра. .

Vulkan , современный кроссплатформенный API 3D-графики, был выбран в качестве внутреннего интерфейса рендеринга для средства рендеринга графов задач на Android.

Рисунок 1. Детальный фон с наложенной графикой.

Преимущества API Вулкана

Чтобы сохранить отличительный визуальный стиль Call of Duty и лучше поддерживать общий прогресс между Call of Duty: Warzone Mobile и его аналогами для консолей и ПК, в игре используется API рендеринга, аналогичный API существующих реализаций для консолей и ПК. На Android Vulkan позволяет Activision использовать существующие инструменты, конвейеры и шейдеры и поддерживать контент, созданный художниками, без необходимости переделывать весь стек программного обеспечения.

Попытка добиться этого с помощью совершенно другого рендерера была бы непомерно дорогой, а попытка поддержки графических API старого поколения для конвейера Call of Duty оказала бы слишком сильное влияние на набор функций. Activision определила, что Vulkan является наиболее подходящим выбором для реализации всех функций Android при минимизации общих затрат на разработку. Vulkan получил значительную поддержку среди производителей устройств Android, что делает API хорошим выбором для будущих разработок.

Устройства, на которых отсутствует оборудование или драйверы, поддерживающие Vulkan, обычно старые и недостаточно мощные для запуска игры. Таким образом, помимо того, что Vulkan технически подходит для движка и конвейера контента, поддержка Vulkan как аппаратное требование служит фильтром производительности.

Совместимость с существующим API платформы.

Vulkan концептуально похож на существующие API-интерфейсы, используемые в Call of Duty: Warzone , с явным управлением ресурсами, псевдонимами памяти, аналогичным вычислительным конвейером и доступом к ресурсам без привязки. Сходство позволило Activision сохранить структуру рендеринга в соответствии с рендерером для консолей и ПК, потребовав только внутренних изменений для интерфейса с Vulkan.

Поддержка существующих шейдеров на основе HLSL с полным набором функций с использованием компиляции DXC в SPIR-V позволяет Android интегрироваться в существующие конвейеры сборки Activision. Этот процесс не лишен проблем, но все же более выгоден, чем переписывание и накладные расходы на поддержку нескольких версий или языков.

Рисунок 2. Сложная среда рендеринга.
Рисунок 3. Рендеринг высококачественного контента.

Функции Vulkan, используемые в Call of Duty: Warzone Mobile

  • Совмещение ресурсов и явное управление барьерами позволяют графу задач рендеринга значительно снизить требования к памяти для целей рендеринга по сравнению со статическим выделением.
    • Гибкость позволяет беспрепятственно использовать методы, удобные для мобильных устройств, в задачах рендеринга.
    • Проходы рендеринга как основные функции позволяют средству рендеринга принимать оптимальные решения для распространенных архитектур мобильных графических процессоров . Большинство этих решений также обеспечивают преимущества на других платформах.
    • Динамическое разрешение сцены поддерживается по умолчанию графом задач, что позволяет в некоторой степени контролировать производительность и энергопотребление.
  • Полный конвейер графического процессора с расширенной отсечкой на основе вычислений позволяет существенно повысить сложность сцены.
    • Балансировка детализации отбора для учета отложенных средств рендеринга на основе плиток .
    • Узким местом является сложная вычислительная нагрузка, а не подсчет треугольников.
      • Конвейер графического процессора разработан с учетом различных сценариев.
      • Параметры изменения степени детализации отбора.
  • Очень большие наборы дескрипторов позволяют осуществлять полный рендеринг без привязки на совместимом оборудовании, что, в свою очередь, существенно снижает затраты на создание вызовов отрисовки процессора с соответствующими преимуществами в области производительности, энергопотребления и нагрева.
  • Аппаратный конфигуратор позволяет настраивать параметры точности в зависимости от конкретных моделей устройств для обеспечения наилучшего взаимодействия с пользователем.
    • Пользователи настраивают режим: лучшая производительность, лучшее качество или экономия заряда батареи.
  • Дизайн набора шейдеров для конкретного устройства предоставляет разные наборы шейдеров для разных предустановок графического процессора (настройки качества и точности). Аппаратный конфигуратор помогает игре выбрать лучший набор шейдеров для устройства.
    • Помогает уменьшить комбинаторный взрыв широко настраиваемых шейдеров с требованиями создания конвейерных объектов .
    • Включает резервные наборы шейдеров без привязки для старых телефонов и драйверов, которые не поддерживают столько ресурсов шейдеров.
  • Разумное использование констант специализации для устранения различий в драйверах.
    • Большинство ошибок компилятора шейдеров в драйверах устраняются с помощью констант специализации.
    • Балансируется количеством наборов шейдеров для конкретного устройства.
Рисунок 4. Полный конвейер графического процессора с расширенной отсечкой на основе вычислений, позволяющей создавать сложные сцены.

Профилирование и отладка

На ранних этапах разработки Activision обнаружила множество пробелов в стабильности и функциональности инструментов профилирования и отладки Vulkan. С тех пор постоянно совершенствуются профилировщики конкретных поставщиков и независимые от поставщиков инструменты, такие как RenderDoc . Теперь разработчики могут более уверенно решать проблемы рендеринга и возможности оптимизации.

Высокая точность с Vulkan

Call of Duty: Warzone Mobile работает на широком спектре Android-устройств с поддержкой Vulkan, используя технологию рендеринга, общую с играми для консолей и ПК. Vulkan сократил накладные расходы и трудности при разработке и позволил доставлять аутентичный, высококачественный контент и игровой процесс Call of Duty игрокам Android.