Développement
Développement
Sélectionnez votre plateforme

Règles pour l’optimisation des performances VR

LINK PC-VR DOCUMENTATION
Ce sujet concerne le développement avec le SDK PC. Pour en savoir plus sur l’optimisation des performances pour les applications Meta Quest, consultez l’un des sujets suivants en fonction de votre plateforme de développement :
Cette section couvre les principes généraux à suivre pour optimiser efficacement vos applications VR.

Présentation

Optimiser les applications VR peut s’avérer difficile. Il est facile de faire fausse route et d’optimiser un code qui n’améliore pas les performances globales de votre application. Il est important d’identifier les goulots d’étranglement et de se concentrer sur leur emplacement réel, et d’optimiser ces sections en premier lieu.
Les problèmes de performance VR sont généralement de deux types : les problèmes liés au CPU et ceux liés au GPU. Le processeur est généralement impliqué dans la logique de simulation, la gestion de l’état et la génération de la scène à rendre. Le GPU est généralement impliqué dans l’échantillonnage des textures et l’ombrage des maillages de vos scènes. Il est important de déterminer si un problème de performance est dû à la charge du CPU ou à celle du GPU, et d’optimiser votre code en conséquence.
En général, vous suivez la loi d’Amdahl pour la programmation parallèle : vous optimisez les sections qui utilisent le plus le système. Concentrez-vous sur les chemins de code les plus coûteux. Ce document fournit des conseils sur la façon de les identifier. Ne vous concentrez pas sur les problèmes pour lesquels, même si vous réduisez les coûts à un niveau proche de zéro, vous n’obtiendrez que des réductions mineures des coûts de performance globaux.
Il n’est pas rare qu’une zone de votre application utilise un pourcentage important du temps de traitement du système, alors que les autres zones ont une consommation beaucoup plus faible. Vous devez d’abord chercher à optimiser la zone la plus problématique.
Lorsque vous optimisez votre application, efforcez-vous de changer une chose à la fois. Gardez à l’esprit qu’il peut y avoir des interactions importantes entre les modifications que vous apportez, en particulier dans le cas d’applications VR complexes. Si vous recherchez une baisse de performance dans votre application, essayez de localiser dans l’historique du logiciel de contrôle de version la modification unique à l’origine du problème de performance que vous rencontrez. Ensuite, cherchez la cause profonde du problème de performance. Ne partez pas du principe que plusieurs modifications sont à l’origine d’un même problème de performance.
Pour de nombreuses personnes, il est facile de devenir un peu pointilleux ou obsessionnel sur des points qui n’ont pas d’importance en termes de résultats. Il est généralement préférable de prendre en considération simplement les problèmes de synchronisation : l’application respecte-t-elle la fréquence d’images ? Si c’est le cas, il n’est peut-être pas nécessaire d’optimiser davantage votre application, même si votre code n’est pas aussi bien conçu qu’il le faudrait. Concentrez-vous sur ce qui compte vraiment, c’est-à-dire sur les problèmes de performance qui ont un impact sur l’expérience d’utilisation.

Techniques pour respecter la fréquence d’images

