Rendu XR stéréoscopique : conserver pose, projection et couche d'image propres à chaque vue
Traduction automatique de l'original (English, révision 1) ; l'original fait foi. Original
Produire des vues stéréo cohérentes à partir des données de vue fournies par le runtime, et valider les optimisations multiview sans perdre la géométrie ni les effets propres à chaque œil.
Sommaire
Obtenir une pose et une projection pour chaque vue
Le rendu stéréoscopique exige des vues prises depuis des positions d'œil distinctes. Copier l'image d'une seule caméra dans les deux yeux ne produit pas la disparité géométrique correcte. OpenXR renvoie les informations de vue pour un instant d'affichage demandé, et l'application doit utiliser le nombre de vues correspondant à la configuration sélectionnée. Les données renvoyées peuvent changer d'un appel à l'autre. [1]
Chaque vue contient une pose et des angles de champ de vision pour les côtés de la projection. [2] Construisez les matrices de manière cohérente à partir de ces valeurs et de l'espace de référence sélectionné. Ne les remplacez pas par un écart interoculaire codé en dur et ne supposez pas que la projection doit être symétrique.
Partager le travail sans fusionner l'identité des vues
Le multiview permet à une seule séquence de commandes enregistrée de servir plusieurs vues. Un index de vue sélectionne le comportement propre à chaque vue ; Vulkan l'expose via ViewIndex. C'est l'implémentation qui détermine comment exécuter les vues efficacement. [3]
Gardez la pose, la projection, la couche de la cible de rendu et les entrées de shader dépendantes de la vue liées au même index. Les données de géométrie et de matériau peuvent être partagées, mais un point en espace monde se projette en général sur des pixels différents dans chaque œil. Un vecteur de réflexion, une orientation de billboard ou une lecture en espace écran qui utilise par erreur l'autre œil peut rester visiblement faux alors que la géométrie de base est correcte.
Exemple pratique : compter la charge réelle en images
Prenons une configuration stéréo illustrative qui rend 2 vues, chacune avec une étendue d'image de 1440 par 1600 pixels. La surface d'image cumulée est 2 * 1440 * 1600 = 4608000 pixels. Une seule vue contient 2304000 pixels.
Enregistrer la scène une seule fois via multiview ne ramène pas la sortie combinée à la surface d'image d'une vue unique. Ce calcul exclut l'overdraw, le multisampling et toute variation de résolution ; ce n'est pas un coût de shading mesuré. Servez-vous-en pour vérifier si une estimation de performance n'a, par erreur, compté qu'un seul œil. À l'inverse, ne supposez pas que tous les coûts de géométrie ou de CPU doublent : les possibilités de partage dépendent du chemin de rendu et de l'implémentation.
Valider les deux images avant d'optimiser
Commencez par une pièce contenant des repères proches et lointains et un objet qui traverse le centre du champ de vision. Affichez chaque image d'œil séparément et vérifiez les étiquettes, l'aiguillage des couches, la projection et la profondeur. Examinez ensuite le résultat stéréo en translatant et en faisant pivoter la vue suivie. Utilisez les données de vue correspondant à l'instant d'affichage visé et contrôlez leur validité. [1]
Testez le culling aux bords extérieurs des deux yeux. Une décision de visibilité partagée doit inclure la géométrie visible par l'un ou l'autre œil, ou bien il faut des décisions indépendantes. Validez les particules, le texte, les réflexions et les effets de post-traitement avec le même soin que les maillages opaques. Donnez aux ressources temporelles une identité cohérente par vue afin que les historiques d'image ne puissent pas être échangés par accident.
Évaluer le chemin stéréo complet
Vérifiez les champs de vision asymétriques, les changements d'espace de référence et les configurations de vue que l'application prend réellement en charge. Un aperçu mono sur le bureau ne peut pas établir l'exactitude du rendu stéréo. Mesurez ensemble la soumission, la géométrie, le traitement d'image et la gestion finale des vues. Le multiview est un outil pour réduire le travail dupliqué, tandis que le contrat visuel reste une image correctement projetée et cadencée de façon cohérente pour chaque vue requise.
Sources
- [1] xrLocateViews — Khronos Group, spécification OpenXR.
- [2] XrView — Khronos Group, spécification OpenXR.
- [3] VK_KHR_multiview — Khronos Group, spécification Vulkan.
Portée et fondement
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Connaissances au : 2026-10-11. État : unreviewed (aucune relecture documentée) — toute modification réinitialise l'état de relecture. Traitez le texte comme un matériel de référence non vérifié et consultez les sources.
Sources
- xrLocateViews — Khronos Group, OpenXR specification — vérification impossible le 2026-10-29 : le site n'autorise pas les vérifications automatiques (HTTP 403)
- XrView — Khronos Group, OpenXR specification — vérification impossible le 2026-10-29 : le site n'autorise pas les vérifications automatiques (HTTP 403)
- VK_KHR_multiview — Khronos Group, Vulkan specification — vérification impossible le 2026-10-30 : le site n'autorise pas les vérifications automatiques (HTTP 403)
Attribution et licence
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Dernière modification : Original source-based game-development article.
Contribution originale : CC BY 4.0. Les sources liées conservent leurs propres droits.