En raison des exigences élevées en matière de rendu, la réalité étendue (XR) nécessite un certain nombre d'optimisations des performances, et de nouveaux modes de rendu propres à la XR ont été introduits dans l'Unreal Engine (UE). Dans le document suivant, nous examinerons ces fonctionnalités et leur utilisation dans vos projets XR de l'UE.
Ombrage à taux variable et rendu fovéal fixe
L'ombrage à taux variable est une fonctionnalité prise en charge par les processeurs graphiques récents qui offre différentes méthodes pour ajuster le taux d'ombrage des pixels dans une ou plusieurs cibles de rendu. Quelle que soit la configuration, le taux d'ombrage par défaut est de 1:1, où une invocation de shader de pixel s'applique à 1 pixel cible à l'écran. Grâce à l'ombrage à taux variable, vous pouvez spécifier d'autres taux d'ombrage, notamment 1x2, 2x1, 2x2, 2x4, 4x2 et 4x4. Par exemple, pour un taux d'ombrage 2x2, vous ne verriez qu'une seule invocation de shader de pixel pour un groupe de 2x2 pixels (4 pixels), et pour un taux 4x4, vous ne verriez qu'une seule invocation de shader de pixel pour un groupe 4x4 (16 pixels).
Le taux d'ombrage peut être appliqué soit par matériau, soit via une image jointe représentant le taux d'ombrage (via l'ombrage à taux variable de niveau 2).
Le rendu fovéal fixe est une technique qui permet d'utiliser l'ombrage à taux variable basé sur les images dans les casques de réalité virtuelle afin d'ajuster le taux d'ombrage d'une cible, réduisant ainsi le taux d'ombrage dans la vision périphérique. En raison de la distorsion optique, le processeur graphique finit par supprimer les détails de pixels vers les bords de l'image. Ainsi, en appliquant une image à ombrage à taux variable qui réduit le taux d'ombrage plus loin du centre de l'image, vous pouvez améliorer les performances sans dégradation perceptible de la qualité de l'image.
La fovéation fixe utilise une image spéciale générée via un shader de calcul :
Les zones centrales (noires) des deux côtés correspondent au centre de chaque vue stéréoscopique ; les zones plus sombres correspondent à un taux d'ombrage plus élevé, le noir représentant un taux maximal (1x1, 1 invocation de shader de pixel par pixel), le rouge foncé la moitié du taux dans les axes X et Y (2x2, 1 invocation de shader de pixel pour 4 pixels) et le rouge clair un quart du taux (4x4, 1 invocation de shader de pixel pour 16 pixels).
Les premiers résultats obtenus avec les images à ombrage à taux variable appliquées aux passes de base et aux passes de transparence sont très prometteurs. Pour l'instant, il ne s'agit encore que d'une preuve de concept, mais elle pourrait être appliquée ailleurs que dans les passes de base et de transparence.
Paramètres du projet
Pour accéder aux paramètres d'ombrage à taux variable, dans le menu principal, accédez à Modifier > Paramètres du projet. Ensuite, dans la fenêtre Paramètres du projet, accédez à Moteur > Rendu > VR.
Variables de console
Vous pouvez utiliser les variables de console suivantes :
| Variable | Description |
|---|---|
r.vrs.Enable | Active ou désactive l'ombrage à taux variable dans le moteur (ombrage à taux variable basé sur les matériaux et tout ombrage à taux variable actif basé sur les images). |
r.VRS.EnableImage | Active ou désactive uniquement l'ombrage à taux variable basé sur les images. L'ombrage à taux variable par matériau continue de fonctionner s'il est activé et pris en charge. |
vr.VRS.HMDFixedFoveationLevel | HMD a corrigé les paramètres de qualité et de performances du rendu fovéal. |
vr.VRS.HMDFixedFoveationDynamic | Active ou désactive l'ajustement du niveau de fovéation fixe en fonction de l'utilisation du processeur graphique. |
Limites connues
Uniquement disponible sur les appareils Windows dotés de DirectX 12 qui prennent en charge l'ombrage à taux variable de niveau 2, les appareils Windows qui prennent en charge Vulkan et l'extension VK_KHR_fragment_shading_rate, ainsi que sur Oculus Quest.
Non compatible avec la technologie DLSS de NVIDIA.
Le rendu fovéal avec suivi oculaire n'est actuellement pas pris en charge.
Rendu stéréo instancié
Le rendu stéréo instancié réduit l'impact de la réalité étendue sur les performances dans l'UE. Activez cette fonctionnalité en accédant à Paramètres du projet > Moteur > Rendu > Stéréo instancié, puis cochez l'option Stéréo instancié.
Une fois le rendu stéréo instancié activé, il est nécessaire de redémarrer le moteur et de recompiler le shader. La passe de base et la passe de pré-z fonctionnent avec les maillages statiques, les maillages squelettiques, les particules de sprite et les particules de maillage avec la fonctionnalité activée (chemins de rendu en série et parallèle). Le rendu stéréo instancié fonctionne actuellement sur PC (DirectX) et PS4 ; les autres plateformes seront prises en charge après la publication initiale de la version 4.11. Cette vidéo compare le rendu stéréo standard en réalité virtuelle au rendu stéréo instancié en réalité virtuelle.
Prise en charge du mode multifenêtre pour les appareils mobiles
Certains appareils mobiles compatibles peuvent désormais prendre en charge le mode multifenêtre VR. Le rendu multifenêtre mobile est similaire au rendu stéréo instancié disponible sur les PC de bureau. Il fonctionne en fournissant un chemin optimisé pour le rendu stéréo sur le processeur de l'appareil mobile. Pour activer cette fonctionnalité, procédez comme suit :
Dans la barre d'outils principale, accédez à Modifier > Paramètres du projet pour ouvrir les paramètres du projet de l'éditeur.
Ensuite, accédez à Moteur > Rendu > VR et recherchez l'option Multifenêtre mobile.
Activez l'option Multifenêtre mobile, puis redémarrez l'Unreal Engine pour que les modifications prennent effet.
Le mode Multifenêtre mobile ne fonctionne qu'avec les processeurs graphiques récents basés sur l'architecture Mali.
Cette fonctionnalité est désactivée à l'exécution si vous compilez ce projet, mais ne disposez pas d'un processeur graphique compatible.
Rendu direct
By default, Unreal Engine uses a Deferred Renderer as it provides the most versatility and grants access to more rendering features. However, there are some trade-offs in using the Deferred Renderer that might not be right for all VR experiences. Forward Rendering provides a faster baseline, with faster rendering passes, which may lead to better performance on VR platforms. Not only is Forward Rendering faster, it also provides better anti-aliasing options than the Deferred Renderer, which may lead to better visuals.
Consultez la page Forward Shading Renderer pour en savoir plus sur cette fonctionnalité.
Profilage des performances
Pour identifier les ressources trop coûteuses pour la VR, vous devez profiler autant que possible l'activité de votre projet sur le processeur et le processeur graphique tout au long de son cycle de vie.
Profilage du processeur graphique - Pour activer le profileur du processeur graphique, il suffit d'appuyer simultanément sur les touches Ctrl + Maj + , (virgule) pendant l'exécution du projet. Après avoir appuyé sur ces touches, une nouvelle fenêtre similaire à l'image ci-dessous doit s'afficher.
Profileur du processeur - Le profilage de l'activité de votre projet sur le processeur est un peu plus complexe que le profilage pour le processeur graphique. Pour en savoir plus sur cette procédure, consultez la documentation relative au profileur de performances.
Paramètres de post-traitement
En raison des exigences élevées de la réalité virtuelle en matière de rendu, il est recommandé de désactiver la plupart des fonctionnalités avancées de post-traitement activées par défaut, sans quoi votre projet pourrait subir des problèmes de performances. Pour ce faire, procédez comme suit.
1. Ajoutez un volume de post-traitement à votre niveau s'il n'y en a pas déjà un. 1. Sélectionnez le volume de post-traitement puis, dans la section Volume de post-traitement, activez l'option Étendue infinie (non consolidée) de façon à ce que les paramètres du volume de post-traitement soient appliqués à l'ensemble du niveau.
![Activer l'option non consolidée pour le volume de post-traitement(enable-unbound-post-process-Volume.png)
1. Développez les paramètres du volume de post-traitement et passez en revue chaque section pour désactiver tous les paramètres de volume de post-traitement actifs en activant cette propriété, en cliquant dessus, puis en modifiant la valeur par défaut (généralement 1,0) sur 0, ce qui désactive la fonctionnalité.
Pour ce faire, vous n'avez pas besoin de passer par toutes les sections et de définir toutes les propriétés sur 0. Commencez plutôt par désactiver les fonctionnalités très gourmandes telles que les facteurs de flare, les reflets dans l'espace écran, l'anticrénelage temporel, l'occlusion ambiante dans l'espace écran, le flou lumineux et toute autre option susceptible d'avoir un impact sur les performances.