RenduRendering

Le rendu holographique permet à votre application de dessiner un hologramme à un endroit précis dans le monde autour de l’utilisateur, qu’il soit placé précisément dans le monde physique ou dans un domaine virtuel que vous avez créé.Holographic rendering enables your application to draw a hologram at a precise location in the world around the user, whether it's precisely placed in the physical world or within a virtual realm you've created. Les hologrammes sont des objets de sons et de lumière.Holograms are objects made of sound and light. Le rendu permet à votre application d’ajouter la lumière.Rendering enables your application to add the light.

Prise en charge des appareilsDevice support

FonctionnalitéFeature HoloLens (première génération)HoloLens (first gen) HoloLens 2HoloLens 2 Casques immersifsImmersive headsets
RenduRendering ✔️✔️ ✔️✔️ ✔️✔️

Rendu holographiqueHolographic rendering

La clé du rendu holographique est de savoir quel type de périphérique est utilisé.Key to holographic rendering is knowing what kind of device is being used. Les appareils avec des affichages de vue, tels que HoloLens, ajoutent de la lumière au monde.Devices with see-through displays, such as HoloLens, add light to the world. Les pixels noirs sont entièrement transparents, tandis que les pixels plus clairs sont de plus en plus opaques.Black pixels are fully transparent, while brighter pixels are increasingly opaque. Étant donné que la lumière des écrans est ajoutée à la lumière du monde réel, les pixels blancs sont translucides.Because the light from the displays is added to the light from the real world, white pixels are translucent.

Alors que le rendu stéréoscopique fournit une seule profondeur pour vos hologrammes, l’ajout d' effets de terre peut aider les utilisateurs à voir plus facilement l’aire de conception d’un hologramme.While stereoscopic rendering provides one depth cue for your holograms, adding grounding effects can help users see more easily what surface a hologram is near. Une technique de mise à la terre consiste à ajouter une lueur autour d’un hologramme sur la surface adjacente, puis à effectuer le rendu d’une ombre contre cette lueur.One grounding technique is to add a glow around a hologram on the nearby surface, and then render a shadow against this glow. De cette façon, votre ombre s’affiche pour soustraire la lumière de l’environnement.In this way, your shadow appears to subtract light from the environment. Le son spatial est une autre indication de profondeur importante qui permet aux utilisateurs de connaître la distance et l’emplacement relatif d’un hologramme.Spatial sound is another important depth cue, letting users reason about the distance and relative location of a hologram.

Les appareils avec des écrans opaques, tels que les casques immersifs de Windows Mixed Reality, bloquent le monde.Devices with opaque displays, like Windows Mixed Reality immersive headsets, block out the world. Les pixels noirs sont noirs et toute autre couleur apparaît en tant que couleur pour l’utilisateur.Black pixels are solid black, and any other color appears as that color to the user. Votre application est responsable du rendu de tout ce que l’utilisateur voit.Your application is responsible for rendering everything the user sees. Il est donc encore plus important de maintenir une fréquence d’actualisation constante pour que les utilisateurs bénéficient d’une expérience confortable.This makes it even more important to maintain a constant refresh rate so that users have a comfortable experience.

Paramètres de rendu préditsPredicted rendering parameters

Les casques de réalité mixte (à la fois HoloLens et les casques immersifs) suivent continuellement la position et l’orientation de la tête de l’utilisateur par rapport à leur environnement.Mixed reality headsets (both HoloLens and immersive headsets) continually track the position and orientation of the user's head relative to their surroundings. Au fur et à mesure que votre application commence à préparer son image suivante, le système prédit l’endroit où la tête de l’utilisateur sera à l’avenir à l’instant où le cadre apparaît sur les affichages.As your application begins preparing its next frame, the system predicts where the user's head will be in the future at the exact moment that the frame shows up on the displays. Sur la base de cette prédiction, le système calcule la vue et les transformations de projection à utiliser pour cette image.Based on this prediction, the system calculates the view and the projection transforms to use for that frame. Votre application doit utiliser ces transformations pour produire des résultats corrects.Your application must use these transforms to produce correct results. Si les transformations fournies par le système ne sont pas utilisées, l’image obtenue ne s’alignera pas sur le monde réel, conduisant à la gêne de l’utilisateur.If system-supplied transforms aren't used, the resulting image won't align with the real world, leading to user discomfort.

Notes

