Partager via


Recommandations en matière de performances pour Mesh

Performances

Cet article présente l’importance des performances lors de la création de contenu dans Mesh. La fréquence d’images est l’unité la plus simple pour rationaliser les performances. Normalement, la fréquence d’images est mesurée en « images par seconde » (fps) ou le nombre de fois où votre application peut afficher une image par seconde. L’expérience d’un utilisateur peut être considérablement détériorée si votre contenu ne s’exécute pas à une fréquence d’images optimale. Pour vous aider à suivre et à obtenir une fréquence d’images de qualité, Mesh fournit un large éventail d’outils et de recommandations.

Le tableau ci-dessous répertorie la fréquence d’images cible par platform Mesh prend en charge.

PC Android (Quête)
Surveiller le taux d’actualisation (minimum 30fps) 72fps

Scènes simples et complexes

Comme avec tout le développement 3D, dans Mesh, il existe un compromis entre la fidélité visuelle et les performances. Selon la machine exécutant Mesh, votre utilisateur peut rencontrer des performances réduites, en particulier si votre scène est complexe.

Pensez à des performances comme un budget financier. Si vous avez 100 $ pour dépenser vous ne pouvez pas dépenser 60 $ pour rendre un environnement complexe, 40 $ simulant la physique avancée et 20 $ pour les scripts visuels , vous finirez par dépenser sur votre budget. En tant que développeur, vous devez faire des compromis entre la fidélité visuelle, la complexité de l’interaction, le nombre d’utilisateurs et d’autres systèmes. L’équipe Mesh a généré une liste de seuils de performances non pas comme règle, mais un guide de développement.

Méthodologie de profilage

La création d’environnements dans Mesh implique généralement trois étapes.

  1. Créer du contenu dans Unity
  2. Charger sur Microsoft Mesh
  3. Exécuter votre contenu dans l’application Mesh

Au cours de l’étape 1, nous vous recommandons d’utiliser un mélange de contenu Analyseur de performances (CPA) et de Profileur de performances trouvés dans le package de boîte à outils Mesh, qui est requis pour tout projet Unity utilisé pour générer un environnement Mesh. À l’étape 2, l’outil CPA s’exécute automatiquement. Enfin, au cours de l’étape 3 finale, le profilage doit se produire via le profileur de performances intégré de Mesh.

Outils d’analyse des performances

Content Analyseur de performances (CPA)

Nous vous recommandons d’utiliser l’Analyseur de performances de contenu (CPA) pour optimiser les performances de votre expérience Mesh. L’outil CPA peut analyser statiquement votre contenu au moment de la création. Vous pouvez utiliser le CPA pour auditer les nombres de triangles, les lots, l’utilisation de la mémoire de texture, etc. Cela vous permet d’intercepter les problèmes d’optimisation du contenu et les opportunités avant le chargement du contenu dans Mesh.

Pour exécuter l’outil CPA, sélectionnez Mesh Toolkit>Content Analyseur de performances dans les éléments de menu.

Accès au contenu Analyseur de performances via le menu Unity

Les problèmes et suggestions sont signalés via une fenêtre d’éditeur dans Unity.

Capture d’écran de la fenêtre Contenu Analyseur de performances

Important

Une partie des analyseurs CPA s’exécute automatiquement lors du chargement du contenu dans Mesh. Étant donné que tous les tests ne peuvent pas s’exécuter automatiquement, il est judicieux d’exécuter manuellement le CPA dans le cadre de votre processus de développement.

Profileur de performances

Le profileur de performances fournit une fenêtre simple pour afficher la fréquence d’images, la complexité des scènes et l’utilisation de la mémoire de votre projet Mesh sur toutes les plateformes. Le Profileur de performances est accessible dans l’application Mesh et dans le kit de ressources Mesh.

Capture d’écran du Profileur de performances en isolation

Pour afficher le profileur de performances dans l’application Mesh, ouvrez le panneau paramètres et sélectionnez Pour les développeurs>Performance Profiler. Le Profileur de performances s’affiche au centre supérieur de la fenêtre.

Capture d’écran du Profileur de performances dans Mesh

Lorsque vous utilisez le Profileur de performances, recherchez les images manquées, qui apparaissent sous forme de zones rouges, marquées par un « x ». Les images manquées indiquent que votre contenu n’atteint pas la fréquence d’images cible de Mesh et peut avoir besoin d’un travail d’optimisation. La complexité de la scène et l’utilisation de la mémoire s’affichent sous les indicateurs d’images manqués. Ces nombres peuvent indiquer pourquoi votre contenu ne répond pas à la fréquence d’images cible de Mesh.

Diagramme des métriques du Profileur de performances

Le texte du Profileur de performances se transforme en rouge lorsqu’une métrique ne respecte pas le seuil de performances recommandé de Mesh. Pour plus d’informations sur les seuils de performances, consultez une section de procédure.

Important

Les lots ne peuvent pas être affichés dans l’application Mesh. Ils sont disponibles uniquement dans l’éditeur Unity.

Vous devez également garder un œil sur la barre de mémoire inférieure pour vous assurer que l’utilisation de la mémoire ne change pas rapidement ou approche de la limite de mémoire de l’application.

