Diretrizes de desempenho para Mesh
Desempenho
Este artigo é uma introdução para entender a 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 muito degradada se seu conteúdo não for executado em uma taxa de quadros ideal. Para ajudá-lo a rastrear e alcançar 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 suportada pelo Mesh.
PC | Android (Missão) |
---|---|
Taxa de atualização do monitor (mínimo de 30fps) | 72 fps |
Cenas simples vs complexas
Como em todo o desenvolvimento 3D, no Mesh há uma compensação entre fidelidade visual e desempenho. Dependendo da máquina que executa o Mesh, o usuário pode ter um desempenho reduzido, especialmente se a cena for complexa.
Pense no desempenho como um orçamento financeiro. Se você tem US $ 100 dólares para gastar, você não pode gastar US $ 60 renderizando um ambiente complexo, US $ 40 simulando física avançada e US $ 20 para scripts visuais - você acabaria gastando acima do seu orçamento. Como desenvolvedor, você precisa fazer compensaçõ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 uma regra, mas como um guia para o desenvolvimento.
Metodologia de definição de perfis
A criação de ambientes no Mesh geralmente envolve três etapas.
- Autor de conteúdo em Unity
- Carregar para o Microsoft Mesh
- Execute 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 Unity que esteja sendo usado para gerar um ambiente Mesh. Durante a segunda etapa, a ferramenta CPA é executada automaticamente. Finalmente, durante a etapa três final, a criação de perfil deve ocorrer por meio do Performance Profiler 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 de 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ê detete 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.
Problemas e sugestões são relatados através de uma janela do editor no Unity.
Importante
Uma parte dos analisadores CPA será executada automaticamente ao carregar conteúdo para o Mesh. Como nem todos os testes podem ser executados automaticamente, é bom executar o CPA manualmente como parte do seu processo de desenvolvimento.
Criador de Perfil de Desempenho
O Performance Profiler fornece uma janela simples para visualizar a taxa de quadros, a complexidade da cena e o uso de memória do seu projeto Mesh em todas as plataformas. O Performance Profiler pode ser acessado no aplicativo Mesh e no kit de ferramentas Mesh.
Para exibir o Performance Profiler no aplicativo Mesh, abra o painel de configurações e selecione For developers>Performance Profiler. O Performance Profiler aparecerá no centro superior da janela.
Ao usar o Performance Profiler, procure quadros perdidos, que aparecem como caixas vermelhas, marcadas com um 'x'. Quadros perdidos indicam que seu conteúdo não está atingindo a taxa de quadros alvo do Mesh e pode precisar de trabalho de otimização. A complexidade da cena e o uso da memória são exibidos sob os indicadores de quadro perdidos. Esses números podem indicar por que seu conteúdo não está atingindo a taxa de quadros desejada do Mesh.
O texto no Performance Profiler ficará vermelho quando uma métrica não atingir o limite de desempenho recomendado do Mesh. 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 só estão disponíveis no editor Unity.
Você também deve ficar de olho na barra de memória inferior para garantir que o uso de memória não esteja mudando rapidamente ou se aproximando do limite de memória do aplicativo.
Para exibir o Performance Profiler no editor Unity, certifique-se de ter o componente Configuração do emulador de malha em sua cena. Verifique se a configuração Contagem de tela inicial é zero. Se for um ou superior, você não poderá ativar o Performance Profiler ao jogar.
Clique no botão Play do Unity para entrar no modo de reprodução, ative o Performance Profiler através da tecla 'v'. O Performance Profiler aparecerá no centro superior da janela do jogo.
Importante
Ao visualizar o Performance Profiler no editor Unity, você obtém mais informações, como contagens de lotes e tempo de milissegundos que leva para determinados subsistemas executarem. Observe que essas métricas são uma aproximação relativa do desempenho e a criação de perfil final deve acontecer dentro do aplicativo Mesh.
Se você estiver curioso sobre o que as vezes de milissegundos na parte inferior do Performance Profiler estão medindo, você pode 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:
- Criador de perfil do Unity
- Depurador de quadros do Unity
- RenderDoc (IMPORTANTE: o RenderDoc só pode executar capturas do editor Unity. As compilações de aplicativos Mesh não funcionarão).
Limiares 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 no 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 | Pós-processamento |
---|---|---|
<~500k Triângulos | ~200 lotes | Desativado |
Texturas | Mapas luminosos | Resolução Skybox |
< ~160 MB | < ~80 MB | 2048x4096 |
Limites de renderização do Android (Quest)
Policontagem | Lotes | Pós-processamento |
---|---|---|
<~80k Triângulos | ~50 lotes | Desativado |
Texturas | Mapas luminosos | Resolução Skybox |
< ~16 MB | < ~20 MB | 1024x2048 |
Você pode notar que as restrições de sombreador não são especificadas nas tabelas acima. Como o Mesh usa o Universal Render Pipeline (URP) do Unity, sugerimos que você use sombreadores URP mais baratos e prontos para uso (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 maioria do ambiente dentro dos limites abaixo:
Matemática de vértice | Fragmentar matemática | 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 com desempenho.
Se você estiver curioso sobre como o pipeline de renderização do URP está configurado para o aplicativo Mesh, você pode 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 criar conteúdo interativo por meio de scripts visuais, scripts na nuvem, Mesh Physics e/ou WebSlate. Ao visualizar o Performance Profiler no editor Unity, os tempos de milissegundos (ms) necessários para a execução de determinados subsistemas são exibidos na parte inferior do criador de perfil. 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 | Description |
---|---|---|
Comportamento | N/A | Tempo de milissegundos necessário para atualizar todos os scripts MonoBehaviour locais (C# e Visual) |
Composição | 25% | Tempo de milissegundos para a renderização da CPU da cena |
WebSlate | N/A | Tempo de milissegundos para atualizar e renderizar qualquer WebSlates na cena |
Phys Sim | 15% | Milissegundos de tempo para fazer a simulação do PhysX |
Sincronização Phys | 15% | Tempo de milissegundos para sincronizar todos os corpos físicos |
Phys Effx | 10% | Tempo de milissegundos para atualizar comportamentos físicos sob medida |
VS Utilizador | 15% | Milissegundo de tempo gasto em gráficos Visual Script colocados na cena |
VS Env | 10% | Milissegundos de tempo gasto na atualização da infraestrutura do Visual Script |
VS Net | 10% | Tempo gasto em milissegundos sincronizando o estado da rede do Visual Script |
Os valores de "Porcentagem máxima de quadro" 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 atribuído.
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
Batcher SRP https://docs.unity3d.com/Manual/SRPBatcher.html
Renderização com instância em uma única etapa e sombreadores personalizados https://docs.unity3d.com/Manual/SinglePassInstancing.html