Pour prédire précisément quand un nouveau Frame atteindra les affichages, le système mesure constamment la latence de bout en bout du pipeline de rendu de votre application.To accurately predict when a new frame will reach the displays, the system is constantly measuring the effective end-to-end latency of your application's rendering pipeline. Tandis que le système s’ajuste à la longueur de votre pipeline de rendu, vous pouvez améliorer la stabilité de l’hologramme en gardant ce pipeline aussi rapidement que possible.While the system adjusts to the length of your rendering pipeline, you can improve hologram stability by keeping that pipeline as short as possible.

Les applications qui utilisent des techniques avancées pour augmenter la prédiction système peuvent remplacer les transformations de la vue système et de la projection.Applications that use advanced techniques to augment the system prediction can override the system view and projection transforms. Ces applications doivent toujours utiliser les transformations fournies par le système comme base pour leurs transformations personnalisées afin de produire des résultats significatifs.These applications must still use system-supplied transforms as a basis for their custom transforms to produce meaningful results.

Autres paramètres de renduOther rendering parameters

Lors du rendu d’un frame, le système spécifie la fenêtre d’affichage de mémoire tampon d’arrière-plan dans laquelle votre application doit être dessinée.When rendering a frame, the system specifies the back-buffer viewport in which your application should draw. Cette fenêtre d’affichage est souvent inférieure à la taille totale de la mémoire tampon de trame.This viewport is often smaller than the full size of the frame buffer. Quelle que soit la taille de la fenêtre d’affichage, une fois que l’image est rendue par l’application, le système mise à l’échelle de l’image pour remplir l’intégralité des affichages.Whatever the viewport size, once the frame is rendered by the application, the system upscales the image to fill the entirety of the displays.

Pour les applications qui ne parviennent pas à effectuer un rendu au taux de rafraîchissement requis, les paramètres de rendu du système peuvent être configurés pour réduire la sollicitation de la mémoire et le coût du rendu au détriment de l’augmentation des alias de pixels.For applications that find themselves unable to render at the required refresh rate, system rendering parameters can be configured to reduce memory pressure and rendering cost at the cost of increased pixel aliasing. Le format de la mémoire tampon d’arrière-plan peut également être modifié, ce qui, pour certaines applications, peut contribuer à améliorer la bande passante de mémoire et le débit de pixels.The back buffer format can also be changed, which for some apps can help to improve memory bandwidth and pixel throughput.

Le rendu frustum, la résolution et la fréquence d’images dans lesquelles votre application est invitée à effectuer le rendu peuvent également changer d’une image à l’autre, et peuvent varier en fonction de l’œil gauche et du droit.The rendering frustum, resolution, and framerate in which your app is asked to render might also change from frame to frame, and might differ across the left and right eye. Par exemple, lorsque la capture de la réalité mixte (MRC) est active et que la configuration de la vue caméra photo/vidéo n’est pas activée, un œil peut être rendu avec un angle ou une résolution plus élevé.For example, when mixed reality capture (MRC) is active and the photo/video camera view configuration isn't opted-into, one eye might be rendered with a larger FOV or resolution.

Pour tout Frame donné, votre application doit être rendue à l’aide de la transformation de vue, de la transformation de projection et de la résolution de la fenêtre d’affichage fournie par le système.For any given frame, your app must render using the view transform, projection transform, and viewport resolution provided by the system. En outre, votre application ne doit jamais supposer qu’un paramètre de rendu ou de vue reste fixe d’une image à l’autre.Additionally, your application must never assume that any rendering or view parameter remains fixed from frame-to-frame. Les moteurs comme Unity gèrent toutes ces transformations dans leurs propres objets Camera afin que le déplacement physique de vos utilisateurs et l’état du système soient toujours respectés.Engines like Unity handle all these transforms for you in their own camera objects so that the physical movement of your users and the state of the system is always respected. Si votre application autorise un déplacement virtuel de l’utilisateur par le biais du monde (par exemple, en utilisant le stick analogique sur un boîtier de manette), vous pouvez ajouter un objet de plateforme parente au-dessus de l’appareil photo qui le déplace.If your application allows for virtual movement of the user through the world (e.g. using the thumbstick on a gamepad), you can add a parent rig object above the camera that moves it around. Ainsi, l’appareil photo reflète à la fois le mouvement virtuel et physique de l’utilisateur.This causes the camera to reflect both the user's virtual and physical motion. Si votre application modifie la dimension de vue, transformation de projection ou fenêtre d’affichage fournie par le système, elle doit informer le système en appelant l' API de remplacementappropriée.If your application modifies the view transform, projection transform, or viewport dimension provided by the system, it must inform the system by calling the appropriate override API.