Pour afficher le profileur de performances dans l’éditeur Unity, vérifiez que vous disposez du composant d’installation de l’émulateur Mesh dans votre scène. Vérifiez que le paramètre Nombre d’écrans initial est égal à zéro. S’il s’agit d’un ou d’une version ultérieure, vous ne pourrez pas activer le profileur de performances lors de la lecture.

Capture d’écran de la boîte de dialogue Installation de l’émulateur Mesh

Cliquez sur le bouton Lecture de Unity pour entrer en mode lecture, basculez le Profileur de performances sur la touche « v ». Le Profileur de performances s’affiche au centre supérieur de la fenêtre de jeu.

Capture d’écran de l’éditeur Performance Profiler dans Unity

Important

Lorsque vous affichez le Profileur de performances dans l’éditeur Unity, vous disposez d’informations supplémentaires, telles que le nombre de lots et le temps de milliseconde nécessaire à l’exécution de certains sous-systèmes. Notez que ces métriques sont une approximation relative des performances et du profilage final doivent se produire dans l’application Mesh.

Si vous êtes curieux que les millisecondes au bas du Profileur de performances mesurent, vous pouvez trouver ces informations dans la section seuils de performances.

Autres outils

Le CPA et le Profileur de performances sont personnalisés pour Mesh, mais il existe également quelques outils de profilage de contenu dans Unity :

Seuils de performances

L’optimisation des performances peut être un acte d’équilibrage en fonction du scénario pour lequel vous développez et de l’expérience à atteindre. Le rendu d’une scène dans Mesh est une conséquence directe de la création du contenu de l’environnement. Vous trouverez ci-dessous des suggestions de rendu pour nos plateformes actuelles.

Seuils de rendu du PC

Polycount Noms feuilles Post-traitement
<~500 000 triangles ~200 lots Désactivé
Textures Lightmaps Résolution skybox
< ~160 Mo < ~80 Mo 2048x4096

Seuils de rendu Android (Quest)

Polycount Noms feuilles Post-traitement
<~80 000 triangles ~50 lots Désactivé
Textures Lightmaps Résolution skybox
< ~16 Mo < ~20 Mo 1024x2048

Vous remarquerez peut-être que les restrictions de nuanceur ne sont pas spécifiées dans les tableaux ci-dessus. Étant donné que Mesh utilise le pipeline de rendu universel (URP) d’Unity, nous vous suggérons d’utiliser des nuanceurs URP prêtes à l’emploi moins chers (comme le pipeline de rendu universel/lit baked ou le pipeline de rendu universel/lit simple). Nous comprenons également la valeur des nuanceurs personnalisés. En général, nous essayons de conserver nos nuanceurs personnalisés pour la plupart de l’environnement au sein des seuils ci-dessous :

Mathématiques de vertex Calcul de fragments Texture
< 30 opérations < 120 opérations < 2 recherches

Important

Le comptage des opérations de nuanceur est en métrique incorrecte pour calculer les performances du nuanceur, un développeur de nuanceurs doit également profiler son nuanceur s’exécutant dans Mesh pour vérifier qu’il s’exécute correctement.

Si vous êtes curieux de savoir comment le pipeline de rendu d’URP est configuré pour l’application Mesh, vous pouvez inspecter les renderers spécifiques de la plateforme dans le répertoire \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP de votre projet.

Seuils de script

Mesh vous permet de créer du contenu interactif par le biais de scripts visuels, de scripts cloud, de maillage physique et/ou webSlate. Lorsque vous affichez le Profileur de performances dans l’éditeur Unity, les temps nécessaires à l’exécution de certains sous-systèmes sont nécessaires au bas du profileur. Lorsque le texte passe du vert au rouge qui indique qu’un sous-système peut être supérieur au budget. Le tableau ci-dessous fournit plus d’informations sur ces budgets.

Nom du sous-système Budget maximal d’images Description
Comportement S/O Temps de milliseconde nécessaire pour mettre à jour tous les scripts MonoBehaviour locaux (C# et Visual)
Rendu 25 % Temps de milliseconde pour le rendu du processeur de la scène
WebSlate S/O Temps de mise à jour et de rendu des WebSlates dans la scène
Phys Sim 15 % Temps de millisecondes pour effectuer la simulation PhysX
Phys Sync 15 % Temps de millisecondes pour synchroniser tous les corps physiques
Phys Effx 10 % Temps de millisecondes pour mettre à jour les comportements physiques sur mesure
Utilisateur VS 15 % Temps passé en millisecondes dans les graphiques Visual Script placés dans la scène
VS Env 10 % Millisecondes passées à mettre à jour l’infrastructure Visual Script
VS Net 10 % Temps de milliseconde passé à synchroniser l’état du réseau Visual Script

Les valeurs « Pourcentage maximal d’images » répertoriées ci-dessus sont des recommandations basées sur le contenu générique. En tant que développeur, il vous incombe d’équilibrer ces systèmes pour vous assurer que votre frame peut être mis à jour dans le temps alloué.

Ressources de performances et d’optimisation

Notions de base sur les performances graphiques https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html

Pipeline de rendu universel (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

Rendu à instance unique et nuanceurs personnalisés https://docs.unity3d.com/Manual/SinglePassInstancing.html