91fa096d9bb40a6d77458d82d1890c9b654aefd6810e1a43cd94c68b95622d95.json 29 KB

1
  1. {"ast":null,"code":"import { RawTexture } from \"../../Materials/Textures/rawTexture.js\";\nimport { WebXRFeatureName, WebXRFeaturesManager } from \"../webXRFeaturesManager.js\";\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature.js\";\nimport { Tools } from \"../../Misc/tools.js\";\nimport { Texture } from \"../../Materials/Textures/texture.js\";\nimport { Observable } from \"../../Misc/observable.js\";\nimport { WebGLHardwareTexture } from \"../../Engines/WebGL/webGLHardwareTexture.js\";\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\n/**\n * WebXR Feature for WebXR Depth Sensing Module\n * @since 5.49.1\n */\nexport class WebXRDepthSensing extends WebXRAbstractFeature {\n /**\n * Width of depth data. If depth data is not exist, returns null.\n */\n get width() {\n return this._width;\n }\n /**\n * Height of depth data. If depth data is not exist, returns null.\n */\n get height() {\n return this._height;\n }\n /**\n * Scale factor by which the raw depth values must be multiplied in order to get the depths in meters.\n */\n get rawValueToMeters() {\n return this._rawValueToMeters;\n }\n /**\n * An XRRigidTransform that needs to be applied when indexing into the depth buffer.\n */\n get normDepthBufferFromNormView() {\n return this._normDepthBufferFromNormView;\n }\n /**\n * Describes which depth-sensing usage (\"cpu\" or \"gpu\") is used.\n */\n get depthUsage() {\n switch (this._xrSessionManager.session.depthUsage) {\n case \"cpu-optimized\":\n return \"cpu\";\n case \"gpu-optimized\":\n return \"gpu\";\n }\n }\n /**\n * Describes which depth sensing data format (\"ushort\" or \"float\") is used.\n */\n get depthDataFormat() {\n switch (this._xrSessionManager.session.depthDataFormat) {\n case \"luminance-alpha\":\n return \"ushort\";\n case \"float32\":\n return \"float\";\n }\n }\n /**\n * Latest cached InternalTexture which containing depth buffer information.\n * This can be used when the depth usage is \"gpu\".\n */\n get latestInternalTexture() {\n var _this$width, _this$height;\n if (!this._cachedWebGLTexture) {\n return null;\n }\n const engine = this._xrSessionManager.scene.getEngine();\n const internalTexture = new InternalTexture(engine, 0 /* InternalTextureSource.Unknown */);\n internalTexture.isCube = false;\n internalTexture.invertY = false;\n internalTexture._useSRGBBuffer = false;\n internalTexture.format = this.depthDataFormat === \"ushort\" ? 2 : 5;\n internalTexture.generateMipMaps = false;\n internalTexture.type = this.depthDataFormat === \"ushort\" ? 5 : 1;\n internalTexture.samplingMode = 7;\n internalTexture.width = (_this$width = this.width) !== null && _this$width !== void 0 ? _this$width : 0;\n internalTexture.height = (_this$height = this.height) !== null && _this$height !== void 0 ? _this$height : 0;\n internalTexture._cachedWrapU = 1;\n internalTexture._cachedWrapV = 1;\n internalTexture._hardwareTexture = new WebGLHardwareTexture(this._cachedWebGLTexture, engine._gl);\n return internalTexture;\n }\n /**\n * cached depth buffer\n */\n get latestDepthBuffer() {\n if (!this._cachedDepthBuffer) {\n return null;\n }\n return this.depthDataFormat === \"ushort\" ? new Uint16Array(this._cachedDepthBuffer) : new Float32Array(this._cachedDepthBuffer);\n }\n /**\n * Latest cached Texture of depth image which is made from the depth buffer data.\n */\n get latestDepthImageTexture() {\n return this._cachedDepthImageTexture;\n }\n /**\n * Creates a new instance of the depth sensing feature\n * @param _xrSessionManager the WebXRSessionManager\n * @param options options for WebXR Depth Sensing Feature\n */\n constructor(_xrSessionManager, options) {\n super(_xrSessionManager);\n this.options = options;\n this._width = null;\n this._height = null;\n this._rawValueToMeters = null;\n this._normDepthBufferFromNormView = null;\n this._cachedDepthBuffer = null;\n this._cachedWebGLTexture = null;\n this._cachedDepthImageTexture = null;\n /**\n * Event that notify when `DepthInformation.getDepthInMeters` is available.\n * `getDepthInMeters` method needs active XRFrame (not available for cached XRFrame)\n */\n this.onGetDepthInMetersAvailable = new Observable();\n this.xrNativeFeatureName = \"depth-sensing\";\n // https://immersive-web.github.io/depth-sensing/\n Tools.Warn(\"depth-sensing is an experimental and unstable feature.\");\n }\n /**\n * attach this feature\n * Will usually be called by the features manager\n * @param force should attachment be forced (even when already attached)\n * @returns true if successful.\n */\n attach(force) {\n if (!super.attach(force)) {\n return false;\n }\n const isBothDepthUsageAndFormatNull = this._xrSessionManager.session.depthDataFormat == null || this._xrSessionManager.session.depthUsage == null;\n if (isBothDepthUsageAndFormatNull) {\n return false;\n }\n this._glBinding = new XRWebGLBinding(this._xrSessionManager.session, this._xrSessionManager.scene.getEngine()._gl);\n return true;\n }\n /**\n * Dispose this feature and all of the resources attached\n */\n dispose() {\n var _this$_cachedDepthIma;\n (_this$_cachedDepthIma = this._cachedDepthImageTexture) === null || _this$_cachedDepthIma === void 0 || _this$_cachedDepthIma.dispose();\n this.onGetDepthInMetersAvailable.clear();\n }\n _onXRFrame(_xrFrame) {\n const referenceSPace = this._xrSessionManager.referenceSpace;\n const pose = _xrFrame.getViewerPose(referenceSPace);\n if (pose == null) {\n return;\n }\n for (const view of pose.views) {\n switch (this.depthUsage) {\n case \"cpu\":\n this._updateDepthInformationAndTextureCPUDepthUsage(_xrFrame, view, this.depthDataFormat);\n break;\n case \"gpu\":\n if (!this._glBinding) {\n break;\n }\n this._updateDepthInformationAndTextureWebGLDepthUsage(this._glBinding, view, this.depthDataFormat);\n break;\n default:\n Tools.Error(\"Unknown depth usage\");\n this.detach();\n break;\n }\n }\n }\n _updateDepthInformationAndTextureCPUDepthUsage(frame, view, dataFormat) {\n const depthInfo = frame.getDepthInformation(view);\n if (depthInfo === null) {\n return;\n }\n const {\n data,\n width,\n height,\n rawValueToMeters,\n getDepthInMeters\n } = depthInfo;\n this._width = width;\n this._height = height;\n this._rawValueToMeters = rawValueToMeters;\n this._cachedDepthBuffer = data;\n // to avoid Illegal Invocation error, bind `this`\n this.onGetDepthInMetersAvailable.notifyObservers(getDepthInMeters.bind(depthInfo));\n if (!this._cachedDepthImageTexture) {\n this._cachedDepthImageTexture = RawTexture.CreateRTexture(null, width, height, this._xrSessionManager.scene, false, true, Texture.NEAREST_SAMPLINGMODE, 1);\n }\n switch (dataFormat) {\n case \"ushort\":\n this._cachedDepthImageTexture.update(Float32Array.from(new Uint16Array(data)).map(value => value * rawValueToMeters));\n break;\n case \"float\":\n this._cachedDepthImageTexture.update(new Float32Array(data).map(value => value * rawValueToMeters));\n break;\n default:\n break;\n }\n }\n _updateDepthInformationAndTextureWebGLDepthUsage(webglBinding, view, dataFormat) {\n const depthInfo = webglBinding.getDepthInformation(view);\n if (depthInfo === null) {\n return;\n }\n const {\n texture,\n width,\n height\n } = depthInfo;\n this._width = width;\n this._height = height;\n this._cachedWebGLTexture = texture;\n const scene = this._xrSessionManager.scene;\n const engine = scene.getEngine();\n const internalTexture = engine.wrapWebGLTexture(texture);\n if (!this._cachedDepthImageTexture) {\n this._cachedDepthImageTexture = RawTexture.CreateRTexture(null, width, height, scene, false, true, Texture.NEAREST_SAMPLINGMODE, dataFormat === \"ushort\" ? 0 : 1);\n }\n this._cachedDepthImageTexture._texture = internalTexture;\n }\n /**\n * Extends the session init object if needed\n * @returns augmentation object for the xr session init object.\n */\n getXRSessionInitExtension() {\n const isDepthUsageDeclared = this.options.usagePreference != null && this.options.usagePreference.length !== 0;\n const isDataFormatDeclared = this.options.dataFormatPreference != null && this.options.dataFormatPreference.length !== 0;\n return new Promise(resolve => {\n if (isDepthUsageDeclared && isDataFormatDeclared) {\n const usages = this.options.usagePreference.map(usage => {\n switch (usage) {\n case \"cpu\":\n return \"cpu-optimized\";\n case \"gpu\":\n return \"gpu-optimized\";\n }\n });\n const dataFormats = this.options.dataFormatPreference.map(format => {\n switch (format) {\n case \"ushort\":\n return \"luminance-alpha\";\n case \"float\":\n return \"float32\";\n }\n });\n resolve({\n depthSensing: {\n usagePreference: usages,\n dataFormatPreference: dataFormats\n }\n });\n } else {\n resolve({});\n }\n });\n }\n}\n/**\n * The module's name\n */\nWebXRDepthSensing.Name = WebXRFeatureName.DEPTH_SENSING;\n/**\n * The (Babylon) version of this module.\n * This is an integer representing the implementation version.\n * This number does not correspond to the WebXR specs version\n */\nWebXRDepthSensing.Version = 1;\nWebXRFeaturesManager.AddWebXRFeature(WebXRDepthSensing.Name, (xrSessionManager, options) => {\n return () => new WebXRDepthSensing(xrSessionManager, options);\n}, WebXRDepthSensing.Version, false);","map":{"version":3,"names":["RawTexture","WebXRFeatureName","WebXRFeaturesManager","WebXRAbstractFeature","Tools","Texture","Observable","WebGLHardwareTexture","InternalTexture","WebXRDepthSensing","width","_width","height","_height","rawValueToMeters","_rawValueToMeters","normDepthBufferFromNormView","_normDepthBufferFromNormView","depthUsage","_xrSessionManager","session","depthDataFormat","latestInternalTexture","_this$width","_this$height","_cachedWebGLTexture","engine","scene","getEngine","internalTexture","isCube","invertY","_useSRGBBuffer","format","generateMipMaps","type","samplingMode","_cachedWrapU","_cachedWrapV","_hardwareTexture","_gl","latestDepthBuffer","_cachedDepthBuffer","Uint16Array","Float32Array","latestDepthImageTexture","_cachedDepthImageTexture","constructor","options","onGetDepthInMetersAvailable","xrNativeFeatureName","Warn","attach","force","isBothDepthUsageAndFormatNull","_glBinding","XRWebGLBinding","dispose","_this$_cachedDepthIma","clear","_onXRFrame","_xrFrame","referenceSPace","referenceSpace","pose","getViewerPose","view","views","_updateDepthInformationAndTextureCPUDepthUsage","_updateDepthInformationAndTextureWebGLDepthUsage","Error","detach","frame","dataFormat","depthInfo","getDepthInformation","data","getDepthInMeters","notifyObservers","bind","CreateRTexture","NEAREST_SAMPLINGMODE","update","from","map","value","webglBinding","texture","wrapWebGLTexture","_texture","getXRSessionInitExtension","isDepthUsageDeclared","usagePreference","length","isDataFormatDeclared","dataFormatPreference","Promise","resolve","usages","usage","dataFormats","depthSensing","Name","DEPTH_SENSING","Version","AddWebXRFeature","xrSessionManager"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/XR/features/WebXRDepthSensing.js"],"sourcesContent":["import { RawTexture } from \"../../Materials/Textures/rawTexture.js\";\nimport { WebXRFeatureName, WebXRFeaturesManager } from \"../webXRFeaturesManager.js\";\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature.js\";\nimport { Tools } from \"../../Misc/tools.js\";\nimport { Texture } from \"../../Materials/Textures/texture.js\";\nimport { Observable } from \"../../Misc/observable.js\";\n\nimport { WebGLHardwareTexture } from \"../../Engines/WebGL/webGLHardwareTexture.js\";\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\n/**\n * WebXR Feature for WebXR Depth Sensing Module\n * @since 5.49.1\n */\nexport class WebXRDepthSensing extends WebXRAbstractFeature {\n /**\n * Width of depth data. If depth data is not exist, returns null.\n */\n get width() {\n return this._width;\n }\n /**\n * Height of depth data. If depth data is not exist, returns null.\n */\n get height() {\n return this._height;\n }\n /**\n * Scale factor by which the raw depth values must be multiplied in order to get the depths in meters.\n */\n get rawValueToMeters() {\n return this._rawValueToMeters;\n }\n /**\n * An XRRigidTransform that needs to be applied when indexing into the depth buffer.\n */\n get normDepthBufferFromNormView() {\n return this._normDepthBufferFromNormView;\n }\n /**\n * Describes which depth-sensing usage (\"cpu\" or \"gpu\") is used.\n */\n get depthUsage() {\n switch (this._xrSessionManager.session.depthUsage) {\n case \"cpu-optimized\":\n return \"cpu\";\n case \"gpu-optimized\":\n return \"gpu\";\n }\n }\n /**\n * Describes which depth sensing data format (\"ushort\" or \"float\") is used.\n */\n get depthDataFormat() {\n switch (this._xrSessionManager.session.depthDataFormat) {\n case \"luminance-alpha\":\n return \"ushort\";\n case \"float32\":\n return \"float\";\n }\n }\n /**\n * Latest cached InternalTexture which containing depth buffer information.\n * This can be used when the depth usage is \"gpu\".\n */\n get latestInternalTexture() {\n if (!this._cachedWebGLTexture) {\n return null;\n }\n const engine = this._xrSessionManager.scene.getEngine();\n const internalTexture = new InternalTexture(engine, 0 /* InternalTextureSource.Unknown */);\n internalTexture.isCube = false;\n internalTexture.invertY = false;\n internalTexture._useSRGBBuffer = false;\n internalTexture.format = this.depthDataFormat === \"ushort\" ? 2 : 5;\n internalTexture.generateMipMaps = false;\n internalTexture.type = this.depthDataFormat === \"ushort\" ? 5 : 1;\n internalTexture.samplingMode = 7;\n internalTexture.width = this.width ?? 0;\n internalTexture.height = this.height ?? 0;\n internalTexture._cachedWrapU = 1;\n internalTexture._cachedWrapV = 1;\n internalTexture._hardwareTexture = new WebGLHardwareTexture(this._cachedWebGLTexture, engine._gl);\n return internalTexture;\n }\n /**\n * cached depth buffer\n */\n get latestDepthBuffer() {\n if (!this._cachedDepthBuffer) {\n return null;\n }\n return this.depthDataFormat === \"ushort\" ? new Uint16Array(this._cachedDepthBuffer) : new Float32Array(this._cachedDepthBuffer);\n }\n /**\n * Latest cached Texture of depth image which is made from the depth buffer data.\n */\n get latestDepthImageTexture() {\n return this._cachedDepthImageTexture;\n }\n /**\n * Creates a new instance of the depth sensing feature\n * @param _xrSessionManager the WebXRSessionManager\n * @param options options for WebXR Depth Sensing Feature\n */\n constructor(_xrSessionManager, options) {\n super(_xrSessionManager);\n this.options = options;\n this._width = null;\n this._height = null;\n this._rawValueToMeters = null;\n this._normDepthBufferFromNormView = null;\n this._cachedDepthBuffer = null;\n this._cachedWebGLTexture = null;\n this._cachedDepthImageTexture = null;\n /**\n * Event that notify when `DepthInformation.getDepthInMeters` is available.\n * `getDepthInMeters` method needs active XRFrame (not available for cached XRFrame)\n */\n this.onGetDepthInMetersAvailable = new Observable();\n this.xrNativeFeatureName = \"depth-sensing\";\n // https://immersive-web.github.io/depth-sensing/\n Tools.Warn(\"depth-sensing is an experimental and unstable feature.\");\n }\n /**\n * attach this feature\n * Will usually be called by the features manager\n * @param force should attachment be forced (even when already attached)\n * @returns true if successful.\n */\n attach(force) {\n if (!super.attach(force)) {\n return false;\n }\n const isBothDepthUsageAndFormatNull = this._xrSessionManager.session.depthDataFormat == null || this._xrSessionManager.session.depthUsage == null;\n if (isBothDepthUsageAndFormatNull) {\n return false;\n }\n this._glBinding = new XRWebGLBinding(this._xrSessionManager.session, this._xrSessionManager.scene.getEngine()._gl);\n return true;\n }\n /**\n * Dispose this feature and all of the resources attached\n */\n dispose() {\n this._cachedDepthImageTexture?.dispose();\n this.onGetDepthInMetersAvailable.clear();\n }\n _onXRFrame(_xrFrame) {\n const referenceSPace = this._xrSessionManager.referenceSpace;\n const pose = _xrFrame.getViewerPose(referenceSPace);\n if (pose == null) {\n return;\n }\n for (const view of pose.views) {\n switch (this.depthUsage) {\n case \"cpu\":\n this._updateDepthInformationAndTextureCPUDepthUsage(_xrFrame, view, this.depthDataFormat);\n break;\n case \"gpu\":\n if (!this._glBinding) {\n break;\n }\n this._updateDepthInformationAndTextureWebGLDepthUsage(this._glBinding, view, this.depthDataFormat);\n break;\n default:\n Tools.Error(\"Unknown depth usage\");\n this.detach();\n break;\n }\n }\n }\n _updateDepthInformationAndTextureCPUDepthUsage(frame, view, dataFormat) {\n const depthInfo = frame.getDepthInformation(view);\n if (depthInfo === null) {\n return;\n }\n const { data, width, height, rawValueToMeters, getDepthInMeters } = depthInfo;\n this._width = width;\n this._height = height;\n this._rawValueToMeters = rawValueToMeters;\n this._cachedDepthBuffer = data;\n // to avoid Illegal Invocation error, bind `this`\n this.onGetDepthInMetersAvailable.notifyObservers(getDepthInMeters.bind(depthInfo));\n if (!this._cachedDepthImageTexture) {\n this._cachedDepthImageTexture = RawTexture.CreateRTexture(null, width, height, this._xrSessionManager.scene, false, true, Texture.NEAREST_SAMPLINGMODE, 1);\n }\n switch (dataFormat) {\n case \"ushort\":\n this._cachedDepthImageTexture.update(Float32Array.from(new Uint16Array(data)).map((value) => value * rawValueToMeters));\n break;\n case \"float\":\n this._cachedDepthImageTexture.update(new Float32Array(data).map((value) => value * rawValueToMeters));\n break;\n default:\n break;\n }\n }\n _updateDepthInformationAndTextureWebGLDepthUsage(webglBinding, view, dataFormat) {\n const depthInfo = webglBinding.getDepthInformation(view);\n if (depthInfo === null) {\n return;\n }\n const { texture, width, height } = depthInfo;\n this._width = width;\n this._height = height;\n this._cachedWebGLTexture = texture;\n const scene = this._xrSessionManager.scene;\n const engine = scene.getEngine();\n const internalTexture = engine.wrapWebGLTexture(texture);\n if (!this._cachedDepthImageTexture) {\n this._cachedDepthImageTexture = RawTexture.CreateRTexture(null, width, height, scene, false, true, Texture.NEAREST_SAMPLINGMODE, dataFormat === \"ushort\" ? 0 : 1);\n }\n this._cachedDepthImageTexture._texture = internalTexture;\n }\n /**\n * Extends the session init object if needed\n * @returns augmentation object for the xr session init object.\n */\n getXRSessionInitExtension() {\n const isDepthUsageDeclared = this.options.usagePreference != null && this.options.usagePreference.length !== 0;\n const isDataFormatDeclared = this.options.dataFormatPreference != null && this.options.dataFormatPreference.length !== 0;\n return new Promise((resolve) => {\n if (isDepthUsageDeclared && isDataFormatDeclared) {\n const usages = this.options.usagePreference.map((usage) => {\n switch (usage) {\n case \"cpu\":\n return \"cpu-optimized\";\n case \"gpu\":\n return \"gpu-optimized\";\n }\n });\n const dataFormats = this.options.dataFormatPreference.map((format) => {\n switch (format) {\n case \"ushort\":\n return \"luminance-alpha\";\n case \"float\":\n return \"float32\";\n }\n });\n resolve({\n depthSensing: {\n usagePreference: usages,\n dataFormatPreference: dataFormats,\n },\n });\n }\n else {\n resolve({});\n }\n });\n }\n}\n/**\n * The module's name\n */\nWebXRDepthSensing.Name = WebXRFeatureName.DEPTH_SENSING;\n/**\n * The (Babylon) version of this module.\n * This is an integer representing the implementation version.\n * This number does not correspond to the WebXR specs version\n */\nWebXRDepthSensing.Version = 1;\nWebXRFeaturesManager.AddWebXRFeature(WebXRDepthSensing.Name, (xrSessionManager, options) => {\n return () => new WebXRDepthSensing(xrSessionManager, options);\n}, WebXRDepthSensing.Version, false);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}