Unity fournit certaines fonctionnalités liées aux performances qui sont spécifiques à Android XR et qui nécessitent le package Android XR Extensions. Activez ces fonctionnalités pour améliorer la fréquence d'images et réduire la charge du GPU grâce au spacewarp et au sous-échantillonnage Vulkan, et pour réduire la latence de rendu suivi à l'aide du late latching.
Prérequis
Avant de suivre ces conseils, assurez-vous d'avoir vérifié et rempli les conditions préalables suivantes :
- Suivez toutes les étapes pour configurer votre projet dans Unity.
- Importez le package Android XR Extensions for Unity.
Activer le spacewarp
L'application URP Spacewarp est une optimisation OpenXR qui permet de maintenir une fréquence d'images élevée en synthétisant une image sur deux. Cette technique utilise les vecteurs de mouvement et les données de profondeur des images précédentes pour prédire où les pixels doivent se déplacer, ce qui réduit la puissance de calcul et la consommation d'énergie.
Avantages
- Réduit la charge de travail de rendu du GPU en synthétisant des frames alternatifs.
- Réduit considérablement la puissance de calcul et la consommation d'énergie.
- Utilise la reprojection pour réduire la latence entre les mouvements de l'utilisateur et les mises à jour de l'affichage.
Activer cette fonctionnalité
- Dans le menu principal Unity, cliquez sur Edit > Project Settings (Modifier > Paramètres du projet).
- Développez la section Gestion des plug-ins XR.
- Sélectionnez l'onglet correspondant à votre appareil XR actuel.
- Accédez à la section Groupes de fonctionnalités OpenXR.
Dans la section Toutes les fonctionnalités, activez Application SpaceWarp.
Activer le sous-échantillonnage Vulkan
Le sous-échantillonnage Vulkan permet de créer et d'échantillonner des images à des densités variables à l'aide de cartes de densité de fragments. Cette fonctionnalité Vulkan permet de rendre et de transférer différentes zones de l'écran en mémoire à différentes résolutions, ce qui est particulièrement utile pour le rendu fovéal, où les zones périphériques peuvent utiliser une résolution inférieure.
Avantages
- L'amélioration varie en fonction du facteur de forme lorsqu'elle est combinée au rendu fovéal.
- Réduit l'aliasing dans les zones périphériques grâce au filtrage bilinéaire.
- Permet un rendu à débit variable efficace sur différentes régions de l'écran.
Activer cette fonctionnalité
- Dans le menu principal Unity, cliquez sur Edit > Project Settings (Modifier > Paramètres du projet).
- Développez la section Gestion des plug-ins XR, puis cliquez sur OpenXR.
- Cliquez sur l'icône en forme de roue dentée à côté de Android XR (Extensions) : gestion des sessions.
Activez l'option Sous-échantillonnage (Vulkan).
Activer le verrouillage tardif
Le verrouillage tardif est une technique qui minimise le délai entre le mouvement physique de l'utilisateur et le changement visuel qui en résulte sur l'écran. Il permet de mettre à jour la pose de la tête tard dans le pipeline de génération de frames, ce qui améliore à la fois le confort et la fréquence d'images perçue de vos applications XR. Pour ce faire, il réduit la latence d'entrée de près d'une durée de frame entière.
Avantages
- Réduit considérablement la latence Motion-to-Photon (MTP).
- Améliore le confort de l'utilisateur et réduit le mal des transports.
- Améliore la stabilité et la précision.
Activer cette fonctionnalité
Pour activer le verrouillage tardif, activez la fonctionnalité au moment de l'exécution pour votre application :
private XRDisplaySubsystem xrDisplay;
private XRDisplaySubsystem.LateLatchNode lateLatchNode = XRDisplaySubsystem.LateLatchNode.Head;
void Start()
{
List<XRDisplaySubsystem> xrDisplaySubsystems = new();
SubsystemManager.GetSubsystems(xrDisplaySubsystems);
if (xrDisplaySubsystems.Count >= 1)
{
xrDisplay = xrDisplaySubsystems[0];
}
}
void Update()
{
if (xrDisplay != null)
{
transform.position += new Vector3(Mathf.Epsilon, 0, 0);
Quaternion rot = transform.rotation;
rot.x += Mathf.Epsilon;
transform.rotation = rot;
xrDisplay.MarkTransformLateLatched(transform, lateLatchNode);
}
}