Compartilhar via


Diretrizes de desempenho para malha

Desempenho

Este artigo é uma introdução à compreensão da importância do desempenho ao criar conteúdo no Mesh. A taxa de quadros é a unidade mais fácil de racionalizar o desempenho. Normalmente, a taxa de quadros é medida em "quadros por segundo" (fps) ou quantas vezes seu aplicativo pode renderizar uma imagem por segundo. A experiência de um usuário pode ser bastante degradada se o conteúdo não for executado em uma taxa de quadros ideal. Para ajudá-lo a rastrear e obter uma taxa de quadros de qualidade, o Mesh fornece uma variedade de ferramentas e recomendações.

A tabela abaixo lista a taxa de quadros de destino por plataforma compatível com o Mesh.

Computador Andróide (Quest)
Taxa de atualização do monitor (mínimo de 30 fps) 72 fps

Cenas simples vs complexas

Como em todo desenvolvimento 3D, no Mesh há uma troca entre fidelidade visual e desempenho. Dependendo da máquina que executa o Mesh, o usuário pode experimentar um desempenho reduzido, especialmente se sua cena for complexa.

Pense no desempenho como um orçamento financeiro. Se você tem $ 100 dólares para gastar, não pode gastar $ 60 renderizando um ambiente complexo, $ 40 simulando física avançada e $ 20 para scripts visuais - você acabaria gastando acima do seu orçamento. Como desenvolvedor, você precisa fazer concessões entre fidelidade visual, complexidade de interação, número de usuários e outros sistemas. A equipe do Mesh gerou uma lista de limites de desempenho não como regra, mas como um guia para o desenvolvimento.

Metodologia de criação de perfil

A criação de ambientes no Mesh geralmente envolve três etapas.

  1. Criar conteúdo no Unity
  2. Carregar no Microsoft Mesh
  3. Executar seu conteúdo no aplicativo Mesh

Durante a primeira etapa, recomendamos que você use uma mistura do Content Performance Analyzer (CPA) e do Performance Profiler encontrados no pacote do kit de ferramentas Mesh, que é necessário para qualquer projeto do Unity que esteja sendo usado para gerar um ambiente Mesh. Durante a etapa dois, a ferramenta CPA é executada automaticamente. Por fim, durante a etapa três final, a criação de perfil deve ocorrer por meio do Criador de perfil de desempenho integrado do Mesh.

Ferramentas para analisar o desempenho

Analisador de desempenho de conteúdo (CPA)

Recomendamos que você use o Content Performance Analyzer (CPA) para maximizar o desempenho da sua experiência com o Mesh. A ferramenta CPA pode analisar estaticamente seu conteúdo no momento da criação. Você pode usar o CPA para auditar contagens de triângulos, lotes, utilização de memória de textura e muito mais. Isso permite que você detecte problemas e oportunidades de otimização de conteúdo antes que o conteúdo seja carregado no Mesh.

Para executar a ferramenta CPA, selecione Mesh Toolkit>Content Performance Analyzer nos itens de menu.

Acessando o Content Performance Analyzer por meio do menu do Unity

Problemas e sugestões são relatados por meio de uma janela do editor no Unity.

Uma captura de tela da janela do Content Performance Analyzer

Importante

Uma parte dos analisadores de CPA será executada automaticamente ao fazer upload de conteúdo para o Mesh. Como nem todos os testes podem ser executados automaticamente, é bom executar o CPA manualmente como parte do processo de desenvolvimento.

Performance Profiler

O Performance Profiler fornece uma janela simples para visualizar a taxa de quadros do seu projeto de malha, a complexidade da cena e o uso de memória em todas as plataformas. O Performance Profiler pode ser acessado no aplicativo Mesh e no kit de ferramentas Mesh.

Uma captura de tela do Criador de Perfil de Desempenho isoladamente

Para exibir o Criador de Perfil de Desempenho no aplicativo Mesh, abra o painel de configurações e selecione Para desenvolvedores>: Criador de Perfil de Desempenho. O Criador de Perfil de Desempenho aparecerá na parte superior central da janela.

Uma captura de tela do Performance Profiler no Mesh

Ao usar o Performance Profiler, procure quadros perdidos, que aparecem como caixas vermelhas, marcadas com um 'x'. Os quadros perdidos indicam que seu conteúdo não está atingindo a taxa de quadros desejada do Mesh e pode precisar de trabalho de otimização. A complexidade da cena e o uso de memória são exibidos sob os indicadores de quadro perdido. Esses números podem indicar por que seu conteúdo não está atendendo à taxa de quadros desejada do Mesh.

Um diagrama das métricas do Criador de Perfil de Desempenho

O texto no Performance Profiler ficará vermelho quando uma métrica não atender ao limite de desempenho recomendado da malha. Mais detalhes sobre os limites de desempenho estão listados em uma seção de procedimentos.

Importante

Os lotes não podem ser exibidos no aplicativo Mesh. Eles estão disponíveis apenas no editor do Unity.

Você também deve ficar de olho na barra de memória inferior para garantir que o uso da memória não esteja mudando rapidamente ou se aproximando do limite de memória do aplicativo.

