O Samsung Galaxy XR chegou, com tecnologia do Android XR! Este post faz parte da Semana de Destaques do Android XR, em que oferecemos recursos (posts de blog, vídeos, exemplos de código e muito mais) para ajudar você a aprender, criar e preparar seus apps para o Android XR.
Esta semana, a Samsung lançou o Galaxy XR, criado em colaboração com o Google e a Qualcomm. Este é um momento emocionante para os desenvolvedores, e queremos ajudar você a ter a melhor performance possível no seu app de XR.
Embora a baixa performance em jogos e apps em dispositivos que não são de XR possa ser frustrante para o usuário, no mundo da XR, a performance não é apenas opcional, mas fundamental para o sucesso do seu app. Se você perder a meta de frame rate na XR, isso poderá causar problemas muito mais sérios, como enjoo de movimento.
Neste guia, vamos mostrar as otimizações de desempenho essenciais que você precisa entender para o desenvolvimento do Android XR. Você vai aprender quais recursos oferecem os maiores ganhos de performance, quando usá-los e como eles funcionam juntos para ajudar você a atingir suas metas de frame rate.
Nosso objetivo é:
- Mínimo : 72 fps (parte das nossas diretrizes de qualidade de jogo)
- Opcional: 90 fps com um orçamento de 11 ms por frame
Para mais informações sobre por que é importante manter um frame rate tão alto, confira nossas diretrizes de performance.
Recursos de performance específicos para XR
Vamos começar abordando dois recursos de performance específicos para XR: renderização foveada e subamostragem do Vulkan.
Renderização foveada
A renderização foveada é uma otimização que tem dois modos. O primeiro é um modo estático que renderiza o centro da tela em uma resolução mais alta e diminui progressivamente a resolução quanto mais longe você olha.
O segundo é o modo de rastreamento ocular , que renderiza especificamente a área em que você está olhando com detalhes completos, enquanto reduz a qualidade exibida nos periféricos. Ele basicamente imita como a visão humana funciona, em que só vemos detalhes na área específica em que estamos focando.
A renderização foveada reduz significativamente a carga de trabalho da GPU sem sacrificar a qualidade de imagem percebida pelo usuário. A beleza da renderização foveada é que os usuários não vão notar a qualidade reduzida na visão periférica, mas a GPU certamente vai notar a performance aprimorada.
Imagine que você está criando uma experiência de museu com artefatos 3D complexos. Sem a renderização foveada, você teria dificuldade em manter 90 fps ao tentar renderizar tudo no "campo de visão". Com a renderização foveada, você pode manter esses detalhes de alta qualidade onde o usuário está olhando, mas o ambiente de segundo plano é renderizado com uma qualidade menor. Os usuários não vão notar a diferença, mas você terá espaço para adicionar mais detalhes à cena.
Subamostragem do Vulkan
A subamostragem do Vulkan é a melhor amiga da renderização foveada. Enquanto a renderização foveada decide o que renderizar em diferentes níveis de qualidade, a subamostragem do Vulkan processa como renderizar com eficiência os diferentes níveis de qualidade usando mapas de densidade de fragmentos.
Quando combinada com a renderização foveada, a subamostragem do Vulkan oferece mais 0,5 ms de performance. Ela também ajuda a suavizar bordas serrilhadas na visão periférica, tornando a imagem geral mais limpa.
Por exemplo, em um jogo de simulador de voo em que os usuários se concentram em instrumentos e controles, a combinação da renderização foveada com a subamostragem do Vulkan significa que os controles detalhados são renderizados com nitidez, mas a estrutura periférica do cockpit usa menos recursos. Esses 0,5 ms extras não parecem muito, mas é a diferença entre ter espaço para um elemento interativo extra ou perder frames durante momentos intensos.
Recursos de GPU para cenas complexas
Além da renderização foveada e da subamostragem do Vulkan, há alguns recursos de GPU que reduzem a tensão desnecessária por meio de instâncias e eliminação inteligentes. Eles são particularmente eficazes para cenas complexas com geometria repetida ou oclusão significativa.
Gaveta residente da GPU
A gaveta residente da GPU usa automaticamente a instância da GPU para reduzir as chamadas de desenho e liberar o tempo de processamento da CPU. Assim, em vez de a CPU informar a GPU sobre cada objeto individualmente, a GPU agrupa objetos semelhantes.
Esse recurso é mais eficaz para cenas grandes com malhas repetidas, como árvores em uma floresta, móveis em um prédio de escritórios ou adereços espalhados por um ambiente.
Imagine uma cena de floresta com 200 árvores usando a mesma malha de base. Sem a gaveta residente da GPU, você tem 200 chamadas de desenho consumindo a GPU, liberando a CPU. Quando você ativa esse recurso, a GPU instancia essas árvores de maneira inteligente, o que deve reduzir para apenas 5 a 10 chamadas de desenho. Essa é uma economia enorme de GPU que você pode investir na lógica de jogo ou nos cálculos de física.
Eliminação de oclusão da GPU
A eliminação de oclusão da GPU usa a GPU em vez da CPU para identificar e ignorar a renderização de objetos ocultos. Ela detecta automaticamente o que está ocluído (oculto) atrás de outros objetos, para que você não gaste a GPU em coisas que o usuário não pode ver.
Esse recurso é particularmente útil em espaços internos com várias salas, ambientes densos ou cenas arquitetônicas em que paredes, pisos e objetos bloqueiam naturalmente a visão.
Por exemplo, digamos que você esteja criando uma experiência de casa com várias salas. Quando o usuário está na sala de estar, por que desperdiçar ciclos de GPU renderizando a cozinha totalmente detalhada que está completamente escondida atrás de uma parede? A eliminação de oclusão da GPU ignora automaticamente a renderização desses objetos ocultos, oferecendo mais montante de desempenho para o que está realmente visível.
Monitorar seu desempenho
Não basta apenas usar esses recursos. Você também precisa medir suas otimizações para quantificar o impacto delas e verificar se as mudanças estão funcionando.
API de métricas de performance
A API Performance Metrics oferece monitoramento em tempo real do uso da memória, da performance da CPU e da GPU dos seus apps. Ela fornece dados abrangentes das camadas do compositor e do ambiente de execução para que você possa ver exatamente o que está acontecendo no seu aplicativo.
Estabeleça uma linha de base antes de fazer as mudanças, aplique uma otimização, meça o impacto e faça iterações. Essa abordagem orientada a dados significa que você sabe que está melhorando a performance, em vez de adivinhar.
Antes de ativar a renderização foveada, o tempo para a renderização do frame da GPU pode ser de 13 ms, o que está acima do orçamento de 11 ms. Ative a renderização foveada, meça novamente e, com sorte, você verá que ela cai para 9 ms. São 4 ms de espaço livre que você ganhou para adicionar mais detalhes à cena, melhorar a qualidade visual em outro lugar ou simplesmente garantir uma performance mais suave em uma variedade maior de conteúdo.
Sem essas métricas, você está otimizando às cegas. A API Metrics informa a verdade sobre o que realmente ajuda seu caso de uso específico.
Depurador de frames
O Depurador de Frames é a ferramenta integrada do Unity para entender exatamente como a cena está sendo renderizada, frame a frame. Ele mostra a sequência de chamadas de desenho e permite que você as percorra para verificar se as otimizações estão funcionando corretamente.
Quer confirmar se o SRP Batcher está funcionando? Procure entradas "RenderLoopNewBatcher" no depurador de frames. Quer verificar se a gaveta residente da GPU está agrupando corretamente? Procure entradas "Hybrid Batch Group". Essas confirmações visuais ajudam você a entender se as configurações de otimização estão realmente entrando em vigor.
Percorra as primeiras 50 chamadas de desenho da cena. Se você vir objetos semelhantes sendo desenhados individualmente em vez de agrupados, isso indica que a instância ou o agrupamento não está funcionando corretamente. O depurador de frames torna esses problemas imediatamente visíveis para que você possa resolvê-los.
Outras otimizações
Além das otimizações que abordamos acima, nosso guia completo de performance também aborda algumas outras otimizações. Confira um resumo rápido:
- Configurações do URP:desative o HDR e o pós-processamento para XR em dispositivos móveis. Esses recursos oferecem um impacto visual mínimo em comparação com o custo de performance no hardware móvel. Assim, você terá ganhos de performance mensuráveis com diferenças visuais quase imperceptíveis.
- SRP Batcher:reduz a sobrecarga da CPU para cenas com muitos materiais usando a mesma variante de sombreador. Ao minimizar as mudanças de estado de renderização entre as chamadas de desenho, você pode reduzir significativamente o tempo da CPU gasto na renderização.
- Taxa de atualização da tela:ajuste dinamicamente entre 72 fps e 90 fps com base na complexidade da cena. Diminua o frame rate durante sequências complexas para manter a estabilidade e aumente-o durante momentos mais simples para uma interação ultra-suave.
- Texturas de profundidade/opacas:desative-as, a menos que sejam especificamente necessárias para efeitos de sombreador. Elas causam operações de cópia desnecessárias da GPU que desperdiçam a performance sem oferecer benefícios para a maioria dos aplicativos.
- Escala de renderização do URP : essa configuração permite renderizar em uma resolução reduzida para benefícios de performance ou aumentar a renderização para melhorar a qualidade visual.
Para instruções detalhadas sobre essas e outras otimizações, confira nosso guia completo de performance do Unity para Android XR.
Conclusão
A performance do seu app de XR não é apenas uma caixa de seleção técnica. É a diferença entre uma experiência confortável e envolvente e uma que faz os usuários se sentirem doentes ou desconfortáveis. As otimizações que abordamos são seu kit de ferramentas para atingir essas metas críticas de frame rate nos dispositivos XR mais recentes.
Este é seu roteiro:
- Comece com a renderização foveada e a subamostragem do Vulkan. Esses recursos específicos para XR oferecem economia imediata e notável de GPU.
- Adicione a gaveta residente da GPU e a eliminação de oclusão se você tiver cenas complexas com geometria repetida ou espaços internos.
- Monitore tudo com a API Metrics de Performance para garantir que as mudanças estejam realmente ajudando.
- Confira outras otimizações do URP para mais espaço livre de performance.
É fundamental medir continuamente e fazer iterações. Nem todas as otimizações beneficiam todos os projetos igualmente. Portanto, use a API Metrics de Performance para ter uma ideia clara do que realmente ajuda seu caso de uso específico.
Próximas etapas: ampliar suas habilidades
Quer mais detalhes? Confira estes recursos:
- Guia de performance do Unity para Android XR : instruções completas de implementação detalhadas para todos os recursos abordados aqui.
- Introdução ao Unity e ao Android XR : configure seu ambiente de desenvolvimento e comece a criar.
- Documentação para desenvolvedores do Android XR : guias abrangentes para todos os recursos do Android XR features
Continuar lendo
-
Notícias sobre produtos
O fluxo de trabalho e as necessidades de IA de cada desenvolvedor são únicos, e é importante poder escolher como a IA ajuda no desenvolvimento. Em janeiro, apresentamos a capacidade de escolher qualquer modelo de IA local ou remoto para ativar a funcionalidade de IA no Android Studio.
Matthew Warner • Leitura de 2 minutos
-
Notícias sobre produtos
O Android Studio Panda 3 agora está estável e pronto para uso na produção. Essa versão oferece ainda mais controle e personalização sobre seus fluxos de trabalho com tecnologia de IA, tornando mais fácil do que nunca criar apps Android de alta qualidade.
Matt Dyor • Leitura de 3 minutos
-
Notícias sobre produtos
No Google, temos o compromisso de levar os modelos de IA mais eficientes diretamente aos dispositivos Android no seu bolso. Hoje, temos o prazer de anunciar o lançamento do nosso modelo aberto de última geração mais recente: o Gemma 4.
Caren Chang, David Chou • Leitura de 3 minutos
Fique por dentro
Receba os insights mais recentes sobre o desenvolvimento do Android na sua caixa de entrada semanalmente.