Secure context

This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

When using the XRWebGLLayer() constructor to create a new WebGL rendering layer for WebXR, providing as the layerInit parameter an object whose depth property is false will request that the new layer be created without a depth buffer.


let layerInit = {
  depth: false
let glLayer = new XRWebGLLayer(xrSession, gl, layerInit);

let glLayer = new XRWebGLLayer(xrSession, gl, { depth: false });


A Boolean which can be set to false to specify that the new WebGL layer should not have a depth buffer. This means that the only source for depth information is the vertex coordinates, and reduces the accuracy and quality of rendering, but may potentially affect the performance of rendering as well.

The default value is true.

Usage notes

This property differs from ignoreDepthValues in that a layer created with ignoreDepthValues set to true may still have a depth buffer, but will not make use of it.

You can determine whether or not the depth buffer is being used by a given WebGL rendering layer during your XR session by checking the value returned by XRWebGLLayer.ignoreDepthValues. If this is true, then the depth buffer is either not present or is being ignored.

if (glLayer.ignoreDepthValues) {
  /* not using the depth buffer */


In this example, a new XRWebGLLayer is created for a WebXR session, xrSession, without a depth buffer.

  baseLayer: new XRWebGLLayer(xrSession, gl, {
     depth: false


Specification Status Comment
WebXR Device API
The definition of 'XRWebGLLayerInit.depth' in that specification.
Working Draft Initial definition.

Browser compatibility

BCD tables only load in the browser

See also