Para exibir o Performance Profiler no editor do Unity, certifique-se de ter o componente Configuração do emulador de malha em sua cena. Certifique-se de que a configuração Contagem inicial de telas seja zero. Se for um ou superior, você não poderá ativar o Criador de Perfil de Desempenho durante o jogo.

Uma captura de tela da caixa de diálogo Configuração do emulador de malha

Clique no botão Reproduzir do Unity para entrar no modo de reprodução, ative o Performance Profiler por meio da tecla 'v' . O Criador de Perfil de Desempenho aparecerá na parte superior central da janela do jogo.

Uma captura de tela do Criador de Perfil de Desempenho no editor do Unity

Importante

Ao visualizar o Performance Profiler no editor do Unity, você pode obter mais informações, como contagens de lotes e o tempo de milissegundos necessário para a execução de determinados subsistemas. Observe que essas métricas são uma aproximação relativa do desempenho e a criação de perfil final deve ocorrer no aplicativo Mesh.

Se você estiver curioso para saber o que os tempos de milissegundos na parte inferior do Criador de Perfil de Desempenho estão medindo, poderá encontrar essas informações na seção de limites de desempenho.

Outras ferramentas

Tanto o CPA quanto o Performance Profiler são personalizados para o Mesh, mas também há um punhado de ótimas ferramentas para criar perfis de conteúdo no Unity:

Limites de desempenho

A otimização para o desempenho pode ser um ato de equilíbrio, dependendo do cenário para o qual você está desenvolvendo e da experiência que deseja alcançar. A renderização de uma cena em Mesh é uma consequência direta de como o conteúdo do ambiente é criado. Abaixo estão sugestões de renderização para nossas plataformas atuais.

Limites de renderização do PC

Policontagem Lotes de estoque Pós-processamento
<~500k Triângulos ~200 lotes Desabilitadas
Texturas Mapas de luz Resolução Skybox
< ~160 MB < ~ 80 MB 2048x4096

Limites de renderização do Android (Quest)

Policontagem Lotes de estoque Pós-processamento
<~ 80k Triângulos ~50 lotes Desabilitadas
Texturas Mapas de luz Resolução Skybox
< ~16 MB < ~20 MB 1024x2048

Você pode observar que as restrições de sombreador não são especificadas nas tabelas acima. Como o Mesh usa o URP (Pipeline de Renderização Universal) do Unity, sugerimos que você use sombreadores URP prontos para uso mais baratos (como Universal Render Pipeline/Baked Lit ou Universal Render Pipeline/Simple Lit). Também entendemos o valor dos sombreadores personalizados. Em geral, tentamos manter nossos sombreadores personalizados para a maior parte do ambiente dentro dos limites abaixo:

Matemática de vértices Fragmento matemático Textura
< 30 operações < 120 operações < 2 pesquisas

Importante

A contagem de operações de sombreador está em uma métrica imperfeita para calcular o desempenho do sombreador, um desenvolvedor de sombreador também deve criar o perfil de seu sombreador em execução no Mesh para verificar se ele é executado de forma eficiente.

Se você estiver curioso para saber como o pipeline de renderização do URP está configurado para o aplicativo Mesh, poderá inspecionar os renderizadores específicos da plataforma no diretório \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP do seu projeto.

Limites de script

O Mesh permite que você crie conteúdo interativo por meio de scripts visuais, scripts de nuvem, Mesh Physics e/ou WebSlate. Ao exibir o Performance Profiler no editor do Unity, o milissegundo (ms) que leva para determinados subsistemas serem executados é exibido na parte inferior do profiler. Quando o texto muda de verde para vermelho, isso indica que um subsistema pode estar acima do orçamento. A tabela abaixo fornece mais informações sobre esses orçamentos.

Nome do subsistema Orçamento máximo de quadros Descrição
Comportamento N/D Tempo de milissegundos necessário para atualizar todos os scripts MonoBehaviour locais (C# e Visual)
Renderizar 25% Tempo de milissegundo para a renderização da CPU da cena
Ardósia WebSlate N/D Tempo de milissegundos para atualizar e renderizar qualquer WebSlates na cena
Sim Físico 15% Tempo de milissegundos para percorrer a simulação do PhysX
Sincronização física 15% Tempo de milissegundos para sincronizar todos os corpos físicos
Efeito físico 10% Tempo de milissegundos para atualizar comportamentos físicos personalizados
Usuário VS 15% Tempo de milissegundo gasto em gráficos do Visual Script colocados na cena
VS Env 10% Milissegundos de tempo gasto atualizando a infraestrutura do Visual Script
VS Net 10% Milissegundos de tempo gasto sincronizando o estado de rede do Visual Script

Os valores de "Porcentagem máxima de quadros" listados acima são recomendações baseadas em conteúdo genérico. Como desenvolvedor, cabe a você equilibrar esses sistemas para garantir que seu quadro possa ser atualizado no tempo alocado.

Recursos de desempenho e otimização

Fundamentos de desempenho gráfico https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html

Pipeline de renderização universal (URP) https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/manual/index.html

Dosador SRP https://docs.unity3d.com/Manual/SRPBatcher.html

Renderização instanciada de passagem única e sombreadores personalizados https://docs.unity3d.com/Manual/SinglePassInstancing.html