@onerjs/core 8.55.8 → 8.55.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/Animations/animation.pure.js +2 -2
  2. package/Animations/animation.pure.js.map +1 -1
  3. package/Animations/runtimeAnimation.js +4 -0
  4. package/Animations/runtimeAnimation.js.map +1 -1
  5. package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
  6. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  7. package/Behaviors/Meshes/followBehavior.js +1 -0
  8. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  9. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -0
  10. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  11. package/Cameras/Inputs/followCameraMouseWheelInput.js +2 -2
  12. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  13. package/Cameras/Inputs/followCameraPointersInput.d.ts +15 -0
  14. package/Cameras/Inputs/followCameraPointersInput.js +18 -3
  15. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  16. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +1 -1
  17. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  18. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js +1 -1
  19. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js.map +1 -1
  20. package/Cameras/arcRotateCamera.pure.js +1 -1
  21. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  22. package/Collisions/gpuPicker.d.ts +1 -0
  23. package/Collisions/gpuPicker.js +5 -4
  24. package/Collisions/gpuPicker.js.map +1 -1
  25. package/Culling/Helper/boundingInfoHelper.js +1 -1
  26. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  27. package/Culling/boundingSphere.js +7 -4
  28. package/Culling/boundingSphere.js.map +1 -1
  29. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +1 -1
  30. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
  31. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +48 -6
  32. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
  33. package/Engines/Native/nativeInterfaces.d.ts +1 -1
  34. package/Engines/Native/nativeInterfaces.js.map +1 -1
  35. package/Engines/abstractEngine.pure.js +2 -2
  36. package/Engines/abstractEngine.pure.js.map +1 -1
  37. package/Engines/engine.d.ts +10 -1
  38. package/Engines/thinNativeEngine.pure.d.ts +6 -1
  39. package/Engines/thinNativeEngine.pure.js +29 -2
  40. package/Engines/thinNativeEngine.pure.js.map +1 -1
  41. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.d.ts +3 -63
  42. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js +5 -71
  43. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js.map +1 -1
  44. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.d.ts +71 -0
  45. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js +86 -0
  46. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js.map +1 -0
  47. package/FlowGraph/Blocks/Data/pure.d.ts +1 -0
  48. package/FlowGraph/Blocks/Data/pure.js +1 -0
  49. package/FlowGraph/Blocks/Data/pure.js.map +1 -1
  50. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.d.ts +3 -37
  51. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js +5 -39
  52. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js.map +1 -1
  53. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.d.ts +45 -0
  54. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js +54 -0
  55. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js.map +1 -0
  56. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.d.ts +3 -17
  57. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js +5 -22
  58. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js.map +1 -1
  59. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.d.ts +25 -0
  60. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js +37 -0
  61. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js.map +1 -0
  62. package/FlowGraph/Blocks/Event/pure.d.ts +2 -0
  63. package/FlowGraph/Blocks/Event/pure.js +2 -0
  64. package/FlowGraph/Blocks/Event/pure.js.map +1 -1
  65. package/FlowGraph/Blocks/flowGraphBlockFactory.d.ts +1 -1
  66. package/FlowGraph/Blocks/flowGraphBlockFactory.js +198 -172
  67. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  68. package/FrameGraph/frameGraph.js +10 -1
  69. package/FrameGraph/frameGraph.js.map +1 -1
  70. package/Gamepads/gamepadManager.d.ts +1 -0
  71. package/Gamepads/gamepadManager.js +5 -2
  72. package/Gamepads/gamepadManager.js.map +1 -1
  73. package/Gizmos/scaleGizmo.js +1 -0
  74. package/Gizmos/scaleGizmo.js.map +1 -1
  75. package/Lights/IES/iesLoader.js +6 -8
  76. package/Lights/IES/iesLoader.js.map +1 -1
  77. package/Lights/Shadows/cascadedShadowGenerator.pure.js +4 -6
  78. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  79. package/Lights/Shadows/shadowGenerator.js +2 -2
  80. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  81. package/Lights/light.js +3 -5
  82. package/Lights/light.js.map +1 -1
  83. package/Lights/spotLight.pure.js +1 -1
  84. package/Lights/spotLight.pure.js.map +1 -1
  85. package/Materials/Background/backgroundMaterial.pure.d.ts +1 -1
  86. package/Materials/Background/backgroundMaterial.pure.js +3 -12
  87. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  88. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -0
  89. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  90. package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js +1 -1
  91. package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js.map +1 -1
  92. package/Materials/PBR/openpbrMaterial.pure.d.ts +1 -1
  93. package/Materials/PBR/openpbrMaterial.pure.js +3 -12
  94. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  95. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  96. package/Materials/PBR/pbrBaseMaterial.pure.js +3 -12
  97. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  98. package/Materials/Textures/renderTargetTexture.pure.js +1 -1
  99. package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
  100. package/Materials/material.pure.js +2 -2
  101. package/Materials/material.pure.js.map +1 -1
  102. package/Materials/standardMaterial.pure.d.ts +1 -1
  103. package/Materials/standardMaterial.pure.js +4 -13
  104. package/Materials/standardMaterial.pure.js.map +1 -1
  105. package/Maths/math.path.js +1 -1
  106. package/Maths/math.path.js.map +1 -1
  107. package/Maths/math.polar.js +1 -1
  108. package/Maths/math.polar.js.map +1 -1
  109. package/Maths/math.vector.pure.js +4 -3
  110. package/Maths/math.vector.pure.js.map +1 -1
  111. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +72 -0
  112. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +164 -1
  113. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  114. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -1
  115. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +36 -18
  116. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  117. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.d.ts +5 -4
  118. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js +25 -8
  119. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js.map +1 -1
  120. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  121. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js.map +1 -1
  122. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +1 -1
  123. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  124. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +2 -2
  125. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  126. package/Meshes/Node/Blocks/mappingBlock.pure.js +2 -2
  127. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  128. package/Meshes/csg.js +5 -5
  129. package/Meshes/csg.js.map +1 -1
  130. package/Meshes/groundMesh.pure.js +1 -1
  131. package/Meshes/groundMesh.pure.js.map +1 -1
  132. package/Meshes/mesh.pure.js +2 -2
  133. package/Meshes/mesh.pure.js.map +1 -1
  134. package/Misc/deepMerger.js +1 -1
  135. package/Misc/deepMerger.js.map +1 -1
  136. package/Misc/dumpTools.pure.js +1 -1
  137. package/Misc/dumpTools.pure.js.map +1 -1
  138. package/Misc/index.d.ts +1 -0
  139. package/Misc/index.js +1 -0
  140. package/Misc/index.js.map +1 -1
  141. package/Misc/pure.d.ts +1 -0
  142. package/Misc/pure.js +1 -0
  143. package/Misc/pure.js.map +1 -1
  144. package/Misc/shaderImportLoader.d.ts +25 -0
  145. package/Misc/shaderImportLoader.js +54 -0
  146. package/Misc/shaderImportLoader.js.map +1 -0
  147. package/Misc/tools.pure.js +1 -1
  148. package/Misc/tools.pure.js.map +1 -1
  149. package/Particles/Node/Blocks/particleClampBlock.pure.d.ts +0 -1
  150. package/Particles/Node/Blocks/particleClampBlock.pure.js +1 -6
  151. package/Particles/Node/Blocks/particleClampBlock.pure.js.map +1 -1
  152. package/Particles/Node/Blocks/particleMathBlock.pure.js +1 -1
  153. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  154. package/Particles/Node/Blocks/particleNLerpBlock.pure.js +8 -3
  155. package/Particles/Node/Blocks/particleNLerpBlock.pure.js.map +1 -1
  156. package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js +3 -2
  157. package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js.map +1 -1
  158. package/Particles/Node/Blocks/particleStepBlock.pure.js +3 -2
  159. package/Particles/Node/Blocks/particleStepBlock.pure.js.map +1 -1
  160. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +1 -1
  161. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  162. package/PostProcesses/depthOfFieldEffect.js +1 -1
  163. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  164. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +1 -1
  165. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  166. package/PostProcesses/sharpenPostProcess.pure.js +1 -1
  167. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  168. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.d.ts +12 -0
  169. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +15 -1
  170. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  171. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +14 -0
  172. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +122 -6
  173. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  174. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +7 -0
  175. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +17 -0
  176. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  177. package/Rendering/boundingBoxRenderer.pure.js +3 -3
  178. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  179. package/Rendering/outlineRenderer.pure.js +1 -0
  180. package/Rendering/outlineRenderer.pure.js.map +1 -1
  181. package/Rendering/subSurfaceConfiguration.js +1 -1
  182. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  183. package/Rendering/subSurfaceSceneComponent.pure.d.ts +1 -1
  184. package/Rendering/subSurfaceSceneComponent.pure.js +1 -1
  185. package/Rendering/subSurfaceSceneComponent.pure.js.map +1 -1
  186. package/Rendering/utilityLayerRenderer.js +1 -1
  187. package/Rendering/utilityLayerRenderer.js.map +1 -1
  188. package/Shaders/gaussianSplattingVoxel.fragment.js +4 -10
  189. package/Shaders/gaussianSplattingVoxel.fragment.js.map +1 -1
  190. package/Shaders/iblCombineVoxelGrids.fragment.js +1 -1
  191. package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -1
  192. package/Shaders/iblShadowVoxelTracing.fragment.js +24 -7
  193. package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
  194. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.d.ts +5 -0
  195. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js +13 -0
  196. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js.map +1 -0
  197. package/ShadersWGSL/gaussianSplattingVoxel.fragment.js +15 -9
  198. package/ShadersWGSL/gaussianSplattingVoxel.fragment.js.map +1 -1
  199. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +1 -1
  200. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -1
  201. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.d.ts +5 -0
  202. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js +14 -0
  203. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js.map +1 -0
  204. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +24 -7
  205. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
  206. package/ShadersWGSL/iblVoxelGrid.fragment.js +26 -6
  207. package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -1
  208. package/SmartAssets/smartAssetManager.pure.js +1 -1
  209. package/SmartAssets/smartAssetManager.pure.js.map +1 -1
  210. package/Sprites/thinSprite.js +1 -1
  211. package/Sprites/thinSprite.js.map +1 -1
  212. package/XR/features/Layers/WebXRCompositionLayer.d.ts +130 -12
  213. package/XR/features/Layers/WebXRCompositionLayer.js +192 -3
  214. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  215. package/XR/features/Layers/WebXRFallbackLayer.d.ts +84 -0
  216. package/XR/features/Layers/WebXRFallbackLayer.js +137 -0
  217. package/XR/features/Layers/WebXRFallbackLayer.js.map +1 -0
  218. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +4 -4
  219. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -1
  220. package/XR/features/WebXRAnchorSystem.pure.d.ts +45 -0
  221. package/XR/features/WebXRAnchorSystem.pure.js +153 -13
  222. package/XR/features/WebXRAnchorSystem.pure.js.map +1 -1
  223. package/XR/features/WebXRLayers.pure.d.ts +171 -8
  224. package/XR/features/WebXRLayers.pure.js +500 -98
  225. package/XR/features/WebXRLayers.pure.js.map +1 -1
  226. package/XR/features/WebXRLayersFallback.d.ts +5 -0
  227. package/XR/features/WebXRLayersFallback.js +8 -0
  228. package/XR/features/WebXRLayersFallback.js.map +1 -0
  229. package/XR/features/WebXRLayersFallback.pure.d.ts +6 -0
  230. package/XR/features/WebXRLayersFallback.pure.js +44 -0
  231. package/XR/features/WebXRLayersFallback.pure.js.map +1 -0
  232. package/XR/features/WebXRLightEstimation.pure.d.ts +3 -4
  233. package/XR/features/WebXRLightEstimation.pure.js +22 -21
  234. package/XR/features/WebXRLightEstimation.pure.js.map +1 -1
  235. package/XR/features/WebXRMeshDetector.pure.d.ts +5 -0
  236. package/XR/features/WebXRMeshDetector.pure.js +1 -0
  237. package/XR/features/WebXRMeshDetector.pure.js.map +1 -1
  238. package/XR/features/WebXRNearInteraction.pure.js +3 -3
  239. package/XR/features/WebXRNearInteraction.pure.js.map +1 -1
  240. package/XR/features/WebXRPlaneDetector.pure.d.ts +9 -5
  241. package/XR/features/WebXRPlaneDetector.pure.js +12 -8
  242. package/XR/features/WebXRPlaneDetector.pure.js.map +1 -1
  243. package/XR/features/pure.d.ts +1 -0
  244. package/XR/features/pure.js +1 -0
  245. package/XR/features/pure.js.map +1 -1
  246. package/XR/webXRCamera.d.ts +2 -0
  247. package/XR/webXRCamera.js +8 -2
  248. package/XR/webXRCamera.js.map +1 -1
  249. package/XR/webXRLayerWrapper.d.ts +19 -5
  250. package/XR/webXRLayerWrapper.js +9 -0
  251. package/XR/webXRLayerWrapper.js.map +1 -1
  252. package/XR/webXRRenderTargetTextureProvider.d.ts +4 -4
  253. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  254. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +2 -1
  255. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -1
  256. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +3 -3
  257. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -1
  258. package/package.json +1 -1
  259. package/scene.pure.d.ts +5 -0
  260. package/scene.pure.js +25 -0
  261. package/scene.pure.js.map +1 -1