Avec la VR, chaque image doit généralement être dessinée deux fois, une fois pour chaque œil. Cela signifie généralement que chaque appel de dessin est lancé deux fois, que chaque maillage est dessiné deux fois et que chaque texture est liée deux fois. Il y a également un petit coût supplémentaire nécessaire pour appliquer la distorsion et le décalage temporel (TimeWarp) à l’image de sortie finale (environ 2 ms par image). Comme le Rift actualise les images à 90 Hz, il peut être difficile de respecter une fréquence d’images constante.
Les règles générales suivantes peuvent vous aider à respecter la fréquence d’images :
  • Limitez chaque image à un maximum de 500 à 1 000 draw calls (appels de dessin).
  • Limitez chaque image à un maximum de 1 à 2 millions de triangles ou de sommets.
  • Utilisez le moins de textures possible, même si elles peuvent être grandes. Des ensembles de travail plus petits, la compression des textures et le mipmapping minimiseront la consommation de bande passante des textures.
  • Limitez le temps d’exécution du script (ou autre logique) à 1 à 3 ms, par exemple lors de l’exécution de la commande Unity Update().
  • Les systèmes étant pleins de surprises, exécutez toujours un profileur pour comprendre la façon dont votre application utilise les ressources.
  • Veillez à ne pas procéder à l’optimisation trop tôt dans le processus de développement. Simplifiez d’abord le code. Inversement, n’ignorez pas les problèmes de performance évidents lorsque vous les identifiez.
  • Ne vous fiez pas à une technologie ou à des techniques non éprouvées qui ne sont pas reconnues pour être performantes.
  • Tout est relatif. Comparez des éléments similaires.
  • Modifiez une chose à la fois : résolution, ressources matérielles, qualité d’image, etc.
  • Certains artefacts sont pires que d’autres. Les images perdues qui provoquent un inconfort ne méritent pas un graphisme de meilleure qualité.
  • Ne comptez pas sur la Distorsion asynchrone de l’espace pour respecter la fréquence d’images de rendu. La Distorsion asynchrone de l’espace génère des images intermédiaires basées sur des informations très récentes sur la position de la tête, si votre application commence à perdre des images. Elle déforme l’image précédente pour qu’elle corresponde à la position de la tête la plus récente. Bien que la Distorsion asynchrone de l’espace permette d’atténuer quelques pertes d’images de temps en temps, les applications doivent atteindre 90 images par seconde (FPS) de manière constante sur une machine spécifiée recommandée et maintenir 45 images par seconde sur une machine spécifiée minimum pour être admise dans le Rift Store.
  • En raison de la résolution plus élevée et de la charge du GPU, le CPU tend à moins être un goulot d’étranglement sur le Rift, par rapport aux appareils VR mobiles.
  • Les styles graphiques avec des shaders simples et relativement peu de polygones peuvent souvent offrir une expérience VR aussi bonne que les graphiques photoréalistes, qui nécessitent généralement beaucoup plus de traitement pour le rendu de chaque image.
  • Utilisez des techniques telles que le niveau de détail (LOD), le culling et le batching.
  • Réduisez le taux d’ombrage en mettant à l’échelle les eye buffers et en utilisant le rendu octilinéaire (qui exploite la technologie du Lens Matched Shading de NVIDIA).
  • Utilisez les ombres du projecteur pour économiser la bande passante.
  • Prenez en considération la résolution et le nombre de cascades que vous utilisez lorsque vous effectuez le rendu de la carte des ombres en cascade, car ces cascades peuvent consommer beaucoup de bande passante. En outre, essayez de ne pas utiliser de filtres coûteux. Cependant, la réduction de la résolution et du nombre de cascades peut rapidement entraîner une baisse de la qualité des graphiques. Envisagez donc également d’utiliser les ombres du projecteur.
  • Si nécessaire, utilisez des calculs mathématiques de shaders simplifiés et des ombres cuites.

Causes courantes des problèmes de performance

Les problèmes de performance sont le plus souvent liés aux problèmes suivants (par ordre de gravité) :
Problème de performanceCoûts des ressources
Scènes nécessitant des rendus dépendants, y compris des ombres et des reflets
CPU, GPU
Liaison des objets tampons de sommet (VBO) afin d’émettre des draw calls
Processeur, pilote graphique
Transparence, shaders multiples, éclairage par pixel et autres effets utilisant un grand nombre de pixels
GPU
Chargements importants de textures, blits et autres formes de memcpy
GPU, contrôleur de mémoire
Animation avec skinning
CPU, GPU
Surcoût du collecteur de déchets dans Unity
CPU
Logo nav.
Français (France)
©2026 Meta