XRDisplaySubsystem
An XRDisplaySubsystem controls rendering to a head tracked display.
Read time 5 minutesLast updated 2 days ago
Definition
- Type: Class
- Namespace: UnityEngine.XR
- Assembly: UnityEngine.XRModule
- Inherits from: IntegratedSubsystem<XRDisplaySubsystemDescriptor>
- Implements: ISubsystem
public class XRDisplaySubsystem : IntegratedSubsystem<XRDisplaySubsystemDescriptor>, ISubsystem
Remarks
An XRDisplaySubsystem instance can take up to three frames to fully initialize. You should wait three frames before accessing any of the methods or properties of this class.
The following example uses a coroutine to wait for three frames before it sets the XR display subsystem's foveated rendering properties:
Examples
using UnityEngine;using UnityEngine.XR;using System.Collections;using System.Collections.Generic;public class FoveationStarter : MonoBehaviour{ List<XRDisplaySubsystem> xrDisplays = new List<XRDisplaySubsystem>(); void Start() { StartCoroutine(WaitForXRDisplay()); } IEnumerator WaitForXRDisplay() { yield return new WaitUntil(() => Time.frameCount >= 3); SubsystemManager.GetSubsystems(xrDisplays); if (xrDisplays.Count == 1) { xrDisplays[0].foveatedRenderingLevel = .5f; // half strength Debug.Log($"Foveated rendering set to {xrDisplays[0].foveatedRenderingLevel}."); } else { Debug.LogWarning($"Couldn't find an XRDisplaySubsystem for foveated rendering."); } }}
Properties
Property | Description |
|---|---|
| appliedViewportScale | The portion of the allocated display texture used by the active stereo device for the current frame. |
| contentProtectionEnabled | Sets or gets the state of content protection for the current active provider. |
| disableLegacyRenderer | Disables the legacy renderer while this XRDisplaySubsystem is active. |
| displayOpaque | Determines if the current attached device has an opaque display. |
| displayRefreshRate | The refresh rate of the current attached device's display. |
| foveatedRenderingFlags | Controls optional behavior of the foveated rendering system. |
| foveatedRenderingLevel | Controls the intensity of the foveated rendering system. |
| fovZoomFactor | The field of view zoom factor of the current XR projection. |
| globalDynamicScale | The current scale factor applied to dynamically scalable eye textures when XR dynamic resolution is active. |
| hdrOutputSettings | The HDROutputSettings for the XR Display Subsystem. |
| occlusionMaskScale | A scale applied to the standard occlusion mask. |
| reprojectionMode | The kind of reprojection the app requests to stabilize rendering relative to the user's head motion. |
| scaleOfAllRenderTargets | Controls the size of the textures submitted to the display as a multiplier of the display's default resolution. |
| scaleOfAllViewports | Controls how much of the allocated display texture should be used for rendering. |
| supportedTextureLayouts | Specifies all texture layouts supported by this display subsystem. This var is a bit field that could be combination of XRDisplaySubsystem.TextureLayout. |
| textureLayout | Set DisplaySubsystem to use certain texture layout. Should query supported texture layout through supportedTextureLayouts first for the capabilities. |
| zFar | Set DisplaySubsystem to use zFar for rendering. |
| zNear | Set DisplaySubsystem to use zNear for rendering. |
Static Properties
Property | Description |
|---|---|
| activeSubsystem | The active display subsystem, if any. If no display subsystem is active, this property value is |
| activeSubsystemOrStub | The active display subsystem, if any. If no display subsystem is active, this property value references a default, stub subsystem whose members return safe values. |
Methods
Method | Description |
|---|---|
| AddGraphicsThreadMirrorViewBlit | This function records the display subsystem's native blit event to the target command buffer. This function is typically called by a scriptable rendering pipeline. |
| BeginRecordingIfLateLatched | This function enables late latching recording of constant buffer memory locations which are later patched with the latest pose data. |
| EndRecordingIfLateLatched | This function disables late latching recording of constant buffer locations. |
| GetCullingParameters | Gets culling parameters for a specific culling pass index. |
| GetMirrorViewBlitDesc | Get a mirror view blit operation descriptor from the current display subsystem. |
| GetPreferredMirrorBlitMode | Returns the XR display's preferred mirror blit mode. |
| GetRenderPass | Gets an XRDisplaySubsystem.XRRenderPass of a specific index. |
| GetRenderPassCount | The number of XRDisplaySubsystem.XRRenderPass entries for this XR Display. |
| GetRenderTexture | Given the UnityXRRenderTextureID returned by IUnityXRDisplayInterface::CreateTexture, return the managed UnityEngine.RenderTexture instance. |
| GetRenderTextureForRenderPass | Given a render pass, return the RenderTexture instance backing that render pass. If the render pass is invalid, or if the render texture does not exist, return null. |
| GetSharedDepthTextureForRenderPass | Given a render pass, return the shared depth buffer RenderTexture instance backing that render pass. If the render pass is invalid, or if the render texture does not exist, return null. |
| MarkTransformLateLatched | This marks a given GameObject's transform to be late latched in the next frame. Once marked for late latching, the GameObject transform and its descendants will be updated with the latest VR pose updates before rendering is submitted to the GPU. |
| ScaledTextureHeight | Provides the current, scaled height of a render texture. |
| ScaledTextureWidth | Provides the current, scaled width of a render texture. |
| SetFocusPlane | Sets a point in 3D space that acts as the focal point of the Scene for this frame. This helps to improve the visual fidelity of content around this point. You must set this value every frame. |
| SetMSAALevel | Set MSAA level for the DisplaySubsystem's render texture. |
| SetPreferredMirrorBlitMode | Override the XR display's preferred mirror blit mode from the script. |
| TryGetAppGPUTimeLastFrame | Retrieves the time the GPU has spent on executing commands from the application's last frame, as reported by the XR Plugin. Measured in seconds. |
| TryGetCompositorGPUTimeLastFrame | Retrieves the amount of time that the GPU spent executing the compositor renderer during the last frame, as reported by the XR Plugin. Measured in seconds. |
| TryGetDisplayRefreshRate | Retrieves the refresh rate of the display as reported by the XR Plugin. |
| TryGetDroppedFrameCount | Retrieves the number of dropped frames reported by the XR Plugin. |
| TryGetFramePresentCount | Retrieves the number of times the current frame has been drawn to the device as reported by the XR Plugin. |
| TryGetMotionToPhoton | Retrieves the motion-to-photon value as reported by the XR Plugin. |
Events
Member | Description |
|---|---|
| displayFocusChanged | Event sent when XR display focus changes. |
Structs
Struct | Description |
|---|---|
| XRDisplaySubsystem.XRBlitParams | This struct holds data for a single blit operation. |
| XRDisplaySubsystem.XRMirrorViewBlitDesc | All information in this struct describes the desired mirror view blit operation. |
| XRDisplaySubsystem.XRRenderParameter | A single viewpoint that must be rendered by the render pipeline. Contains a target viewport and texture array slice within a corresponding renderTarget. |
| XRDisplaySubsystem.XRRenderPass | Contains configuration parameters about which view into the Scene the renderer should rasterize, and a render target (which can be a texture array) for the result of the rasterization. |
Enums
Enum | Description |
|---|---|
| XRDisplaySubsystem.FoveatedRenderingFlags | Optional flags to control the foveated rendering system. |
| XRDisplaySubsystem.LateLatchNode | The type of node to be late latched. |
| XRDisplaySubsystem.ReprojectionMode | The kind of reprojection the app requests to stabilize rendering relative to the user's head motion. |
| XRDisplaySubsystem.TextureLayout | Flags that designate the supported texture layouts. |