@@ -1,13 +1,19 @@
1
1
  /** This file must only contain pure code and pure imports */
2
2
  import { type WebXRSessionManager } from "../webXRSessionManager.js";
3
3
  import { WebXRAbstractFeature } from "./WebXRAbstractFeature.js";
4
- import { type WebXRLayerWrapper } from "../webXRLayerWrapper.js";
4
+ import { type WebXRLayerWrapper, type WebXRSupportedLayerType } from "../webXRLayerWrapper.js";
5
5
  import { WebXRWebGLLayerWrapper } from "../webXRWebGLLayer.js";
6
6
  import { WebXRProjectionLayerWrapper } from "./Layers/WebXRProjectionLayer.js";
7
- import { WebXRCompositionLayerWrapper } from "./Layers/WebXRCompositionLayer.js";
7
+ import { WebXRCompositionLayerWrapper, WebXRCubeLayerWrapper, WebXRSpatialLayerWrapper, type WebXRSpatialLayer, type WebXRSpatialLayerType } from "./Layers/WebXRCompositionLayer.js";
8
8
  import { type DynamicTexture } from "../../Materials/Textures/dynamicTexture.pure.js";
9
9
  import { type LensFlareSystem } from "../../LensFlares/lensFlareSystem.js";
10
10
  import { type Nullable } from "../../types.js";
