O Samsung Galaxy XR chegou, com tecnologia Android XR! Esta postagem faz parte da Semana de Destaques do Android XR, em que oferecemos recursos (postagens no 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 incrível para os desenvolvedores, e queremos ajudar você a ter o melhor desempenho possível com seu app de XR.
O desempenho ruim em jogos e apps em dispositivos que não são de RV pode ser frustrante para o usuário. No entanto, no mundo da RV, o desempenho não é apenas opcional, mas fundamental para o sucesso do app. Se você não atingir a meta de frame rate na RV, isso pode causar problemas muito mais graves, como enjoo.
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 desempenho, quando usá-los e como eles funcionam juntos para ajudar você a atingir as metas de taxa de frames.
Nosso objetivo é:
- Mínimo : 72 fps (parte das nossas diretrizes de qualidade de reprodução)
- Opcional : 90 fps com um orçamento de 11 ms por frame
Para mais informações sobre por que é importante manter uma taxa de frames tão alta, confira nossas diretrizes de performance.
Recursos de desempenho específicos para XR
Vamos começar abordando dois recursos de desempenho específicos de 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 em detalhes a área em que você está olhando, reduzindo a qualidade mostrada na sua visão periférica. Ele imita essencialmente 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 da imagem percebida pelo usuário. O bom da renderização foveada é que os usuários não percebem a qualidade reduzida na visão periférica, mas a GPU certamente percebe o desempenho melhorado.
Imagine que você está criando uma experiência de museu com artefatos 3D complexos. Sem a renderização foveada, seria difícil manter 90 fps ao tentar renderizar tudo no "campo de visão". Com a renderização foveada, é possível manter os detalhes de alta qualidade onde o usuário está olhando, mas o ambiente em 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 combinado com a renderização foveada, o subamostragem do Vulkan oferece mais 0,5 ms de desempenho. Ele também ajuda a suavizar bordas irregulares na sua visão periférica, deixando a imagem geral mais nítida.
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 da cabine usa menos recursos. Esses 0,5 ms extras não parecem muito, mas fazem a diferença entre ter espaço para um elemento interativo extra ou descartar 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 o esforço desnecessário 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 de GPU
O Painel residente da GPU usa automaticamente a criação de instâncias de GPU para reduzir as chamadas de desenho e liberar tempo de processamento da CPU. Assim, em vez de a CPU informar à 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 objetos espalhados por um ambiente.
Imagine uma cena de floresta com 200 árvores usando a mesma malha de base. Sem o GPU Resident Drawer, você tem 200 chamadas de desenho consumindo a GPU e, portanto, liberando a CPU. Quando você ativa esse recurso, a GPU cria instâncias inteligentes dessas árvores, o que deve reduzir o número de chamadas de desenho para apenas 5 a 10. Essa é uma economia enorme de GPU que você pode investir em lógica de jogabilidade ou cálculos de física.
Eliminação por oclusão de GPU
A eliminação por oclusão da GPU usa a GPU em vez da CPU para identificar e ignorar a renderização de objetos ocultos. Ele detecta automaticamente o que está ocluído (oculto) atrás de outros objetos, para que você não desperdice a GPU em coisas que o usuário não pode ver.
Esse recurso é especialmente útil em espaços internos com vários cômodos, 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ários cômodos. 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 pula 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, do desempenho da CPU e da GPU dos seus apps. Ele fornece dados abrangentes das camadas de compositor e de tempo de execução para que você possa ver exatamente o que está acontecendo no seu aplicativo.
Estabeleça um valor de referência antes de fazer as mudanças, aplique uma otimização, meça o impacto e repita. Essa abordagem orientada por dados significa que você sabe que está melhorando a performance, em vez de apenas 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 caiu para 9 ms. Isso significa que você ganhou 4 ms de headroom para adicionar mais detalhes à cena, melhorar a qualidade visual em outro lugar ou simplesmente garantir uma performance mais fluida em uma variedade maior de conteúdo.
Sem elas, você está otimizando sem saber o que está fazendo. A API Metrics de Performance informa a verdade sobre o que realmente está ajudando seu caso de uso específico.
Frame Debugger
O Frame Debugger é a ferramenta integrada do Unity para entender exatamente como a cena está sendo renderizada, quadro a quadro. 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. Como verificar se o gaveteiro residente da GPU está fazendo o agrupamento em lotes corretamente? Procure entradas "Hybrid Batch Group". Essas confirmações visuais ajudam você a entender se as configurações de otimização estão realmente sendo aplicadas.
Percorra as primeiras 50 chamadas de desenho da sua cena. Se você vir objetos semelhantes sendo desenhados individualmente em vez de em lote, isso significa que a instanciação ou o loteamento não estão 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 inclui algumas outras otimizações. Confira um breve resumo:
- Configurações do URP:desative o HDR e o pós-processamento para XR móvel. Esses recursos têm um impacto visual mínimo em comparação com o custo de desempenho 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 em cenas com muitos materiais que usam a mesma variante de shader. Ao minimizar as mudanças de estado de renderização entre as chamadas de desenho, é possível reduzir significativamente o tempo da CPU gasto na renderização.
- Taxa de atualização da tela:ajusta dinamicamente entre 72 e 90 QPS com base na complexidade da cena. Diminua a taxa de frames durante sequências complexas para manter a estabilidade e aumente-a durante momentos mais simples para uma interação ultrassuave.
- Texturas de profundidade/opacas:desative-as, a menos que sejam especificamente necessárias para efeitos de shader. Elas causam operações de cópia de GPU desnecessárias que desperdiçam desempenho sem oferecer benefícios para a maioria dos aplicativos.
- Escala de renderização do URP : essa configuração permite renderizar com uma resolução reduzida para melhorar o desempenho ou aumentar a qualidade visual.
Para instruções detalhadas sobre essas e outras otimizações, confira nosso guia completo de desempenho do Unity para Android XR.
Conclusão
O desempenho do seu app de RV 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 mal ou desconfortáveis. As otimizações que abordamos são seu kit de ferramentas para atingir essas metas críticas de taxa de frames nos dispositivos XR mais recentes.
Este é seu roteiro:
- Comece com a renderização foveada e a subamostragem do Vulkan. Esses recursos específicos de XR oferecem uma economia imediata e perceptível de GPU.
- Adicione o painel residente da GPU e a eliminação por oclusão se você tiver cenas complexas com geometria repetida ou espaços internos.
- Monitore tudo com a API Metrics para garantir que as mudanças estejam realmente ajudando
- Confira outras otimizações do URP para aumentar ainda mais a performance
É fundamental medir continuamente e fazer iterações. Nem toda otimização beneficia todos os projetos igualmente. Por isso, use a API Metrics de Performance para ter uma ideia clara do que realmente ajuda seu caso de uso específico.
Próxima etapa: ampliar suas habilidades
Quer mais detalhes? Confira estes recursos:
- Guia de desempenho do Unity para Android XR: instruções completas de implementação detalhada para todos os recursos abordados aqui.
- Como começar a usar o Unity e o 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
Continuar lendo
-
Notícias sobre produtos
O fluxo de trabalho e as necessidades de IA de cada desenvolvedor são únicos. Por isso, é importante poder escolher como a IA ajuda no desenvolvimento. Em janeiro, lançamos a opção 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 em produção. Com essa versão, você tem ainda mais controle e personalização sobre seus fluxos de trabalho com tecnologia de IA, o que facilita a criação de apps Android de alta qualidade.
Matt Dyor • 3 min de leitura
-
Notícias sobre produtos
No Google, nosso objetivo é levar os modelos de IA mais avançados diretamente para os dispositivos Android no seu bolso. Hoje, temos o prazer de anunciar o lançamento do nosso mais recente modelo aberto de última geração: o Gemma 4.
Caren Chang, David Chou • 3 min de leitura
Fique por dentro
Receba os insights mais recentes sobre desenvolvimento Android na sua caixa de entrada semanalmente.