Call of Duty: Warzone Mobile usa Vulkan para melhorar os gráficos

Captura de tela do logotipo do título do jogo Call of Duty Warzone Mobile.

Call of Duty: Warzone Mobile é um jogo de ação em primeira pessoa da famosa franquia Call of Duty. A evolução do console e do jogo para PC extremamente popular aproveita as APIs para dispositivos móveis de baixo nível para oferecer uma ótima experiência aos jogadores.

Do ponto de vista técnico, o objetivo da implementação para dispositivos móveis é oferecer suporte a uma ampla variedade de dispositivos móveis Android, mantendo a implementação o mais próxima possível da versão do console e garantindo que o pipeline de gráficos e o conjunto de ferramentas permaneçam compatíveis com os títulos e conteúdo atuais do console e do PC.

O mecanismo Call of Duty implementa sincronização, alocação de memória e programação para gerenciar o envio de renderização usando um sistema chamado render de gráfico de tarefas, que determina o trabalho a ser executado na GPU e especifica os recursos necessários. Mais especificamente, o sistema é um gráfico de renderização com tarefas, recursos e dependências definidos em um script de alto nível processado no momento do carregamento para gerar a ordem ideal do trabalho a ser executado na GPU e fornecer os recursos usados no momento do envio do frame.

A Vulkan, uma API moderna de gráficos 3D em várias plataformas, foi selecionada como a interface de renderização de back-end para o renderizador do gráfico de tarefas no Android.

Figura 1. Plano de fundo detalhado com gráficos sobrepostos.

Benefícios da API do Vulkan

Para manter o estilo visual distinto do Call of Duty e oferecer melhor suporte à progressão compartilhada entre o Call of Duty: Warzone Mobile e os consoles e PCs, o jogo usa uma API de renderização semelhante à das implementações existentes de console e PC. No Android, o Vulkan permite que a Activision crie com base em ferramentas, pipelines e sombreadores já existentes e ofereça suporte ao conteúdo criado por artistas, sem precisar revisar toda a pilha de software.

Tentar fazer isso com um renderizador completamente diferente seria proibidamente caro, e tentar oferecer suporte a APIs gráficas de geração mais antiga para o pipeline Call of Duty teria um impacto muito grande no conjunto de recursos. A Activision determinou que o Vulkan era a escolha mais apropriada para trazer todos os recursos para o Android, minimizando o impacto na sobrecarga geral de desenvolvimento. A Vulkan recebeu suporte significativo entre fabricantes de dispositivos Android, tornando a API uma boa escolha para desenvolvimentos futuras.

Dispositivos sem hardware ou drivers compatíveis com Vulkan geralmente são mais antigos e não têm a potência suficiente para executar o jogo. Além de o Vulkan ser uma adequação técnica para o pipeline de mecanismo e de conteúdo, o suporte a Vulkan como requisito de hardware funciona como um filtro de desempenho.

Compatibilidade com a API da plataforma atual

O Vulkan é conceitualmente semelhante às APIs existentes usadas para Call of Duty: Warzone, com gerenciamento explícito de recursos, atribuição de alias de memória, pipeline de computação semelhante e acesso a recursos sem vinculação. As semelhanças permitiram que a Activision mantivesse o renderizador estruturalmente consistente com o console e o PC, exigindo apenas mudanças de back-end para interface com o Vulkan.

O suporte a sombreadores baseados em HLSL com conjuntos de recursos completos usando DXC para compilação SPIR-V permite que o Android se integre aos pipelines de build já existentes da Activision. O processo não isenta os desafios, mas ainda é mais benéfico do que uma regravação e a sobrecarga incorrida de manutenção de várias versões ou linguagens.

Figura 2. Ambiente de renderização complexo.
Figura 3. Renderização de conteúdo de alta fidelidade.

Recursos do Vulkan usados no Call of Duty: Warzone Mobile

  • A atribuição de alias de recursos e o controle explícito de barreira permitem que o gráfico de tarefas de renderização reduza significativamente os requisitos de memória para destinos de renderização em comparação com a alocação estática.
    • A flexibilidade permite o uso contínuo de práticas otimizadas para dispositivos móveis em tarefas de renderização.
    • As passagens de renderização, como recursos principais, permitem que o renderizador tome as melhores decisões para arquiteturas de GPU para dispositivos móveis comuns. A maioria dessas decisões também fornece ganhos em outras plataformas.
    • Por padrão, o gráfico de tarefas oferece suporte à resolução dinâmica de cenas, o que permite algum controle do desempenho e do consumo de energia.
  • O pipeline de GPU completo com seleção extensiva baseada em computação permite um aumento substancial da complexidade do cenário.
    • Equilíbrio da granularidade da seleção para contabilizar a segmentação de renderizadores adiados baseados em blocos.
    • O gargalo é uma carga de trabalho de computação complexa, diferente da contagem de triângulos.
      • O pipeline da GPU foi projetado com diferentes cenários em mente.
      • Opções para mudar a granularidade do agrupamento.
  • Os conjuntos de descritores muito grandes permitem a renderização completa sem vínculos em hardware compatível, o que reduz substancialmente o custo de criação de chamadas de desenho da CPU com os benefícios térmicos, de desempenho e potência associados.
  • O configurador de hardware permite ajustar as configurações de fidelidade com base em modelos de dispositivos específicos para a melhor experiência do usuário
    • Modo de configuração do usuário: melhor desempenho, melhor qualidade ou economia de bateria.
  • O design do conjunto de sombreadores específico do dispositivo oferece diferentes conjuntos de sombreadores para diferentes predefinições de GPU (configurações de qualidade e fidelidade). O configurador de HW ajuda o jogo a escolher o melhor conjunto de sombreadores para o dispositivo.
    • Ajuda a diminuir a explosão combinatória de sombreadores altamente configuráveis com os requisitos de criação de objetos de pipeline.
    • Inclui conjuntos substitutos de sombreadores não vinculados para segmentar smartphones e drivers mais antigos que não têm suporte a tantos recursos de sombreador.
  • Uso inteligente de constantes de especialização para lidar com diferenças do driver.
    • A maioria dos bugs do compilador de shader nos drivers é resolvida com o uso de constantes de especialização.
    • Equilibra o número de conjuntos de sombreadores específicos do dispositivo.
Figura 4. Pipeline de GPU completo com ampla seleção baseada em computação, permitindo cenários complexos.

Criação de perfil e depuração

No início do desenvolvimento, a Activision encontrou muitas lacunas na estabilidade e na funcionalidade das ferramentas de criação de perfil e depuração do Vulkan. Desde então, houve melhorias constantes para criadores de perfil específicos de fornecedor e ferramentas independentes de fornecedor, como o RenderDoc. Agora, os desenvolvedores podem limitar com mais confiança os problemas de renderização e as oportunidades de otimização.

Alta fidelidade com Vulkan

O Call of Duty: Warzone Mobile é executado em uma grande variedade de dispositivos Android com Vulkan usando a tecnologia de renderização compartilhada com os títulos de console e PC. O Vulkan reduziu o atrito e a sobrecarga de desenvolvimento e permitiu a entrega de conteúdo e jogabilidade autênticos e de alta fidelidade do Call of Duty para jogadores Android.