The read-only texture
property of the XRWebGLDepthInformation
interface is a WebGLTexture
containing depth buffer information as an opaque texture.
Use XRWebGLBinding.getDepthInformation()
to obtain GPU depth information. The returned XRWebGLDepthInformation
object will contain the texture
buffer which can then be bound to a texture and depth buffer information can be made available to a WebGL fragment shader.
const depthInfo = glBinding.getDepthInformation(view);
const uvTransform = depthInfo.normDepthBufferFromNormView.matrix;
const u_DepthTextureLocation = gl.getUniformLocation(program, "u_DepthTexture");
const u_UVTransformLocation = gl.getUniformLocation(program, "u_UVTransform");
const u_RawValueToMeters = gl.getUniformLocation(program, "u_RawValueToMeters");
gl.bindTexture(gl.TEXTURE_2D, depthInfo.texture);
gl.activeTexture(gl.TEXTURE0);
gl.uniform1i(u_DepthTextureLocation, 0);
gl.uniformMatrix4fv(u_UVTransformLocation, false, uvTransform);
gl.uniform1f(u_RawValueToMeters, depthInfo.rawValueToMeters);