11
+ import { TransformNode } from "../../Meshes/transformNode.pure.js";
12
+ import { type BaseTexture } from "../../Materials/Textures/baseTexture.js";
13
+ import { type WebXRFallbackLayerWrapper, type IWebXRFallbackLayerDimensions } from "./Layers/WebXRFallbackLayer.js";
14
+ export { WebXRCompositionLayerWrapper, WebXRCubeLayerWrapper, WebXRMediaLayerWrapper, WebXRSpatialLayerWrapper } from "./Layers/WebXRCompositionLayer.js";
15
+ export type { WebXRSpatialLayer, WebXRSpatialLayerType } from "./Layers/WebXRCompositionLayer.js";
16
+ export type { IWebXRFallbackLayerDimensions, WebXRFallbackLayerWrapper } from "./Layers/WebXRFallbackLayer.js";
11
17
  /**
12
18
  * Configuration options of the layers feature
13
19
  */
@@ -22,6 +28,92 @@ export interface IWebXRLayersOptions {
22
28
  */
23
29
  projectionLayerInit?: Partial<XRProjectionLayerInit>;
24
30
  }
31
+ /**
32
+ * Common options for creating a graphics-backed WebXR composition layer.
33
+ * @typeParam TWebGLInit the WebGL layer initialization dictionary
34
+ * @typeParam TWebGPUInit the WebGPU layer initialization dictionary
35
+ */
36
+ export interface IWebXRCompositionLayerCreationOptions<TWebGLInit, TWebGPUInit> {
37
+ /**
38
+ * Initialization values shared with the WebGL Layers API.
39
+ * Babylon supplies the current reference space and projection-layer pixel dimensions when omitted.
40
+ */
41
+ layerInit?: Partial<TWebGLInit>;
42
+ /**
43
+ * WebGPU-specific initialization overrides.
44
+ * Shared spatial and layout values are copied from `layerInit` before these overrides are applied.
45
+ */
46
+ gpuLayerInit?: Partial<TWebGPUInit>;
47
+ /**
48
+ * A Babylon node whose world position and rotation will be synchronized with the layer.
49
+ * Babylon creates and owns a node when this is omitted.
50
+ */
51
+ transformNode?: TransformNode;
52
+ /**
53
+ * Uses a Babylon mesh when the requested native layer factory is unavailable.
54
+ * Import `@babylonjs/core/XR/features/WebXRLayersFallback` to enable this optional fallback.
55
+ * Fallback is disabled by default.
56
+ */
57
+ fallbackMode?: "none" | "mesh";
58
+ /**
59
+ * A texture to display on the fallback mesh.
60
+ * Required when `fallbackMode` is `"mesh"`.
61
+ */
62
+ fallbackTexture?: BaseTexture;
63
+ }
64
+ /**
65
+ * Common options for creating an XRMediaBinding layer.
66
+ * @typeParam InitT the media layer initialization dictionary
67
+ */
68
+ export interface IWebXRMediaLayerCreationOptions<InitT> {
69
+ /**
70
+ * Initialization values for the media layer.
71
+ * Babylon supplies the current reference space when omitted.
72
+ */
73
+ layerInit?: Partial<InitT>;
74
+ /**
75
+ * A Babylon node whose world position and rotation will be synchronized with the layer.
76
+ * Babylon creates and owns a node when this is omitted.
77
+ */
78
+ transformNode?: TransformNode;
79
+ /**
80
+ * Uses a Babylon mesh and VideoTexture when XRMediaBinding is unavailable.
81
+ * Import `@babylonjs/core/XR/features/WebXRLayersFallback` to enable this optional fallback.
82
+ * Fallback is disabled by default.
83
+ */
84
+ fallbackMode?: "none" | "mesh";
85
+ }
86
+ /**
87
+ * Selects whether a layer is created from a graphics binding or directly from a media element.
88
+ */
89
+ export type WebXRLayerSource = "graphics" | "media";
90
+ /**
91
+ * The result of creating a spatial WebXR layer.
92
+ * Native wrappers expose an XR composition layer, while fallback wrappers expose a Babylon mesh.
93
+ * @typeParam LayerT the native layer type
94
+ */
95
+ export type WebXRLayerCreationResult<LayerT extends WebXRSpatialLayer, LayerTypeT extends WebXRSpatialLayerType = WebXRSpatialLayerType> = WebXRSpatialLayerWrapper<LayerT, LayerTypeT> | WebXRFallbackLayerWrapper;
96
+ /**
97
+ * Data supplied to an optional WebXR mesh-fallback implementation.
98
+ * @internal
99
+ */
100
+ export interface IWebXRFallbackLayerCreationContext {
101
+ scene: WebXRSessionManager["scene"];
102
+ isWebGPU: boolean;
103
+ layerType: WebXRSpatialLayerType;
104
+ transformNode: TransformNode;
105
+ ownsTransformNode: boolean;
106
+ dimensions: IWebXRFallbackLayerDimensions;
107
+ worldScalingFactor: number;
108
+ texture?: BaseTexture;
109
+ video?: HTMLVideoElement;
110
+ }
111
+ /**
112
+ * Registers the optional mesh-fallback implementation without making its rendering dependencies part of projection-only bundles.
113
+ * @param factory creates a fallback wrapper
114
+ * @internal
115
+ */
116
+ export declare function _RegisterWebXRFallbackLayerFactory(factory: (context: IWebXRFallbackLayerCreationContext) => Nullable<WebXRFallbackLayerWrapper>): void;
25
117
  /**
26
118
  * Exposes the WebXR Layers API.
27
119
  */