Pour améliorer la stabilité de votre rendu holographique, votre application doit fournir à Windows chaque frame le tampon de profondeur utilisé pour le rendu.To enhance the stability of your holographic rendering, your app should provide to Windows each frame the depth buffer it used for rendering. Si votre application fournit un tampon de profondeur, elle doit avoir des valeurs de profondeur cohérentes, en profondeur exprimées en mètres de l’appareil photo.If your app does provide a depth buffer, it should have coherent depth values, with depth expressed in meters from the camera. Cela permet au système d’utiliser vos données de profondeur par pixel pour mieux stabiliser le contenu si la tête de l’utilisateur se termine légèrement par rapport à l’emplacement prédit.This enables the system to use your per-pixel depth data to better stabilize content if the user's head ends up slightly offset from the predicted location. Si vous n’êtes pas en mesure de fournir votre tampon de profondeur, vous pouvez fournir un point de mise en évidence et normal, définissant un plan qui coupe la majeure partie de votre contenu.If you aren't able to provide your depth buffer, you can provide a focus point and normal, defining a plane that cuts through most of your content. Si le tampon de profondeur et un plan de focus sont fournis, le système peut utiliser les deux.If both the depth buffer and a focus plane are provided, the system might use both. En particulier, il est utile de fournir à la fois le tampon de profondeur et un point de focus qui comprend un vecteur de vélocité lorsque votre application affiche des hologrammes en mouvement.In particular, it's helpful to provide both the depth buffer and a focus point that includes a velocity vector when your application displays holograms that are in motion.

Reportez-vous à l’article rendu dans DirectX pour obtenir des informations de bas niveau sur cette rubrique.Refer to Rendering in DirectX article for low-level details about this topic.

Caméras holographiquesHolographic cameras

Windows Mixed Reality présente le concept de caméra holographique.Windows Mixed Reality introduces the concept of a holographic camera. Les caméras holographiques sont similaires à l’appareil photo traditionnel qui se trouve dans les textes graphiques en 3D. ils définissent à la fois les propriétés extrinsèques (position et orientation) et les propriétés de caméra intrinsèques.Holographic cameras are similar to the traditional camera found in 3D graphics texts; they define both the extrinsic (position and orientation) and intrinsic camera properties. (Par exemple, le champ de vue est utilisé pour afficher une scène 3D virtuelle.) Contrairement aux caméras 3D traditionnelles, l’application n’est pas en mesure de contrôler la position, l’orientation et les propriétés intrinsèques de l’appareil photo.(For example, field-of-view is used to view a virtual 3D scene.) Unlike traditional 3D cameras, the application isn't in control of the position, orientation, and intrinsic properties of the camera. Au lieu de cela, la position et l’orientation de la caméra holographique sont contrôlées implicitement par le mouvement de l’utilisateur.Rather, the position and orientation of the holographic camera is implicitly controlled by the user's movement. Le mouvement de l’utilisateur est relayé à l’application image par image via une transformation de vue.The user's movement is relayed to the application on a frame-by-frame basis via a view transform. De même, les propriétés intrinsèques de l’appareil photo sont définies par les optiques calibrées de l’appareil et relayées par frame via la transformation de projection.Likewise, the camera's intrinsic properties are defined by the device's calibrated optics and relayed frame-by-frame via the projection transform.

En général, votre application s’affiche pour une seule caméra stéréo.In general, your application will render for a single stereo camera. Une boucle de rendu robuste prend en charge plusieurs caméras et prend en charge les caméras mono et stéréo.A robust rendering loop will support multiple cameras, and will support both mono and stereo cameras. Par exemple, le système peut demander à votre application de s’afficher à partir d’une autre perspective lorsque l’utilisateur active une fonctionnalité comme la capture de réalité mixte (MRC), en fonction de la forme du casque.For example, the system might ask your application to render from an alternate perspective when the user activates a feature like mixed reality capture (MRC), depending on the headset shape. Les applications qui peuvent prendre en charge plusieurs caméras les obtiennent en choisissant le type de caméra qu’elles peuvent prendre en charge.Applications that can support multiple cameras get them by opting-in to the kind of cameras they can support.

Rendu du volumeVolume rendering

Lors du rendu des radiographie médicaux ou des volumes d’ingénierie en 3D, les techniques de rendu de volume sont souvent utilisées.When rendering medical MRIs or engineering volumes in 3D, volume rendering techniques are often used. Ces techniques peuvent être intéressantes en réalité mixte, où les utilisateurs peuvent visualiser naturellement ce volume à partir des angles clés, simplement en déplaçant leur tête.These techniques can be interesting in mixed reality, where users can naturally view such a volume from key angles, simply by moving their head.

