Call of Duty: Warzone Mobile usa Vulkan para crear mejores gráficos

Captura de pantalla del logotipo del título del juego de Call of Duty Warzone Mobile.

Call of Duty: Warzone Mobile es un juego de acción en primera persona de la popular franquicia Call of Duty. La materialización móvil del juego de consola y de PC, que es muy popular, aprovecha las APIs de bajo nivel para dispositivos móviles con el objetivo de ofrecer una gran experiencia del jugador.

Desde una perspectiva técnica, el objetivo de la implementación para dispositivos móviles es admitir una amplia variedad de dispositivos móviles Android y, al mismo tiempo, mantener la implementación lo más cerca posible de la versión de consola y garantizar que la canalización de gráficos y la cadena de herramientas sigan siendo compatibles con el contenido y los títulos actuales de la consola y la PC.

El motor Call of Duty implementa la sincronización, la asignación de memoria y la programación para la administración del envío de procesamiento con un sistema llamado procesador de gráficos de tareas, que determina el trabajo que se ejecutará en la GPU y especifica los recursos necesarios. En particular, el sistema es un gráfico de renderización con tareas, recursos y dependencias definidos en una secuencia de comandos de alto nivel que se procesa en el tiempo de carga para generar un orden óptimo del trabajo que se ejecutará en la GPU y proporcionar los recursos que se usarán en el momento del envío de fotogramas.

Se seleccionó Vulkan, una API multiplataforma moderna de gráficos 3D, como interfaz de renderización de backend para el procesador de gráficos de tareas en Android.

Figura 1: Fondo detallado con gráficos superpuestos

Beneficios de la API de Vulkan

Para mantener el estilo visual distintivo de Call of Duty y respaldar mejor la progresión compartida entre Call of Duty: Warzone Mobile y sus versiones para consola y PC, el juego usa una API de renderización similar a la de las implementaciones existentes de consola y PC. En Android, Vulkan le permite a Activision compilar en sus herramientas, canalizaciones y sombreadores existentes, y admitir el contenido creado por los artistas, sin tener que modernizar toda la pila de software.

Intentar lograr esto con un procesador completamente diferente sería muy costoso, y tratar de admitir APIs de gráficos de generaciones anteriores para la canalización de Call of Duty tendría un impacto demasiado grande en el conjunto de funciones. Activision determinó que Vulkan era la opción más adecuada para implementar funciones completas en Android y, al mismo tiempo, minimizar el impacto en la sobrecarga general de desarrollo. Vulkan obtuvo una compatibilidad significativa entre los fabricantes de dispositivos Android, lo que hace que la API también sea una buena opción para el desarrollo futuro.

Los dispositivos que no cuentan con hardware o controladores compatibles con Vulkan suelen ser más antiguos y no tienen la potencia suficiente para ejecutar el juego. Por lo tanto, además de que Vulkan es un ajuste técnico para el motor y la canalización de contenido, la compatibilidad con Vulkan como requisito de hardware funciona como filtro de rendimiento.

Compatibilidad con la API de la plataforma existente

Conceptualmente, Vulkan es similar a las APIs existentes que se usan para Call of Duty: Warzone, tiene administración explícita de recursos, alias de memoria, canalizaciones de procesamiento similares y acceso a recursos sin vínculos. Las similitudes permitieron que Activision mantuviera la coherencia estructural del procesador con el de la consola y el de PC, lo que requirió solo cambios de backend para la interfaz con Vulkan.

La compatibilidad con sombreadores existentes basados en HLSL con conjuntos de funciones completos que usan la compilación de DXC a SPIR-V permite que Android se integre en las canalizaciones de compilación existentes de Activision. El proceso no está exento de los desafíos, pero es más beneficioso que una reescritura y la sobrecarga incurrida de mantener varias versiones o lenguajes.

Figura 2: Entorno de renderización complejo.
Figura 3: Renderización de contenido de alta fidelidad.

Funciones de Vulkan usadas en Call of Duty: Warzone Mobile

  • El alias de recursos y el control de barrera explícita permite que el gráfico de tareas de renderización reduzca de manera significativa los requisitos de memoria para los objetivos de renderización en comparación con la asignación estática.
    • La flexibilidad permite usar prácticas optimizadas para dispositivos móviles en tareas de renderización sin problemas.
    • Los pases de procesamiento como funciones principales permiten que el procesador tome decisiones óptimas para las arquitecturas de GPU para dispositivos móviles comunes. La mayoría de estas decisiones también proporcionan ganancias en otras plataformas.
    • La resolución dinámica de escena es compatible de forma predeterminada con el gráfico de tareas, lo que permite cierto control del rendimiento y el consumo de energía.
  • La canalización completa de GPU con una amplia selección basada en procesamiento permite una complejidad de escena aumentada en gran medida.
    • Equilibrar el nivel de detalle de la selección para tener en cuenta la segmentación de renderizadores diferidos basados en mosaicos
    • El cuello de botella es una carga de trabajo de procesamiento compleja, en lugar del recuento de triángulos.
      • La canalización de GPU está diseñada con diferentes situaciones en mente.
      • Opciones para cambiar el nivel de detalle de la selección.
  • Los conjuntos de descriptores muy grandes permiten la renderización completa sin vinculaciones en hardware compatible, lo que, a su vez, reduce de forma significativa el costo de creación de llamadas de dibujo de CPU con los beneficios térmicos, de rendimiento y de energía asociados.
  • El configurador de HW permite realizar ajustes en la configuración de fidelidad según modelos de dispositivos específicos para brindar la mejor experiencia del usuario.
    • Los usuarios configuran el modo: Mejor rendimiento, Mejor calidad o ahorro de batería.
  • El diseño del conjunto de sombreadores específico del dispositivo proporciona diferentes conjuntos de sombreadores para distintos ajustes predeterminados de la GPU (configuración de calidad y fidelidad). El configurador de HW ayuda al juego a elegir el mejor conjunto de sombreadores para el dispositivo.
    • Ayuda a disminuir la explosión combinatoria de sombreadores altamente configurables con los requisitos de creación de objetos de canalización.
    • Se incluyen conjuntos de sombreadores de resguardo no vinculados para orientar a teléfonos más antiguos y controladores que no admiten tantos recursos de sombreadores.
  • Uso inteligente de constantes de especialización para abordar las diferencias entre los controladores.
    • La mayoría de los errores del compilador de sombreadores en los controladores se solucionan con el uso de constantes de especialización.
    • Equilibra con la cantidad de conjuntos de sombreadores específicos del dispositivo.
Figura 4: Canalización completa de GPU con una amplia selección basada en procesamiento que permite escenas complejas.

Generación de perfiles y depuración

En los inicios del desarrollo, Activision encontró muchas brechas en la estabilidad y la funcionalidad con las herramientas de generación de perfiles y depuración de Vulkan. Desde entonces, se implementaron mejoras constantes en los generadores de perfiles específicos del proveedor y en las herramientas independientes del proveedor, como RenderDoc. Ahora los desarrolladores pueden acotar con más confianza los problemas de renderización y las oportunidades de optimización.

Alta fidelidad con Vulkan

Call of Duty: Warzone Mobile se ejecuta en una amplia variedad de dispositivos Android compatibles con Vulkan mediante tecnología de renderización compartida con los títulos de consola y PC. Vulkan redujo la sobrecarga y la fricción de desarrollo, y permitió la entrega de contenido y juegos auténticos y de alta fidelidad de Call of Duty a los jugadores de Android.