@@ -41,14 +133,17 @@ export declare class WebXRLayers extends WebXRAbstractFeature {
41
133
  * Already-created layers
42
134
  */
43
135
  private _existingLayers;
136
+ private _fallbackLayers;
44
137
  private _glContext;
45
138
  private _xrWebGLBinding;
46
139
  private _isWebGPU;
47
140
  private _xrGPUBinding?;
141
+ private _xrMediaBinding?;
48
142
  private _isMultiviewEnabled;
49
143
  private _projectionLayerInitialized;
50
144
  private _compositionLayerTextureMapping;
51
145
  private _layerToRTTProviderMapping;
146
+ private _layerCleanupFunctions;
52
147
  constructor(_xrSessionManager: WebXRSessionManager, _options?: IWebXRLayersOptions);
53
148
  /**
54
149
  * Attach this feature.
@@ -66,6 +161,11 @@ export declare class WebXRLayers extends WebXRAbstractFeature {
66
161
  createXRWebGLLayer(params?: XRWebGLLayerInit): WebXRWebGLLayerWrapper;
67
162
  private _validateLayerInit;
68
163
  private _extendXRLayerInit;
164
+ private _getProjectionLayerDimensions;
165
+ private _createTransformNode;
166
+ private _createFallbackLayer;
167
+ private _createGraphicsLayer;
168
+ private _createMediaLayer;
69
169
  /**
70
170
  * Creates a new XRProjectionLayer.
71
171
  * @param params an object providing configuration options for the new XRProjectionLayer.
@@ -80,11 +180,52 @@ export declare class WebXRLayers extends WebXRAbstractFeature {
80
180
  */
81
181
  private _createWebGPUProjectionLayer;
82
182
  /**
83
- * Note about making it private - this function will be exposed once I decide on a proper API to support all of the XR layers' options
84
- * @param options an object providing configuration options for the new XRQuadLayer.
85
- * @param babylonTexture the texture to display in the layer
86
- * @returns the quad layer, or null when the WebGPU binding lacks quad-layer support
183
+ * Creates a graphics-backed quad layer and adds it to the current XR session.
184
+ * @param options initialization and transform-node options for the layer
185
+ * @returns the created layer wrapper, or `null` when the active graphics binding does not support quad layers
186
+ */
187
+ createQuadLayer(options?: IWebXRCompositionLayerCreationOptions<XRQuadLayerInit, XRGPUQuadLayerInit>): Nullable<WebXRLayerCreationResult<XRQuadLayer, "XRQuadLayer">>;
188
+ /**
189
+ * Creates a graphics-backed cylinder layer and adds it to the current XR session.
190
+ * @param options initialization and transform-node options for the layer
191
+ * @returns the created layer wrapper, or `null` when the active graphics binding does not support cylinder layers
192
+ */
193
+ createCylinderLayer(options?: IWebXRCompositionLayerCreationOptions<XRCylinderLayerInit, XRGPUCylinderLayerInit>): Nullable<WebXRLayerCreationResult<XRCylinderLayer, "XRCylinderLayer">>;
194
+ /**
195
+ * Creates a graphics-backed equirectangular layer and adds it to the current XR session.
196
+ * @param options initialization and transform-node options for the layer
197
+ * @returns the created layer wrapper, or `null` when the active graphics binding does not support equirectangular layers
198
+ */
199
+ createEquirectLayer(options?: IWebXRCompositionLayerCreationOptions<XREquirectLayerInit, XRGPUEquirectLayerInit>): Nullable<WebXRLayerCreationResult<XREquirectLayer, "XREquirectLayer">>;
200
+ /**
201
+ * Creates a graphics-backed cube layer and adds it to the current XR session.
202
+ * Cube layers synchronize only the rotation of their transform node because the WebXR API does not support cube-layer translation.
203
+ * @param options initialization and transform-node options for the layer
204
+ * @returns the created layer wrapper, or `null` when the active graphics binding does not support cube layers
87
205
  */
206
+ createCubeLayer(options?: IWebXRCompositionLayerCreationOptions<XRCubeLayerInit, XRGPUCubeLayerInit>): Nullable<WebXRCubeLayerWrapper | WebXRFallbackLayerWrapper>;
207
+ /**
208
+ * Creates a video-backed quad layer and adds it to the current XR session.
209
+ * @see https://playground.babylonjs.com/#D35HOL#0
210
+ * @param video the video element presented by the XR compositor
211
+ * @param options initialization and transform-node options for the layer
212
+ * @returns the created media layer wrapper, or `null` when XRMediaBinding is unavailable
213
+ */
214
+ createMediaQuadLayer(video: HTMLVideoElement, options?: IWebXRMediaLayerCreationOptions<XRMediaQuadLayerInit>): Nullable<WebXRLayerCreationResult<XRQuadLayer, "XRQuadLayer">>;
215
+ /**
216
+ * Creates a video-backed cylinder layer and adds it to the current XR session.
217
+ * @param video the video element presented by the XR compositor
218
+ * @param options initialization and transform-node options for the layer
219
+ * @returns the created media layer wrapper, or `null` when XRMediaBinding is unavailable
220
+ */
221
+ createMediaCylinderLayer(video: HTMLVideoElement, options?: IWebXRMediaLayerCreationOptions<XRMediaCylinderLayerInit>): Nullable<WebXRLayerCreationResult<XRCylinderLayer, "XRCylinderLayer">>;
222
+ /**
223
+ * Creates a video-backed equirectangular layer and adds it to the current XR session.
224
+ * @param video the video element presented by the XR compositor
225
+ * @param options initialization and transform-node options for the layer
226
+ * @returns the created media layer wrapper, or `null` when XRMediaBinding is unavailable
227
+ */
228
+ createMediaEquirectLayer(video: HTMLVideoElement, options?: IWebXRMediaLayerCreationOptions<XRMediaEquirectLayerInit>): Nullable<WebXRLayerCreationResult<XREquirectLayer, "XREquirectLayer">>;
88
229
  private _createQuadLayer;
89
230
  /**
90
231
  * @experimental
@@ -110,7 +251,21 @@ export declare class WebXRLayers extends WebXRAbstractFeature {
110
251
  * Add a new layer to the already-existing list of layers
111
252
  * @param wrappedLayer the new layer to add to the existing ones
112
253
  */
113
- addXRSessionLayer(wrappedLayer: WebXRLayerWrapper): void;
254
+ addXRSessionLayer(wrappedLayer: WebXRLayerWrapper<WebXRSupportedLayerType>): void;
255
+ /**
256
+ * Removes a non-projection layer from the current XR session.
257
+ * @param wrappedLayer the layer wrapper to remove
258
+ * @param dispose whether to dispose the wrapper and destroy its native composition layer
259
+ * @returns whether the layer was present and removed
260
+ */
261
+ removeXRSessionLayer(wrappedLayer: WebXRLayerWrapper<WebXRSupportedLayerType>, dispose?: boolean): boolean;
262
+ /**
263
+ * Removes either a native spatial layer or a fallback layer created by this feature.
264
+ * @param wrappedLayer the native or fallback layer wrapper to remove
265
+ * @param dispose whether to dispose resources owned by the wrapper
266
+ * @returns whether the wrapper was present and removed
267
+ */
268
+ removeLayer(wrappedLayer: WebXRLayerCreationResult<WebXRSpatialLayer>, dispose?: boolean): boolean;
114
269
  /**
115
270
  * Sets the layers to be used by the XR session.
116
271
  * Note that you must call this function with any layers you wish to render to
@@ -120,7 +275,15 @@ export declare class WebXRLayers extends WebXRAbstractFeature {
120
275
  * as the first layer in the array, which feeds the WebXR camera(s) attached to the session.
121
276
  * @param wrappedLayers An array of WebXRLayerWrapper, usually returned from the WebXRLayers createLayer functions.
122
277
  */
123
- setXRSessionLayers(wrappedLayers?: Array<WebXRLayerWrapper>): void;
278
+ setXRSessionLayers(wrappedLayers?: Array<WebXRLayerWrapper<WebXRSupportedLayerType>>): void;
279
+ /**
280
+ * Checks whether the active runtime exposes the factory needed for a layer type.
281
+ * This is a capability check only; creation can still fail when an initialization dictionary is invalid.
282
+ * @param layerType the concrete WebXR layer type
283
+ * @param source whether to check a graphics-backed or media-backed layer
284
+ * @returns whether the requested factory is available
285
+ */
286
+ isLayerTypeSupported(layerType: WebXRSpatialLayerType | "XRProjectionLayer", source?: WebXRLayerSource): boolean;
124
287
  isCompatible(): boolean;
125
288
  /**
126
289
  * Dispose this feature and all of the resources attached.