• Public
  • Public/Protected
  • All

Class WebXRSessionManager

Manages an XRSession to work with Babylon's engine




  • WebXRSessionManager





  • Constructs a WebXRSessionManager, this must be initialized within a user action before usage


    • scene: Scene

      The scene which the session should be created for

    Returns WebXRSessionManager


baseReferenceSpaceSearch playground for baseReferenceSpace

baseReferenceSpace: XRReferenceSpace

The base reference space from which the session started. good if you want to reset your reference space

currentFrameSearch playground for currentFrame

currentFrame: Nullable<XRFrame>

Current XR frame

currentTimestampSearch playground for currentTimestamp

currentTimestamp: number

WebXR timestamp updated every frame

defaultHeightCompensationSearch playground for defaultHeightCompensation

defaultHeightCompensation: number

Used just in case of a failure to initialize an immersive session. The viewer reference space is compensated using this height, creating a kind of "viewer-floor" reference space

inXRFrameLoopSearch playground for inXRFrameLoop

inXRFrameLoop: boolean

Are we currently in the XR loop?

inXRSessionSearch playground for inXRSession

inXRSession: boolean

Are we in an XR session?

onXRFrameObservableSearch playground for onXRFrameObservable

onXRFrameObservable: Observable<XRFrame>

Fires every time a new xrFrame arrives which can be used to update the camera

onXRReferenceSpaceChangedSearch playground for onXRReferenceSpaceChanged

onXRReferenceSpaceChanged: Observable<XRReferenceSpace>

Fires when the reference space changed

onXRSessionEndedSearch playground for onXRSessionEnded

onXRSessionEnded: Observable<any>

Fires when the xr session is ended either by the device or manually done

onXRSessionInitSearch playground for onXRSessionInit

onXRSessionInit: Observable<XRSession>

Fires when the xr session is initialized: right after requestSession was called and returned with a successful result

sceneSearch playground for scene

scene: Scene

The scene which the session should be created for

sessionSearch playground for session

session: XRSession

Underlying xr session

viewerReferenceSpaceSearch playground for viewerReferenceSpace

viewerReferenceSpace: XRReferenceSpace

The viewer (head position) reference space. This can be used to get the XR world coordinates or get the offset the player is currently at.



  • get currentFrameRate(): number | undefined
  • The current frame rate as reported by the device

    Returns number | undefined


  • get fixedFoveation(): Nullable<number>
  • set fixedFoveation(value: Nullable<number>): any
  • Get the fixed foveation currently set, as specified by the webxr specs If this returns null, then fixed foveation is not supported

    Returns Nullable<number>

  • Set the fixed foveation to the specified value, as specified by the webxr specs This value will be normalized to be between 0 and 1, 1 being max foveation, 0 being no foveation


    Returns any


  • get isFixedFoveationSupported(): boolean
  • Check if fixed foveation is supported on this device

    Returns boolean


  • get isNative(): boolean
  • Returns true if Babylon.js is using the BabylonNative backend, otherwise false

    Returns boolean


  • The current reference space used in this session. This reference space can constantly change! It is mainly used to offset the camera's position.

    Returns XRReferenceSpace

  • Set a new reference space and triggers the observable


    Returns any


  • The mode for the managed XR session

    Returns XRSessionMode


  • get supportedFrameRates(): Float32Array | undefined
  • A list of supported frame rates (only available in-session!

    Returns Float32Array | undefined


disposeSearch playground for dispose

  • dispose(): void
  • Disposes of the session manager This should be called explicitly by the dev, if required.

    Returns void

exitXRAsyncSearch playground for exitXRAsync

  • exitXRAsync(): Promise<void>
  • Stops the xrSession and restores the render loop

    Returns Promise<void>

    Promise which resolves after it exits XR

getRenderTargetTextureForEyeSearch playground for getRenderTargetTextureForEye

getRenderTargetTextureForViewSearch playground for getRenderTargetTextureForView

getWebXRRenderTargetSearch playground for getWebXRRenderTarget

  • Creates a WebXRRenderTarget object for the XR session


    Returns WebXRRenderTarget

    a WebXR render target to which the session can render

initializeAsyncSearch playground for initializeAsync

  • initializeAsync(): Promise<void>
  • Initializes the manager After initialization enterXR can be called to start an XR session

    Returns Promise<void>

    Promise which resolves after it is initialized

initializeSessionAsyncSearch playground for initializeSessionAsync

  • Initializes an xr session


    • Optional xrSessionMode: XRSessionMode

      mode to initialize

    • Optional xrSessionInit: XRSessionInit

      defines optional and required values to pass to the session builder

    Returns Promise<XRSession>

    a promise which will resolve once the session has been initialized

isSessionSupportedAsyncSearch playground for isSessionSupportedAsync

  • isSessionSupportedAsync(sessionMode: XRSessionMode): Promise<boolean>
  • Checks if a session would be supported for the creation options specified


    • sessionMode: XRSessionMode

      session mode to check if supported eg. immersive-vr

    Returns Promise<boolean>

    A Promise that resolves to true if supported and false if not

resetReferenceSpaceSearch playground for resetReferenceSpace

  • resetReferenceSpace(): void
  • Resets the reference space to the one started the session

    Returns void

runInXRFrameSearch playground for runInXRFrame

  • runInXRFrame(callback: () => void, ignoreIfNotInSession?: boolean): void
  • Run a callback in the xr render loop


    • callback: () => void

      the callback to call when in XR Frame

        • (): void
        • Returns void

    • Optional ignoreIfNotInSession: boolean

      if no session is currently running, run it first thing on the next session

    Returns void

runXRRenderLoopSearch playground for runXRRenderLoop

  • runXRRenderLoop(): void
  • Starts rendering to the xr layer

    Returns void

setReferenceSpaceTypeAsyncSearch playground for setReferenceSpaceTypeAsync

  • Sets the reference space on the xr session


    Returns Promise<XRReferenceSpace>

    a promise that will resolve once the reference space has been set

trySetViewportForViewSearch playground for trySetViewportForView

  • Attempts to set the framebuffer-size-normalized viewport to be rendered this frame for this view. In the event of a failure, the supplied viewport is not updated.


    • viewport: Viewport

      the viewport to which the view will be rendered

    • view: XRView

      the view for which to set the viewport

    Returns boolean

    whether the operation was successful

updateRenderStateSearch playground for updateRenderState

  • Updates the render state of the session


    Returns void

updateRenderStateAsyncSearch playground for updateRenderStateAsync

  • Updates the render state of the session. Note that this is deprecated in favor of WebXRSessionManager.updateRenderState().



    Returns Promise<void>

    a promise that resolves once the render state has been updated

updateTargetFrameRateSearch playground for updateTargetFrameRate

  • updateTargetFrameRate(rate: number): Promise<void>
  • Set the framerate of the session.


    • rate: number

      the new framerate. This value needs to be in the supportedFrameRates array

    Returns Promise<void>

    a promise that resolves once the framerate has been set

Static IsSessionSupportedAsyncSearch playground for IsSessionSupportedAsync

  • IsSessionSupportedAsync(sessionMode: XRSessionMode): Promise<boolean>
  • Returns a promise that resolves with a boolean indicating if the provided session mode is supported by this browser


    Returns Promise<boolean>

    a promise with boolean as final value


  • Constructor
  • Property
  • Method
  • Accessor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Static property
  • Static method