Résolutions prises en charge sur HoloLens (First Gen)Supported resolutions on HoloLens (first gen)

  • La taille maximale de la fenêtre d’affichage est une propriété du HolographicDisplay.The max viewport size is a property of the HolographicDisplay. HoloLens est défini sur la taille maximale de la fenêtre d’affichage, à savoir 720p (1268x720) par défaut.HoloLens is set to the maximum viewport size, which is 720p (1268x720), by default.
  • La taille de la fenêtre d’affichage peut être modifiée en définissant ViewportScaleFactor sur HolographicCamera.The viewport size can be changed by setting the ViewportScaleFactor on the HolographicCamera. Ce facteur d’échelle est compris entre 0 et 1.This scale factor is in the range of 0 to 1.
  • La taille de la fenêtre d’affichage la plus faible prise en charge sur HoloLens (First Gen) est 50% de 720p, qui est 360p (634x360).The lowest supported viewport size on HoloLens (first gen) is 50% of 720p, which is 360p (634x360). Il s’agit d’un ViewportScaleFactor de 0,5.This is a ViewportScaleFactor of 0.5.
  • Toute valeur inférieure à 540p n’est pas recommandée en raison de la dégradation visuelle, mais elle peut être utilisée pour identifier les goulots d’étranglement dans le taux de remplissage des pixels.Anything lower than 540p isn't recommended because of visual degradation, but can be used to identify bottlenecks in pixel fill rate.

Résolutions prises en charge sur HoloLens 2Supported resolutions on HoloLens 2

  • Les tailles de cible de rendu actuelles et maximales prises en charge sont les propriétés de la configuration de la vue.The current and maximum supported render target sizes are properties of the view configuration. HoloLens 2 est défini sur la taille maximale de la cible de rendu, qui est 1440x936 par défaut.HoloLens 2 is set to the maximum render target size, which is 1440x936, by default.
  • Les applications peuvent modifier la taille des mémoires tampons cibles de rendu en appelant la méthode RequestRenderTargetSize pour demander une nouvelle taille de cible de rendu.Apps can change the size of render target buffers by calling the RequestRenderTargetSize method to request a new render target size. Une nouvelle taille de cible de rendu sera choisie, qui atteint ou dépasse la taille de la cible de rendu demandée.A new render target size will be chosen, which meets or exceeds the requested render target size. Cette API modifie la taille de la mémoire tampon de la cible de rendu, qui nécessite une réallocation de mémoire sur le GPU.This API changes the size of the render target buffer, which requires memory reallocation on the GPU. Les implications de cette méthode sont les suivantes : la taille de la cible de rendu peut être réduite pour réduire la sollicitation de la mémoire sur le GPU, et cette méthode ne doit pas être appelée à fréquence élevée.The implications of this include: The render target size can be scaled down to reduce memory pressure on the GPU, and this method shouldn't be called at high frequency.
  • Les applications peuvent toujours modifier la taille de la fenêtre d’affichage de la même façon que pour HoloLens 1.Apps can still change the viewport size in the same way that they did for HoloLens 1. Aucune réallocation de mémoire n’a été ajoutée sur le GPU, il peut donc être modifié à fréquence élevée, mais ne peut pas être utilisé pour réduire la sollicitation de la mémoire sur le GPU.There's no added memory reallocation on the GPU, so it can be changed at high frequency, but it cannot be used to reduce memory pressure on the GPU.
  • La taille de la fenêtre d’affichage la plus basse prise en charge sur HoloLens 2 est 634x412, un ViewportScaleFactor d’environ 0,44 lorsque la taille de la cible de rendu par défaut est utilisée.The lowest supported viewport size on HoloLens 2 is 634x412, a ViewportScaleFactor of approximately 0.44 when the default render target size is in use.
  • Si la taille de la cible de rendu est inférieure à la taille de la fenêtre d’affichage la plus basse prise en charge, le facteur d’échelle de la fenêtre d’affichage est ignoré.If a render target size is provided which is smaller than the lowest supported viewport size, the viewport scale factor will be ignored.
  • Toute valeur inférieure à 540p n’est pas recommandée en raison de la dégradation visuelle, mais elle peut être utilisée pour identifier les goulots d’étranglement dans le taux de remplissage des pixels.Anything lower than 540p isn't recommended because of visual degradation, but can be used to identify bottlenecks in pixel fill rate.

Voir aussiSee also