@babylonjs/core 6.33.1 → 6.34.0-alpha.0

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 (488) hide show
  1. package/Animations/animation.js +1 -1
  2. package/Animations/animation.js.map +1 -1
  3. package/Animations/animationGroup.js +2 -2
  4. package/Animations/animationGroup.js.map +1 -1
  5. package/Animations/animationGroupMask.d.ts +4 -0
  6. package/Animations/animationGroupMask.js +4 -0
  7. package/Animations/animationGroupMask.js.map +1 -1
  8. package/Buffers/storageBuffer.d.ts +2 -1
  9. package/Buffers/storageBuffer.js +3 -2
  10. package/Buffers/storageBuffer.js.map +1 -1
  11. package/Cameras/Inputs/followCameraMouseWheelInput.js +12 -9
  12. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  13. package/Cameras/Inputs/followCameraPointersInput.js +28 -9
  14. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  15. package/Cameras/arcRotateCamera.js +1 -1
  16. package/Cameras/arcRotateCamera.js.map +1 -1
  17. package/Cameras/followCameraInputsManager.js +2 -1
  18. package/Cameras/followCameraInputsManager.js.map +1 -1
  19. package/Compute/computeShader.d.ts +5 -0
  20. package/Compute/computeShader.js +42 -32
  21. package/Compute/computeShader.js.map +1 -1
  22. package/Debug/skeletonViewer.js +2 -1
  23. package/Debug/skeletonViewer.js.map +1 -1
  24. package/Engines/Extensions/engine.alpha.js +8 -116
  25. package/Engines/Extensions/engine.alpha.js.map +1 -1
  26. package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
  27. package/Engines/Extensions/engine.cubeTexture.js +11 -213
  28. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  29. package/Engines/Extensions/engine.dynamicBuffer.js +5 -42
  30. package/Engines/Extensions/engine.dynamicBuffer.js.map +1 -1
  31. package/Engines/Extensions/engine.dynamicTexture.d.ts +1 -1
  32. package/Engines/Extensions/engine.dynamicTexture.js +5 -47
  33. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  34. package/Engines/Extensions/engine.multiRender.js +11 -341
  35. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  36. package/Engines/Extensions/engine.multiview.js +6 -57
  37. package/Engines/Extensions/engine.multiview.js.map +1 -1
  38. package/Engines/Extensions/engine.query.d.ts +8 -2
  39. package/Engines/Extensions/engine.query.js +44 -152
  40. package/Engines/Extensions/engine.query.js.map +1 -1
  41. package/Engines/Extensions/engine.rawTexture.d.ts +1 -1
  42. package/Engines/Extensions/engine.rawTexture.js +20 -361
  43. package/Engines/Extensions/engine.rawTexture.js.map +1 -1
  44. package/Engines/Extensions/engine.readTexture.js +6 -112
  45. package/Engines/Extensions/engine.readTexture.js.map +1 -1
  46. package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
  47. package/Engines/Extensions/engine.renderTarget.js +8 -173
  48. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  49. package/Engines/Extensions/engine.renderTargetCube.js +4 -55
  50. package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
  51. package/Engines/Extensions/engine.storageBuffer.d.ts +2 -1
  52. package/Engines/Extensions/engine.storageBuffer.js.map +1 -1
  53. package/Engines/Extensions/engine.textureSelector.js +11 -52
  54. package/Engines/Extensions/engine.textureSelector.js.map +1 -1
  55. package/Engines/Extensions/engine.transformFeedback.js +10 -11
  56. package/Engines/Extensions/engine.transformFeedback.js.map +1 -1
  57. package/Engines/Extensions/engine.uniformBuffer.js +9 -59
  58. package/Engines/Extensions/engine.uniformBuffer.js.map +1 -1
  59. package/Engines/Extensions/engine.videoTexture.js +4 -54
  60. package/Engines/Extensions/engine.videoTexture.js.map +1 -1
  61. package/Engines/Extensions/engine.views.d.ts +2 -24
  62. package/Engines/Extensions/engine.views.js +17 -136
  63. package/Engines/Extensions/engine.views.js.map +1 -1
  64. package/Engines/Processors/shaderCodeInliner.js +15 -14
  65. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  66. package/Engines/WebGPU/Extensions/engine.computeShader.js +7 -4
  67. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  68. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +14 -5
  69. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
  70. package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
  71. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  72. package/Engines/WebGPU/webgpuTintWASM.js +3 -2
  73. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  74. package/Engines/engine.d.ts +31 -74
  75. package/Engines/engine.js +322 -773
  76. package/Engines/engine.js.map +1 -1
  77. package/Engines/nativeEngine.d.ts +1 -1
  78. package/Engines/nativeEngine.js.map +1 -1
  79. package/Engines/nullEngine.d.ts +1 -1
  80. package/Engines/nullEngine.js.map +1 -1
  81. package/Engines/thinEngine.d.ts +160 -151
  82. package/Engines/thinEngine.js +712 -3280
  83. package/Engines/thinEngine.js.map +1 -1
  84. package/Engines/webgpuEngine.d.ts +5 -8
  85. package/Engines/webgpuEngine.js +143 -112
  86. package/Engines/webgpuEngine.js.map +1 -1
  87. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.d.ts +296 -0
  88. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js +758 -0
  89. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js.map +1 -0
  90. package/FlowGraph/Blocks/Data/Math/index.d.ts +1 -5
  91. package/FlowGraph/Blocks/Data/Math/index.js +1 -5
  92. package/FlowGraph/Blocks/Data/Math/index.js.map +1 -1
  93. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.d.ts +2 -2
  94. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js +3 -3
  95. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  96. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  97. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +3 -3
  98. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  99. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.d.ts +1 -0
  100. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js +5 -0
  101. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  102. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.d.ts +25 -0
  103. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js +22 -0
  104. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -0
  105. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.d.ts +11 -5
  106. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js +12 -6
  107. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  108. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.d.ts +19 -0
  109. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js +22 -0
  110. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -0
  111. package/FlowGraph/Blocks/Data/index.d.ts +1 -0
  112. package/FlowGraph/Blocks/Data/index.js +1 -0
  113. package/FlowGraph/Blocks/Data/index.js.map +1 -1
  114. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.d.ts +10 -5
  115. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +15 -5
  116. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  117. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +1 -0
  118. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +2 -1
  119. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  120. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.d.ts +1 -0
  121. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js +3 -2
  122. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  123. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.d.ts +2 -2
  124. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js +3 -3
  125. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  126. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +0 -5
  127. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +2 -3
  128. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  129. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.d.ts +2 -2
  130. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js +3 -3
  131. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  132. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.d.ts +2 -2
  133. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js +3 -3
  134. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -1
  135. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.d.ts +2 -2
  136. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js +2 -2
  137. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -1
  138. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.d.ts +2 -2
  139. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js +3 -3
  140. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  141. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.d.ts +2 -2
  142. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js +3 -3
  143. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  144. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +13 -5
  145. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +14 -12
  146. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  147. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.d.ts +2 -6
  148. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js +3 -4
  149. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  150. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.d.ts +16 -0
  151. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js +26 -0
  152. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -0
  153. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.d.ts +2 -2
  154. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +3 -3
  155. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  156. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.d.ts +1 -6
  157. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js +4 -4
  158. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  159. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.d.ts +2 -2
  160. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js +4 -4
  161. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  162. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.d.ts +3 -2
  163. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js +6 -5
  164. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  165. package/FlowGraph/Blocks/Execution/ControlFlow/index.d.ts +1 -0
  166. package/FlowGraph/Blocks/Execution/ControlFlow/index.js +1 -0
  167. package/FlowGraph/Blocks/Execution/ControlFlow/index.js.map +1 -1
  168. package/FlowGraph/Blocks/Execution/{flowGraphLogBlock.d.ts → flowGraphConsoleLogBlock.d.ts} +3 -2
  169. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +29 -0
  170. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -0
  171. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.d.ts +16 -8
  172. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js +17 -10
  173. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  174. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.d.ts +4 -3
  175. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +7 -6
  176. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  177. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +12 -7
  178. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +10 -9
  179. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  180. package/FlowGraph/Blocks/Execution/index.d.ts +1 -2
  181. package/FlowGraph/Blocks/Execution/index.js +1 -3
  182. package/FlowGraph/Blocks/Execution/index.js.map +1 -1
  183. package/FlowGraph/flowGraph.d.ts +3 -1
  184. package/FlowGraph/flowGraph.js +6 -2
  185. package/FlowGraph/flowGraph.js.map +1 -1
  186. package/FlowGraph/flowGraphAsyncExecutionBlock.d.ts +6 -2
  187. package/FlowGraph/flowGraphAsyncExecutionBlock.js +2 -1
  188. package/FlowGraph/flowGraphAsyncExecutionBlock.js.map +1 -1
  189. package/FlowGraph/flowGraphBlock.d.ts +7 -2
  190. package/FlowGraph/flowGraphBlock.js +21 -19
  191. package/FlowGraph/flowGraphBlock.js.map +1 -1
  192. package/FlowGraph/flowGraphContext.d.ts +9 -5
  193. package/FlowGraph/flowGraphContext.js +7 -2
  194. package/FlowGraph/flowGraphContext.js.map +1 -1
  195. package/FlowGraph/flowGraphCoordinator.d.ts +4 -5
  196. package/FlowGraph/flowGraphCoordinator.js +12 -7
  197. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  198. package/FlowGraph/flowGraphEventBlock.js +1 -1
  199. package/FlowGraph/flowGraphEventBlock.js.map +1 -1
  200. package/FlowGraph/flowGraphExecutionBlock.d.ts +4 -2
  201. package/FlowGraph/flowGraphExecutionBlock.js +25 -9
  202. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  203. package/FlowGraph/flowGraphPath.d.ts +20 -2
  204. package/FlowGraph/flowGraphPath.js +27 -7
  205. package/FlowGraph/flowGraphPath.js.map +1 -1
  206. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.d.ts +3 -3
  207. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js +3 -3
  208. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js.map +1 -1
  209. package/FlowGraph/index.d.ts +3 -0
  210. package/FlowGraph/index.js +3 -0
  211. package/FlowGraph/index.js.map +1 -1
  212. package/FlowGraph/serialization.js +20 -6
  213. package/FlowGraph/serialization.js.map +1 -1
  214. package/FlowGraph/typeDefinitions.d.ts +33 -0
  215. package/FlowGraph/typeDefinitions.js +2 -0
  216. package/FlowGraph/typeDefinitions.js.map +1 -0
  217. package/Gizmos/axisScaleGizmo.d.ts +1 -0
  218. package/Gizmos/axisScaleGizmo.js +12 -0
  219. package/Gizmos/axisScaleGizmo.js.map +1 -1
  220. package/Gizmos/lightGizmo.js +2 -1
  221. package/Gizmos/lightGizmo.js.map +1 -1
  222. package/Gizmos/rotationGizmo.js +1 -1
  223. package/Gizmos/rotationGizmo.js.map +1 -1
  224. package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
  225. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  226. package/Lights/light.d.ts +15 -0
  227. package/Lights/light.js +18 -0
  228. package/Lights/light.js.map +1 -1
  229. package/Lights/shadowLight.d.ts +18 -1
  230. package/Lights/shadowLight.js +34 -1
  231. package/Lights/shadowLight.js.map +1 -1
  232. package/Materials/Node/Blocks/Dual/lightBlock.js +2 -1
  233. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +3 -2
  235. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  236. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +2 -1
  237. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +2 -1
  239. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -1
  241. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  242. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +3 -2
  243. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
  245. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  246. package/Materials/Node/nodeMaterial.js +9 -8
  247. package/Materials/Node/nodeMaterial.js.map +1 -1
  248. package/Materials/Node/nodeMaterialBlock.js +2 -1
  249. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  250. package/Materials/drawWrapper.js +3 -2
  251. package/Materials/drawWrapper.js.map +1 -1
  252. package/Materials/effect.js +2 -1
  253. package/Materials/effect.js.map +1 -1
  254. package/Materials/material.js +2 -1
  255. package/Materials/material.js.map +1 -1
  256. package/Materials/uniformBuffer.d.ts +4 -1
  257. package/Materials/uniformBuffer.js +5 -2
  258. package/Materials/uniformBuffer.js.map +1 -1
  259. package/Meshes/Node/nodeGeometryBlock.js +11 -2
  260. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  261. package/Meshes/abstractMesh.js +3 -1
  262. package/Meshes/abstractMesh.js.map +1 -1
  263. package/Misc/assetsManager.js +2 -2
  264. package/Misc/assetsManager.js.map +1 -1
  265. package/Misc/dds.d.ts +2 -0
  266. package/Misc/dds.js +27 -23
  267. package/Misc/dds.js.map +1 -1
  268. package/Misc/logger.d.ts +3 -3
  269. package/Misc/logger.js +8 -4
  270. package/Misc/logger.js.map +1 -1
  271. package/Misc/sceneSerializer.js +2 -1
  272. package/Misc/sceneSerializer.js.map +1 -1
  273. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  274. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  275. package/Physics/v2/Plugins/havokPlugin.js +1 -1
  276. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  277. package/Physics/v2/index.d.ts +1 -0
  278. package/Physics/v2/index.js +1 -0
  279. package/Physics/v2/index.js.map +1 -1
  280. package/Physics/v2/ragdoll.d.ts +107 -0
  281. package/Physics/v2/ragdoll.js +228 -0
  282. package/Physics/v2/ragdoll.js.map +1 -0
  283. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
  284. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  285. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +3 -2
  286. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  287. package/PostProcesses/index.d.ts +1 -1
  288. package/PostProcesses/index.js +1 -1
  289. package/PostProcesses/index.js.map +1 -1
  290. package/PostProcesses/passPostProcess.d.ts +1 -0
  291. package/PostProcesses/passPostProcess.js +6 -2
  292. package/PostProcesses/passPostProcess.js.map +1 -1
  293. package/PostProcesses/screenSpaceCurvaturePostProcess.js +1 -1
  294. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  295. package/PostProcesses/screenSpaceReflectionPostProcess.js +3 -2
  296. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  297. package/Rendering/depthPeelingRenderer.js +2 -1
  298. package/Rendering/depthPeelingRenderer.js.map +1 -1
  299. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -2
  300. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  301. package/XR/features/WebXRControllerPhysics.js +2 -2
  302. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  303. package/XR/features/WebXRMeshDetector.d.ts +14 -2
  304. package/XR/features/WebXRMeshDetector.js +45 -9
  305. package/XR/features/WebXRMeshDetector.js.map +1 -1
  306. package/XR/features/WebXRWalkingLocomotion.js +1 -1
  307. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  308. package/XR/webXRExperienceHelper.js +2 -2
  309. package/XR/webXRExperienceHelper.js.map +1 -1
  310. package/assetContainer.js +2 -2
  311. package/assetContainer.js.map +1 -1
  312. package/esm/Engines/Extensions/alpha/alpha.base.d.ts +34 -0
  313. package/esm/Engines/Extensions/alpha/alpha.base.js +2 -0
  314. package/esm/Engines/Extensions/alpha/alpha.base.js.map +1 -0
  315. package/esm/Engines/Extensions/computeShaders/computeShaders.base.d.ts +87 -0
  316. package/esm/Engines/Extensions/computeShaders/computeShaders.base.js +12 -0
  317. package/esm/Engines/Extensions/computeShaders/computeShaders.base.js.map +1 -0
  318. package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.d.ts +79 -0
  319. package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js +2 -0
  320. package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js.map +1 -0
  321. package/esm/Engines/Extensions/debugging/debugging.base.d.ts +11 -0
  322. package/esm/Engines/Extensions/debugging/debugging.base.js +2 -0
  323. package/esm/Engines/Extensions/debugging/debugging.base.js.map +1 -0
  324. package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.d.ts +20 -0
  325. package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js +2 -0
  326. package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js.map +1 -0
  327. package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.d.ts +26 -0
  328. package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js +2 -0
  329. package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js.map +1 -0
  330. package/esm/Engines/Extensions/engine.extensions.d.ts +67 -0
  331. package/esm/Engines/Extensions/engine.extensions.js +49 -0
  332. package/esm/Engines/Extensions/engine.extensions.js.map +1 -0
  333. package/esm/Engines/Extensions/externalTexture/externalTexture.base.d.ts +16 -0
  334. package/esm/Engines/Extensions/externalTexture/externalTexture.base.js +2 -0
  335. package/esm/Engines/Extensions/externalTexture/externalTexture.base.js.map +1 -0
  336. package/esm/Engines/Extensions/multiRender/multiRender.base.d.ts +54 -0
  337. package/esm/Engines/Extensions/multiRender/multiRender.base.js +2 -0
  338. package/esm/Engines/Extensions/multiRender/multiRender.base.js.map +1 -0
  339. package/esm/Engines/Extensions/multiview/multiview.base.d.ts +67 -0
  340. package/esm/Engines/Extensions/multiview/multiview.base.js +79 -0
  341. package/esm/Engines/Extensions/multiview/multiview.base.js.map +1 -0
  342. package/esm/Engines/Extensions/query/query.base.d.ts +164 -0
  343. package/esm/Engines/Extensions/query/query.base.js +168 -0
  344. package/esm/Engines/Extensions/query/query.base.js.map +1 -0
  345. package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.d.ts +187 -0
  346. package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js +2 -0
  347. package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js.map +1 -0
  348. package/esm/Engines/Extensions/readTexture/readTexture.base.d.ts +9 -0
  349. package/esm/Engines/Extensions/readTexture/readTexture.base.js +2 -0
  350. package/esm/Engines/Extensions/readTexture/readTexture.base.js.map +1 -0
  351. package/esm/Engines/Extensions/renderTarget/renderTarget.base.d.ts +35 -0
  352. package/esm/Engines/Extensions/renderTarget/renderTarget.base.js +2 -0
  353. package/esm/Engines/Extensions/renderTarget/renderTarget.base.js.map +1 -0
  354. package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.d.ts +12 -0
  355. package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js +2 -0
  356. package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js.map +1 -0
  357. package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.d.ts +36 -0
  358. package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js +2 -0
  359. package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js.map +1 -0
  360. package/esm/Engines/Extensions/textureSampler/textureSampler.base.d.ts +11 -0
  361. package/esm/Engines/Extensions/textureSampler/textureSampler.base.js +2 -0
  362. package/esm/Engines/Extensions/textureSampler/textureSampler.base.js.map +1 -0
  363. package/esm/Engines/Extensions/textureSelector/textureSelector.base.d.ts +50 -0
  364. package/esm/Engines/Extensions/textureSelector/textureSelector.base.js +53 -0
  365. package/esm/Engines/Extensions/textureSelector/textureSelector.base.js.map +1 -0
  366. package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.d.ts +42 -0
  367. package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js +2 -0
  368. package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js.map +1 -0
  369. package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.d.ts +48 -0
  370. package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js +2 -0
  371. package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js.map +1 -0
  372. package/esm/Engines/Extensions/videoTexture/videoTexture.base.d.ts +13 -0
  373. package/esm/Engines/Extensions/videoTexture/videoTexture.base.js +2 -0
  374. package/esm/Engines/Extensions/videoTexture/videoTexture.base.js.map +1 -0
  375. package/esm/Engines/Extensions/views/views.base.d.ts +85 -0
  376. package/esm/Engines/Extensions/views/views.base.js +33 -0
  377. package/esm/Engines/Extensions/views/views.base.js.map +1 -0
  378. package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.d.ts +8 -0
  379. package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js +137 -0
  380. package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js.map +1 -0
  381. package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.d.ts +11 -0
  382. package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js +251 -0
  383. package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js.map +1 -0
  384. package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.d.ts +5 -0
  385. package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js +55 -0
  386. package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js.map +1 -0
  387. package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.d.ts +5 -0
  388. package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js +65 -0
  389. package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js.map +1 -0
  390. package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.d.ts +10 -0
  391. package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js +375 -0
  392. package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js.map +1 -0
  393. package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.d.ts +6 -0
  394. package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js +77 -0
  395. package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js.map +1 -0
  396. package/esm/Engines/WebGL/Extensions/query/query.webgl.d.ts +21 -0
  397. package/esm/Engines/WebGL/Extensions/query/query.webgl.js +220 -0
  398. package/esm/Engines/WebGL/Extensions/query/query.webgl.js.map +1 -0
  399. package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.d.ts +15 -0
  400. package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js +392 -0
  401. package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js.map +1 -0
  402. package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.d.ts +17 -0
  403. package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js +133 -0
  404. package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js.map +1 -0
  405. package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.d.ts +8 -0
  406. package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js +199 -0
  407. package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js.map +1 -0
  408. package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.d.ts +2 -0
  409. package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js +62 -0
  410. package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js.map +1 -0
  411. package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.d.ts +5 -0
  412. package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js +28 -0
  413. package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js.map +1 -0
  414. package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.d.ts +11 -0
  415. package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js +45 -0
  416. package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js.map +1 -0
  417. package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.d.ts +9 -0
  418. package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js +78 -0
  419. package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js.map +1 -0
  420. package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.d.ts +4 -0
  421. package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js +67 -0
  422. package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js.map +1 -0
  423. package/esm/Engines/WebGL/Extensions/views/views.webgl.d.ts +18 -0
  424. package/esm/Engines/WebGL/Extensions/views/views.webgl.js +152 -0
  425. package/esm/Engines/WebGL/Extensions/views/views.webgl.js.map +1 -0
  426. package/esm/Engines/WebGL/engine.adapterHelpers.d.ts +43 -0
  427. package/esm/Engines/WebGL/engine.adapterHelpers.js +107 -0
  428. package/esm/Engines/WebGL/engine.adapterHelpers.js.map +1 -0
  429. package/esm/Engines/WebGL/engine.webgl.d.ts +1030 -0
  430. package/esm/Engines/WebGL/engine.webgl.js +4083 -0
  431. package/esm/Engines/WebGL/engine.webgl.js.map +1 -0
  432. package/esm/Engines/WebGPU/engine.adapterHelpers.d.ts +7 -0
  433. package/esm/Engines/WebGPU/engine.adapterHelpers.js +20 -0
  434. package/esm/Engines/WebGPU/engine.adapterHelpers.js.map +1 -0
  435. package/esm/Engines/WebGPU/engine.webgpu.constants.d.ts +391 -0
  436. package/esm/Engines/WebGPU/engine.webgpu.constants.js +2 -0
  437. package/esm/Engines/WebGPU/engine.webgpu.constants.js.map +1 -0
  438. package/esm/Engines/WebGPU/engine.webgpu.d.ts +277 -0
  439. package/esm/Engines/WebGPU/engine.webgpu.js +1281 -0
  440. package/esm/Engines/WebGPU/engine.webgpu.js.map +1 -0
  441. package/esm/Engines/engine.adapters.d.ts +32 -0
  442. package/esm/Engines/engine.adapters.js +27 -0
  443. package/esm/Engines/engine.adapters.js.map +1 -0
  444. package/esm/Engines/engine.base.d.ts +807 -0
  445. package/esm/Engines/engine.base.js +1235 -0
  446. package/esm/Engines/engine.base.js.map +1 -0
  447. package/esm/Engines/engine.constants.d.ts +735 -0
  448. package/esm/Engines/engine.constants.js +3 -0
  449. package/esm/Engines/engine.constants.js.map +1 -0
  450. package/esm/Engines/engine.extendable.d.ts +180 -0
  451. package/esm/Engines/engine.extendable.js +477 -0
  452. package/esm/Engines/engine.extendable.js.map +1 -0
  453. package/esm/Engines/engine.interfaces.d.ts +16 -0
  454. package/esm/Engines/engine.interfaces.js +9 -0
  455. package/esm/Engines/engine.interfaces.js.map +1 -0
  456. package/esm/Engines/engine.static.d.ts +215 -0
  457. package/esm/Engines/engine.static.js +345 -0
  458. package/esm/Engines/engine.static.js.map +1 -0
  459. package/esm/Engines/engine.tools.d.ts +20 -0
  460. package/esm/Engines/engine.tools.js +33 -0
  461. package/esm/Engines/engine.tools.js.map +1 -0
  462. package/esm/Engines/public.d.ts +1 -0
  463. package/esm/Engines/public.js +2 -0
  464. package/esm/Engines/public.js.map +1 -0
  465. package/esm/Engines/runtimeEnvironment.d.ts +37 -0
  466. package/esm/Engines/runtimeEnvironment.js +56 -0
  467. package/esm/Engines/runtimeEnvironment.js.map +1 -0
  468. package/package.json +2 -1
  469. package/scene.d.ts +1 -2
  470. package/scene.js +1 -1
  471. package/scene.js.map +1 -1
  472. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.d.ts +0 -172
  473. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js +0 -235
  474. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js.map +0 -1
  475. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.d.ts +0 -269
  476. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js +0 -429
  477. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js.map +0 -1
  478. package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.d.ts +0 -115
  479. package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js +0 -146
  480. package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js.map +0 -1
  481. package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.d.ts +0 -155
  482. package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js +0 -190
  483. package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js.map +0 -1
  484. package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.d.ts +0 -116
  485. package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js +0 -144
  486. package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js.map +0 -1
  487. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js +0 -27
  488. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuShaderProcessor.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuShaderProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable babylonjs/available */\r\n/* eslint-disable jsdoc/require-jsdoc */\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { IShaderProcessor } from \"../Processors/iShaderProcessor\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport type { WebGPUSamplerDescription, WebGPUShaderProcessingContext, WebGPUTextureDescription, WebGPUBufferDescription } from \"./webgpuShaderProcessingContext\";\r\n\r\n/** @internal */\r\nexport abstract class WebGPUShaderProcessor implements IShaderProcessor {\r\n public static readonly AutoSamplerSuffix = \"Sampler\";\r\n public static readonly LeftOvertUBOName = \"LeftOver\";\r\n public static readonly InternalsUBOName = \"Internals\";\r\n\r\n public static UniformSizes: { [type: string]: number } = {\r\n // GLSL types\r\n bool: 1,\r\n int: 1,\r\n float: 1,\r\n vec2: 2,\r\n ivec2: 2,\r\n uvec2: 2,\r\n vec3: 3,\r\n ivec3: 3,\r\n uvec3: 3,\r\n vec4: 4,\r\n ivec4: 4,\r\n uvec4: 4,\r\n mat2: 4,\r\n mat3: 12,\r\n mat4: 16,\r\n\r\n // WGSL types\r\n i32: 1,\r\n u32: 1,\r\n f32: 1,\r\n mat2x2: 4,\r\n mat3x3: 12,\r\n mat4x4: 16,\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _SamplerFunctionByWebGLSamplerType: { [key: string]: string } = {\r\n sampler2D: \"sampler2D\",\r\n sampler2DArray: \"sampler2DArray\",\r\n sampler2DShadow: \"sampler2DShadow\",\r\n sampler2DArrayShadow: \"sampler2DArrayShadow\",\r\n samplerCube: \"samplerCube\",\r\n sampler3D: \"sampler3D\",\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _TextureTypeByWebGLSamplerType: { [key: string]: string } = {\r\n sampler2D: \"texture2D\",\r\n sampler2DArray: \"texture2DArray\",\r\n sampler2DShadow: \"texture2D\",\r\n sampler2DArrayShadow: \"texture2DArray\",\r\n samplerCube: \"textureCube\",\r\n samplerCubeArray: \"textureCubeArray\",\r\n sampler3D: \"texture3D\",\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _GpuTextureViewDimensionByWebGPUTextureType: { [key: string]: GPUTextureViewDimension } = {\r\n textureCube: WebGPUConstants.TextureViewDimension.Cube,\r\n textureCubeArray: WebGPUConstants.TextureViewDimension.CubeArray,\r\n texture2D: WebGPUConstants.TextureViewDimension.E2d,\r\n texture2DArray: WebGPUConstants.TextureViewDimension.E2dArray,\r\n texture3D: WebGPUConstants.TextureViewDimension.E3d,\r\n };\r\n\r\n // if the webgl sampler type is not listed in this array, \"sampler\" is taken by default\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _SamplerTypeByWebGLSamplerType: { [key: string]: string } = {\r\n sampler2DShadow: \"samplerShadow\",\r\n sampler2DArrayShadow: \"samplerShadow\",\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _IsComparisonSamplerByWebGPUSamplerType: { [key: string]: boolean } = {\r\n samplerShadow: true,\r\n samplerArrayShadow: true,\r\n sampler: false,\r\n };\r\n\r\n public shaderLanguage = ShaderLanguage.GLSL;\r\n\r\n // this object is populated only with vertex kinds known by the engine (position, uv, ...) and only if the type of the corresponding vertex buffer is an integer type)\r\n // if the type is a signed type, the value is negated\r\n public vertexBufferKindToNumberOfComponents: { [kind: string]: number } = {};\r\n\r\n protected _webgpuProcessingContext: WebGPUShaderProcessingContext;\r\n\r\n protected abstract _getArraySize(name: string, type: string, preProcessors: { [key: string]: string }): [string, string, number];\r\n protected abstract _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string;\r\n\r\n protected _addUniformToLeftOverUBO(name: string, uniformType: string, preProcessors: { [key: string]: string }): void {\r\n let length = 0;\r\n\r\n [name, uniformType, length] = this._getArraySize(name, uniformType, preProcessors);\r\n\r\n for (let i = 0; i < this._webgpuProcessingContext.leftOverUniforms.length; i++) {\r\n if (this._webgpuProcessingContext.leftOverUniforms[i].name === name) {\r\n return;\r\n }\r\n }\r\n\r\n this._webgpuProcessingContext.leftOverUniforms.push({\r\n name,\r\n type: uniformType,\r\n length,\r\n });\r\n }\r\n\r\n protected _buildLeftOverUBO(): string {\r\n if (!this._webgpuProcessingContext.leftOverUniforms.length) {\r\n return \"\";\r\n }\r\n const name = WebGPUShaderProcessor.LeftOvertUBOName;\r\n let availableUBO = this._webgpuProcessingContext.availableBuffers[name];\r\n if (!availableUBO) {\r\n availableUBO = {\r\n binding: this._webgpuProcessingContext.getNextFreeUBOBinding(),\r\n };\r\n this._webgpuProcessingContext.availableBuffers[name] = availableUBO;\r\n this._addBufferBindingDescription(name, availableUBO, WebGPUConstants.BufferBindingType.Uniform, true);\r\n this._addBufferBindingDescription(name, availableUBO, WebGPUConstants.BufferBindingType.Uniform, false);\r\n }\r\n\r\n return this._generateLeftOverUBOCode(name, availableUBO);\r\n }\r\n\r\n protected _collectBindingNames(): void {\r\n // collect all the binding names for faster processing in WebGPUCacheBindGroup\r\n for (let i = 0; i < this._webgpuProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = this._webgpuProcessingContext.bindGroupLayoutEntries[i];\r\n if (setDefinition === undefined) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[i] = [];\r\n continue;\r\n }\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = this._webgpuProcessingContext.bindGroupLayoutEntries[i][j];\r\n const name = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding].name;\r\n const nameInArrayOfTexture = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding].nameInArrayOfTexture;\r\n if (entry) {\r\n if (entry.texture || entry.externalTexture || entry.storageTexture) {\r\n this._webgpuProcessingContext.textureNames.push(nameInArrayOfTexture!);\r\n } else if (entry.sampler) {\r\n this._webgpuProcessingContext.samplerNames.push(name);\r\n } else if (entry.buffer) {\r\n this._webgpuProcessingContext.bufferNames.push(name);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected _preCreateBindGroupEntries(): void {\r\n const bindGroupEntries = this._webgpuProcessingContext.bindGroupEntries;\r\n\r\n for (let i = 0; i < this._webgpuProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = this._webgpuProcessingContext.bindGroupLayoutEntries[i];\r\n\r\n const entries: GPUBindGroupEntry[] = [];\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = this._webgpuProcessingContext.bindGroupLayoutEntries[i][j];\r\n\r\n if (entry.sampler || entry.texture || entry.storageTexture || entry.externalTexture) {\r\n entries.push({\r\n binding: entry.binding,\r\n resource: undefined as any,\r\n });\r\n } else if (entry.buffer) {\r\n entries.push({\r\n binding: entry.binding,\r\n resource: {\r\n buffer: undefined as any,\r\n offset: 0,\r\n size: 0,\r\n },\r\n });\r\n }\r\n }\r\n\r\n bindGroupEntries[i] = entries;\r\n }\r\n }\r\n\r\n protected _addTextureBindingDescription(\r\n name: string,\r\n textureInfo: WebGPUTextureDescription,\r\n textureIndex: number,\r\n dimension: Nullable<GPUTextureViewDimension>,\r\n format: Nullable<GPUTextureFormat>,\r\n isVertex: boolean\r\n ): void {\r\n // eslint-disable-next-line prefer-const\r\n let { groupIndex, bindingIndex } = textureInfo.textures[textureIndex];\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\r\n }\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\r\n let len;\r\n if (dimension === null) {\r\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n externalTexture: {},\r\n });\r\n } else if (format) {\r\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n storageTexture: {\r\n access: WebGPUConstants.StorageTextureAccess.WriteOnly,\r\n format,\r\n viewDimension: dimension,\r\n },\r\n });\r\n } else {\r\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n texture: {\r\n sampleType: textureInfo.sampleType,\r\n viewDimension: dimension,\r\n multisampled: false,\r\n },\r\n });\r\n }\r\n const textureName = textureInfo.isTextureArray ? name + textureIndex : name;\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1, nameInArrayOfTexture: textureName };\r\n }\r\n\r\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\r\n if (isVertex) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Vertex;\r\n } else {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Fragment;\r\n }\r\n }\r\n\r\n protected _addSamplerBindingDescription(name: string, samplerInfo: WebGPUSamplerDescription, isVertex: boolean): void {\r\n // eslint-disable-next-line prefer-const\r\n let { groupIndex, bindingIndex } = samplerInfo.binding;\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\r\n }\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\r\n const len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n sampler: {\r\n type: samplerInfo.type,\r\n },\r\n });\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1 };\r\n }\r\n\r\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\r\n if (isVertex) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Vertex;\r\n } else {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Fragment;\r\n }\r\n }\r\n\r\n protected _addBufferBindingDescription(name: string, uniformBufferInfo: WebGPUBufferDescription, bufferType: GPUBufferBindingType, isVertex: boolean): void {\r\n // eslint-disable-next-line prefer-const\r\n let { groupIndex, bindingIndex } = uniformBufferInfo.binding;\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\r\n }\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\r\n const len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n buffer: {\r\n type: bufferType,\r\n },\r\n });\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1 };\r\n }\r\n\r\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\r\n if (isVertex) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Vertex;\r\n } else {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Fragment;\r\n }\r\n }\r\n\r\n protected _injectStartingAndEndingCode(code: string, mainFuncDecl: string, startingCode?: string, endingCode?: string): string {\r\n let idx = code.indexOf(mainFuncDecl);\r\n if (idx < 0) {\r\n console.error(`No \"main\" function found in shader code! Processing aborted.`);\r\n return code;\r\n }\r\n if (startingCode) {\r\n // eslint-disable-next-line no-empty\r\n while (idx++ < code.length && code.charAt(idx) != \"{\") {}\r\n if (idx < code.length) {\r\n const part1 = code.substring(0, idx + 1);\r\n const part2 = code.substring(idx + 1);\r\n code = part1 + startingCode + part2;\r\n }\r\n }\r\n\r\n if (endingCode) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += endingCode + \"\\n}\";\r\n }\r\n\r\n return code;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuShaderProcessor.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuShaderProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable babylonjs/available */\r\n/* eslint-disable jsdoc/require-jsdoc */\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { IShaderProcessor } from \"../Processors/iShaderProcessor\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport type { WebGPUSamplerDescription, WebGPUShaderProcessingContext, WebGPUTextureDescription, WebGPUBufferDescription } from \"./webgpuShaderProcessingContext\";\r\n\r\n/** @internal */\r\nexport abstract class WebGPUShaderProcessor implements IShaderProcessor {\r\n public static readonly AutoSamplerSuffix = \"Sampler\";\r\n public static readonly LeftOvertUBOName = \"LeftOver\";\r\n public static readonly InternalsUBOName = \"Internals\";\r\n\r\n public static UniformSizes: { [type: string]: number } = {\r\n // GLSL types\r\n bool: 1,\r\n int: 1,\r\n float: 1,\r\n vec2: 2,\r\n ivec2: 2,\r\n uvec2: 2,\r\n vec3: 3,\r\n ivec3: 3,\r\n uvec3: 3,\r\n vec4: 4,\r\n ivec4: 4,\r\n uvec4: 4,\r\n mat2: 4,\r\n mat3: 12,\r\n mat4: 16,\r\n\r\n // WGSL types\r\n i32: 1,\r\n u32: 1,\r\n f32: 1,\r\n mat2x2: 4,\r\n mat3x3: 12,\r\n mat4x4: 16,\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _SamplerFunctionByWebGLSamplerType: { [key: string]: string } = {\r\n sampler2D: \"sampler2D\",\r\n sampler2DArray: \"sampler2DArray\",\r\n sampler2DShadow: \"sampler2DShadow\",\r\n sampler2DArrayShadow: \"sampler2DArrayShadow\",\r\n samplerCube: \"samplerCube\",\r\n sampler3D: \"sampler3D\",\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _TextureTypeByWebGLSamplerType: { [key: string]: string } = {\r\n sampler2D: \"texture2D\",\r\n sampler2DArray: \"texture2DArray\",\r\n sampler2DShadow: \"texture2D\",\r\n sampler2DArrayShadow: \"texture2DArray\",\r\n samplerCube: \"textureCube\",\r\n samplerCubeArray: \"textureCubeArray\",\r\n sampler3D: \"texture3D\",\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _GpuTextureViewDimensionByWebGPUTextureType: { [key: string]: GPUTextureViewDimension } = {\r\n textureCube: WebGPUConstants.TextureViewDimension.Cube,\r\n textureCubeArray: WebGPUConstants.TextureViewDimension.CubeArray,\r\n texture2D: WebGPUConstants.TextureViewDimension.E2d,\r\n texture2DArray: WebGPUConstants.TextureViewDimension.E2dArray,\r\n texture3D: WebGPUConstants.TextureViewDimension.E3d,\r\n };\r\n\r\n // if the webgl sampler type is not listed in this array, \"sampler\" is taken by default\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _SamplerTypeByWebGLSamplerType: { [key: string]: string } = {\r\n sampler2DShadow: \"samplerShadow\",\r\n sampler2DArrayShadow: \"samplerShadow\",\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected static _IsComparisonSamplerByWebGPUSamplerType: { [key: string]: boolean } = {\r\n samplerShadow: true,\r\n samplerArrayShadow: true,\r\n sampler: false,\r\n };\r\n\r\n public shaderLanguage = ShaderLanguage.GLSL;\r\n\r\n // this object is populated only with vertex kinds known by the engine (position, uv, ...) and only if the type of the corresponding vertex buffer is an integer type)\r\n // if the type is a signed type, the value is negated\r\n public vertexBufferKindToNumberOfComponents: { [kind: string]: number } = {};\r\n\r\n protected _webgpuProcessingContext: WebGPUShaderProcessingContext;\r\n\r\n protected abstract _getArraySize(name: string, type: string, preProcessors: { [key: string]: string }): [string, string, number];\r\n protected abstract _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string;\r\n\r\n protected _addUniformToLeftOverUBO(name: string, uniformType: string, preProcessors: { [key: string]: string }): void {\r\n let length = 0;\r\n\r\n [name, uniformType, length] = this._getArraySize(name, uniformType, preProcessors);\r\n\r\n for (let i = 0; i < this._webgpuProcessingContext.leftOverUniforms.length; i++) {\r\n if (this._webgpuProcessingContext.leftOverUniforms[i].name === name) {\r\n return;\r\n }\r\n }\r\n\r\n this._webgpuProcessingContext.leftOverUniforms.push({\r\n name,\r\n type: uniformType,\r\n length,\r\n });\r\n }\r\n\r\n protected _buildLeftOverUBO(): string {\r\n if (!this._webgpuProcessingContext.leftOverUniforms.length) {\r\n return \"\";\r\n }\r\n const name = WebGPUShaderProcessor.LeftOvertUBOName;\r\n let availableUBO = this._webgpuProcessingContext.availableBuffers[name];\r\n if (!availableUBO) {\r\n availableUBO = {\r\n binding: this._webgpuProcessingContext.getNextFreeUBOBinding(),\r\n };\r\n this._webgpuProcessingContext.availableBuffers[name] = availableUBO;\r\n this._addBufferBindingDescription(name, availableUBO, WebGPUConstants.BufferBindingType.Uniform, true);\r\n this._addBufferBindingDescription(name, availableUBO, WebGPUConstants.BufferBindingType.Uniform, false);\r\n }\r\n\r\n return this._generateLeftOverUBOCode(name, availableUBO);\r\n }\r\n\r\n protected _collectBindingNames(): void {\r\n // collect all the binding names for faster processing in WebGPUCacheBindGroup\r\n for (let i = 0; i < this._webgpuProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = this._webgpuProcessingContext.bindGroupLayoutEntries[i];\r\n if (setDefinition === undefined) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[i] = [];\r\n continue;\r\n }\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = this._webgpuProcessingContext.bindGroupLayoutEntries[i][j];\r\n const name = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding].name;\r\n const nameInArrayOfTexture = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding].nameInArrayOfTexture;\r\n if (entry) {\r\n if (entry.texture || entry.externalTexture || entry.storageTexture) {\r\n this._webgpuProcessingContext.textureNames.push(nameInArrayOfTexture!);\r\n } else if (entry.sampler) {\r\n this._webgpuProcessingContext.samplerNames.push(name);\r\n } else if (entry.buffer) {\r\n this._webgpuProcessingContext.bufferNames.push(name);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected _preCreateBindGroupEntries(): void {\r\n const bindGroupEntries = this._webgpuProcessingContext.bindGroupEntries;\r\n\r\n for (let i = 0; i < this._webgpuProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = this._webgpuProcessingContext.bindGroupLayoutEntries[i];\r\n\r\n const entries: GPUBindGroupEntry[] = [];\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = this._webgpuProcessingContext.bindGroupLayoutEntries[i][j];\r\n\r\n if (entry.sampler || entry.texture || entry.storageTexture || entry.externalTexture) {\r\n entries.push({\r\n binding: entry.binding,\r\n resource: undefined as any,\r\n });\r\n } else if (entry.buffer) {\r\n entries.push({\r\n binding: entry.binding,\r\n resource: {\r\n buffer: undefined as any,\r\n offset: 0,\r\n size: 0,\r\n },\r\n });\r\n }\r\n }\r\n\r\n bindGroupEntries[i] = entries;\r\n }\r\n }\r\n\r\n protected _addTextureBindingDescription(\r\n name: string,\r\n textureInfo: WebGPUTextureDescription,\r\n textureIndex: number,\r\n dimension: Nullable<GPUTextureViewDimension>,\r\n format: Nullable<GPUTextureFormat>,\r\n isVertex: boolean\r\n ): void {\r\n // eslint-disable-next-line prefer-const\r\n let { groupIndex, bindingIndex } = textureInfo.textures[textureIndex];\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\r\n }\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\r\n let len;\r\n if (dimension === null) {\r\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n externalTexture: {},\r\n });\r\n } else if (format) {\r\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n storageTexture: {\r\n access: WebGPUConstants.StorageTextureAccess.WriteOnly,\r\n format,\r\n viewDimension: dimension,\r\n },\r\n });\r\n } else {\r\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n texture: {\r\n sampleType: textureInfo.sampleType,\r\n viewDimension: dimension,\r\n multisampled: false,\r\n },\r\n });\r\n }\r\n const textureName = textureInfo.isTextureArray ? name + textureIndex : name;\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1, nameInArrayOfTexture: textureName };\r\n }\r\n\r\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\r\n if (isVertex) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Vertex;\r\n } else {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Fragment;\r\n }\r\n }\r\n\r\n protected _addSamplerBindingDescription(name: string, samplerInfo: WebGPUSamplerDescription, isVertex: boolean): void {\r\n // eslint-disable-next-line prefer-const\r\n let { groupIndex, bindingIndex } = samplerInfo.binding;\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\r\n }\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\r\n const len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n sampler: {\r\n type: samplerInfo.type,\r\n },\r\n });\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1 };\r\n }\r\n\r\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\r\n if (isVertex) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Vertex;\r\n } else {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Fragment;\r\n }\r\n }\r\n\r\n protected _addBufferBindingDescription(name: string, uniformBufferInfo: WebGPUBufferDescription, bufferType: GPUBufferBindingType, isVertex: boolean): void {\r\n // eslint-disable-next-line prefer-const\r\n let { groupIndex, bindingIndex } = uniformBufferInfo.binding;\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\r\n }\r\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\r\n const len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\r\n binding: bindingIndex,\r\n visibility: 0,\r\n buffer: {\r\n type: bufferType,\r\n },\r\n });\r\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1 };\r\n }\r\n\r\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\r\n if (isVertex) {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Vertex;\r\n } else {\r\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= WebGPUConstants.ShaderStage.Fragment;\r\n }\r\n }\r\n\r\n protected _injectStartingAndEndingCode(code: string, mainFuncDecl: string, startingCode?: string, endingCode?: string): string {\r\n let idx = code.indexOf(mainFuncDecl);\r\n if (idx < 0) {\r\n Logger.Error(`No \"main\" function found in shader code! Processing aborted.`);\r\n return code;\r\n }\r\n if (startingCode) {\r\n // eslint-disable-next-line no-empty\r\n while (idx++ < code.length && code.charAt(idx) != \"{\") {}\r\n if (idx < code.length) {\r\n const part1 = code.substring(0, idx + 1);\r\n const part2 = code.substring(idx + 1);\r\n code = part1 + startingCode + part2;\r\n }\r\n }\r\n\r\n if (endingCode) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += endingCode + \"\\n}\";\r\n }\r\n\r\n return code;\r\n }\r\n}\r\n"]}
@@ -1,3 +1,4 @@
1
+ import { Logger } from "../../Misc/logger.js";
1
2
  import { Tools } from "../../Misc/tools.js";
2
3
  /** @internal */
3
4
  export class WebGPUTintWASM {
@@ -23,8 +24,8 @@ export class WebGPUTintWASM {
23
24
  convertSpirV2WGSL(code, disableUniformityAnalysis = false) {
24
25
  const ccode = WebGPUTintWASM._twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);
25
26
  if (WebGPUTintWASM.ShowWGSLShaderCode) {
26
- console.log(ccode);
27
- console.log("***********************************************");
27
+ Logger.Log(ccode);
28
+ Logger.Log("***********************************************");
28
29
  }
29
30
  return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? "diagnostic(off, derivative_uniformity);\n" + ccode : ccode;
30
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuTintWASM.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuTintWASM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAoBzC,gBAAgB;AAChB,MAAM,OAAO,cAAc;IAahB,KAAK,CAAC,SAAS,CAAC,YAA2B;QAC9C,IAAI,cAAc,CAAC,MAAM,EAAE;YACvB,OAAO;SACV;QAED,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;QAClC,YAAY,mCACL,cAAc,CAAC,oBAAoB,GACnC,YAAY,CAClB,CAAC;QAEF,IAAI,YAAY,CAAC,KAAK,EAAE;YACpB,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE;YAC9C,MAAM,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC3D;QAED,IAAK,IAAY,CAAC,KAAK,EAAE;YACrB,cAAc,CAAC,MAAM,GAAG,MAAO,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAa,CAAC,QAAS,CAAC,CAAC,CAAC;YACtG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrD,CAAC;IAEM,iBAAiB,CAAC,IAAiB,EAAE,yBAAyB,GAAG,KAAK;QACzE,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC;QACnI,IAAI,cAAc,CAAC,kBAAkB,EAAE;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;SAClE;QACD,OAAO,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC,CAAC,2CAA2C,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/I,CAAC;;AA/CD,yBAAyB;AACD,mCAAoB,GAAiB;IACzD,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,iBAAiB;IAChD,QAAQ,EAAE,GAAG,KAAK,CAAC,cAAc,mBAAmB;CACvD,CAAC;AAEY,iCAAkB,GAAG,KAAK,CAAC;AAE3B,wCAAyB,GAAG,KAAK,CAAC;AAEjC,qBAAM,GAAQ,IAAI,CAAC","sourcesContent":["import { Tools } from \"../../Misc/tools\";\r\n\r\n/**\r\n * Options to load the associated Twgsl library\r\n */\r\nexport interface TwgslOptions {\r\n /**\r\n * Defines an existing instance of Twgsl (useful in modules who do not access the global instance).\r\n */\r\n twgsl?: any;\r\n /**\r\n * Defines the URL of the twgsl JS File.\r\n */\r\n jsPath?: string;\r\n /**\r\n * Defines the URL of the twgsl WASM File.\r\n */\r\n wasmPath?: string;\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUTintWASM {\r\n // Default twgsl options.\r\n private static readonly _TWgslDefaultOptions: TwgslOptions = {\r\n jsPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.js`,\r\n wasmPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.wasm`,\r\n };\r\n\r\n public static ShowWGSLShaderCode = false;\r\n\r\n public static DisableUniformityAnalysis = false;\r\n\r\n private static _twgsl: any = null;\r\n\r\n public async initTwgsl(twgslOptions?: TwgslOptions): Promise<void> {\r\n if (WebGPUTintWASM._twgsl) {\r\n return;\r\n }\r\n\r\n twgslOptions = twgslOptions || {};\r\n twgslOptions = {\r\n ...WebGPUTintWASM._TWgslDefaultOptions,\r\n ...twgslOptions,\r\n };\r\n\r\n if (twgslOptions.twgsl) {\r\n WebGPUTintWASM._twgsl = twgslOptions.twgsl;\r\n return Promise.resolve();\r\n }\r\n\r\n if (twgslOptions.jsPath && twgslOptions.wasmPath) {\r\n await Tools.LoadBabylonScriptAsync(twgslOptions.jsPath);\r\n }\r\n\r\n if ((self as any).twgsl) {\r\n WebGPUTintWASM._twgsl = await (self as any).twgsl(Tools.GetBabylonScriptURL(twgslOptions!.wasmPath!));\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"twgsl is not available.\");\r\n }\r\n\r\n public convertSpirV2WGSL(code: Uint32Array, disableUniformityAnalysis = false): string {\r\n const ccode = WebGPUTintWASM._twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);\r\n if (WebGPUTintWASM.ShowWGSLShaderCode) {\r\n console.log(ccode);\r\n console.log(\"***********************************************\");\r\n }\r\n return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? \"diagnostic(off, derivative_uniformity);\\n\" + ccode : ccode;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuTintWASM.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuTintWASM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,6BAAyB;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAoBzC,gBAAgB;AAChB,MAAM,OAAO,cAAc;IAahB,KAAK,CAAC,SAAS,CAAC,YAA2B;QAC9C,IAAI,cAAc,CAAC,MAAM,EAAE;YACvB,OAAO;SACV;QAED,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;QAClC,YAAY,mCACL,cAAc,CAAC,oBAAoB,GACnC,YAAY,CAClB,CAAC;QAEF,IAAI,YAAY,CAAC,KAAK,EAAE;YACpB,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE;YAC9C,MAAM,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC3D;QAED,IAAK,IAAY,CAAC,KAAK,EAAE;YACrB,cAAc,CAAC,MAAM,GAAG,MAAO,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAa,CAAC,QAAS,CAAC,CAAC,CAAC;YACtG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrD,CAAC;IAEM,iBAAiB,CAAC,IAAiB,EAAE,yBAAyB,GAAG,KAAK;QACzE,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC;QACnI,IAAI,cAAc,CAAC,kBAAkB,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;SACjE;QACD,OAAO,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC,CAAC,2CAA2C,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/I,CAAC;;AA/CD,yBAAyB;AACD,mCAAoB,GAAiB;IACzD,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,iBAAiB;IAChD,QAAQ,EAAE,GAAG,KAAK,CAAC,cAAc,mBAAmB;CACvD,CAAC;AAEY,iCAAkB,GAAG,KAAK,CAAC;AAE3B,wCAAyB,GAAG,KAAK,CAAC;AAEjC,qBAAM,GAAQ,IAAI,CAAC","sourcesContent":["import { Logger } from \"core/Misc/logger\";\r\nimport { Tools } from \"../../Misc/tools\";\r\n\r\n/**\r\n * Options to load the associated Twgsl library\r\n */\r\nexport interface TwgslOptions {\r\n /**\r\n * Defines an existing instance of Twgsl (useful in modules who do not access the global instance).\r\n */\r\n twgsl?: any;\r\n /**\r\n * Defines the URL of the twgsl JS File.\r\n */\r\n jsPath?: string;\r\n /**\r\n * Defines the URL of the twgsl WASM File.\r\n */\r\n wasmPath?: string;\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUTintWASM {\r\n // Default twgsl options.\r\n private static readonly _TWgslDefaultOptions: TwgslOptions = {\r\n jsPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.js`,\r\n wasmPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.wasm`,\r\n };\r\n\r\n public static ShowWGSLShaderCode = false;\r\n\r\n public static DisableUniformityAnalysis = false;\r\n\r\n private static _twgsl: any = null;\r\n\r\n public async initTwgsl(twgslOptions?: TwgslOptions): Promise<void> {\r\n if (WebGPUTintWASM._twgsl) {\r\n return;\r\n }\r\n\r\n twgslOptions = twgslOptions || {};\r\n twgslOptions = {\r\n ...WebGPUTintWASM._TWgslDefaultOptions,\r\n ...twgslOptions,\r\n };\r\n\r\n if (twgslOptions.twgsl) {\r\n WebGPUTintWASM._twgsl = twgslOptions.twgsl;\r\n return Promise.resolve();\r\n }\r\n\r\n if (twgslOptions.jsPath && twgslOptions.wasmPath) {\r\n await Tools.LoadBabylonScriptAsync(twgslOptions.jsPath);\r\n }\r\n\r\n if ((self as any).twgsl) {\r\n WebGPUTintWASM._twgsl = await (self as any).twgsl(Tools.GetBabylonScriptURL(twgslOptions!.wasmPath!));\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"twgsl is not available.\");\r\n }\r\n\r\n public convertSpirV2WGSL(code: Uint32Array, disableUniformityAnalysis = false): string {\r\n const ccode = WebGPUTintWASM._twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);\r\n if (WebGPUTintWASM.ShowWGSLShaderCode) {\r\n Logger.Log(ccode);\r\n Logger.Log(\"***********************************************\");\r\n }\r\n return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? \"diagnostic(off, derivative_uniformity);\\n\" + ccode : ccode;\r\n }\r\n}\r\n"]}
@@ -2,7 +2,7 @@
2
2
  import { Observable } from "../Misc/observable";
3
3
  import type { Nullable } from "../types";
4
4
  import type { Scene } from "../scene";
5
- import { InternalTexture } from "../Materials/Textures/internalTexture";
5
+ import type { InternalTexture } from "../Materials/Textures/internalTexture";
6
6
  import type { IOfflineProvider } from "../Offline/IOfflineProvider";
7
7
  import type { ILoadingScreen } from "../Loading/loadingScreen";
8
8
  import type { WebGLPipelineContext } from "./WebGL/webGLPipelineContext";
@@ -12,10 +12,9 @@ import type { EngineOptions } from "./thinEngine";
12
12
  import { ThinEngine } from "./thinEngine";
13
13
  import type { IViewportLike, IColor4Like } from "../Maths/math.like";
14
14
  import type { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture";
15
- import { PerformanceMonitor } from "../Misc/performanceMonitor";
15
+ import type { PerformanceMonitor } from "../Misc/performanceMonitor";
16
16
  import type { DataBuffer } from "../Buffers/dataBuffer";
17
17
  import { PerfCounter } from "../Misc/perfCounter";
18
- import type { RenderTargetWrapper } from "./renderTargetWrapper";
19
18
  import "./Extensions/engine.alpha";
20
19
  import "./Extensions/engine.readTexture";
21
20
  import "./Extensions/engine.dynamicBuffer";
@@ -281,24 +280,15 @@ export declare class Engine extends ThinEngine {
281
280
  * Method called to create the default rescale post process on each engine.
282
281
  */
283
282
  static _RescalePostProcessFactory: Nullable<(engine: Engine) => PostProcess>;
284
- /**
285
- * Gets or sets a boolean to enable/disable IndexedDB support and avoid XHR on .manifest
286
- **/
287
- enableOfflineSupport: boolean;
288
- /**
289
- * Gets or sets a boolean to enable/disable checking manifest if IndexedDB support is enabled (js will always consider the database is up to date)
290
- **/
291
- disableManifestCheck: boolean;
292
- /**
293
- * Gets or sets a boolean to enable/disable the context menu (right-click) from appearing on the main canvas
294
- */
295
- disableContextMenu: boolean;
296
- /**
297
- * Gets the list of created scenes
298
- */
299
- scenes: Scene[];
300
- /** @internal */
301
- _virtualScenes: Scene[];
283
+ get enableOfflineSupport(): boolean;
284
+ set enableOfflineSupport(value: boolean);
285
+ get disableManifestCheck(): boolean;
286
+ set disableManifestCheck(value: boolean);
287
+ get disableContextMenu(): boolean;
288
+ set disableContextMenu(value: boolean);
289
+ get scenes(): Scene[];
290
+ get _virtualScenes(): Scene[];
291
+ set _virtualScenes(value: Scene[]);
302
292
  /**
303
293
  * Event raised when a new scene is created
304
294
  */
@@ -306,11 +296,11 @@ export declare class Engine extends ThinEngine {
306
296
  /**
307
297
  * Gets the list of created postprocesses
308
298
  */
309
- postProcesses: PostProcess[];
299
+ get postProcesses(): PostProcess[];
310
300
  /**
311
301
  * Gets a boolean indicating if the pointer is currently locked
312
302
  */
313
- isPointerLock: boolean;
303
+ get isPointerLock(): boolean;
314
304
  /**
315
305
  * Observable event triggered each time the rendering canvas is resized
316
306
  */
@@ -363,15 +353,10 @@ export declare class Engine extends ThinEngine {
363
353
  * By default, this will create a Database object if the workload has been embedded.
364
354
  */
365
355
  static OfflineProviderFactory: (urlToScene: string, callbackManifestChecked: (checked: boolean) => any, disableManifestCheck: boolean) => IOfflineProvider;
366
- private _loadingScreen;
367
- private _pointerLockRequested;
368
- private _rescalePostProcess;
369
356
  protected _deterministicLockstep: boolean;
370
357
  protected _lockstepMaxSteps: number;
371
358
  protected _timeStep: number;
372
359
  protected get _supportsHardwareTextureRescaling(): boolean;
373
- private _fps;
374
- private _deltaTime;
375
360
  /** @internal */
376
361
  _drawCalls: PerfCounter;
377
362
  /** Gets or sets the tab index to set to the rendering canvas. 1 is the minimum value to set to be able to capture keyboard events */
@@ -380,20 +365,11 @@ export declare class Engine extends ThinEngine {
380
365
  * Turn this value on if you want to pause FPS computation when in background
381
366
  */
382
367
  disablePerformanceMonitorInBackground: boolean;
383
- private _performanceMonitor;
384
368
  /**
385
369
  * Gets the performance monitor attached to this engine
386
370
  * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimize_your_scene#engineinstrumentation
387
371
  */
388
372
  get performanceMonitor(): PerformanceMonitor;
389
- private _onFocus;
390
- private _onBlur;
391
- private _onCanvasPointerOut;
392
- private _onCanvasBlur;
393
- private _onCanvasFocus;
394
- private _onCanvasContextMenu;
395
- private _onFullscreenChange;
396
- private _onPointerLockChange;
397
373
  protected _compatibilityMode: boolean;
398
374
  /**
399
375
  * (WebGPU only) True (default) to be in compatibility mode, meaning rendering all existing scenes without artifacts (same rendering than WebGL).
@@ -415,12 +391,6 @@ export declare class Engine extends ThinEngine {
415
391
  * @param adaptToDeviceRatio defines whether to adapt to the device's viewport characteristics (default: false)
416
392
  */
417
393
  constructor(canvasOrContext: Nullable<HTMLCanvasElement | OffscreenCanvas | WebGLRenderingContext | WebGL2RenderingContext>, antialias?: boolean, options?: EngineOptions, adaptToDeviceRatio?: boolean);
418
- protected _initGLContext(): void;
419
- /**
420
- * Shared initialization across engines types.
421
- * @param canvas The canvas associated with this instance of the engine.
422
- */
423
- protected _sharedInit(canvas: HTMLCanvasElement): void;
424
394
  /** @internal */
425
395
  _verifyPointerLock(): void;
426
396
  /**
@@ -595,13 +565,6 @@ export declare class Engine extends ThinEngine {
595
565
  * Sets the current depth function to LEQUAL
596
566
  */
597
567
  setDepthFunctionToLessOrEqual(): void;
598
- private _cachedStencilBuffer;
599
- private _cachedStencilFunction;
600
- private _cachedStencilMask;
601
- private _cachedStencilOperationPass;
602
- private _cachedStencilOperationFail;
603
- private _cachedStencilOperationDepthFail;
604
- private _cachedStencilReference;
605
568
  /**
606
569
  * Caches the state of the stencil buffer
607
570
  */
@@ -682,11 +645,9 @@ export declare class Engine extends ThinEngine {
682
645
  * @param name name of the channel
683
646
  */
684
647
  setTextureFromPostProcessOutput(channel: number, postProcess: Nullable<PostProcess>, name: string): void;
685
- protected _rebuildBuffers(): void;
686
648
  /** @internal */
687
649
  _renderFrame(): void;
688
650
  protected _cancelFrame(): void;
689
- _renderLoop(): void;
690
651
  /** @internal */
691
652
  _renderViews(): boolean;
692
653
  /**
@@ -714,11 +675,11 @@ export declare class Engine extends ThinEngine {
714
675
  /**
715
676
  * Begin a new frame
716
677
  */
717
- beginFrame(): void;
678
+ beginFrame: () => void;
718
679
  /**
719
680
  * End the current frame
720
681
  */
721
- endFrame(): void;
682
+ endFrame: () => void;
722
683
  /**
723
684
  * Force a specific size of the canvas
724
685
  * @param width defines the new canvas' width
@@ -727,23 +688,16 @@ export declare class Engine extends ThinEngine {
727
688
  * @returns true if the size was changed
728
689
  */
729
690
  setSize(width: number, height: number, forceSetSize?: boolean): boolean;
730
- _deletePipelineContext(pipelineContext: IPipelineContext): void;
731
691
  createShaderProgram(pipelineContext: IPipelineContext, vertexCode: string, fragmentCode: string, defines: Nullable<string>, context?: WebGLRenderingContext, transformFeedbackVaryings?: Nullable<string[]>): WebGLProgram;
732
692
  protected _createShaderProgram(pipelineContext: WebGLPipelineContext, vertexShader: WebGLShader, fragmentShader: WebGLShader, context: WebGLRenderingContext, transformFeedbackVaryings?: Nullable<string[]>): WebGLProgram;
733
693
  /**
734
694
  * @internal
735
695
  */
736
- _releaseTexture(texture: InternalTexture): void;
737
- /**
738
- * @internal
739
- */
740
- _releaseRenderTargetWrapper(rtWrapper: RenderTargetWrapper): void;
741
696
  protected static _RenderPassIdCounter: number;
742
697
  /**
743
698
  * Gets or sets the current render pass id
744
699
  */
745
700
  currentRenderPassId: number;
746
- private _renderPassNames;
747
701
  /**
748
702
  * Gets the names of the render passes that are currently created
749
703
  * @returns list of the render pass names
@@ -785,7 +739,6 @@ export declare class Engine extends ThinEngine {
785
739
  * @returns a number representing the delta time in ms
786
740
  */
787
741
  getDeltaTime(): number;
788
- private _measureFps;
789
742
  /**
790
743
  * Wraps an external web gl texture in a Babylon texture.
791
744
  * @param texture defines the external texture
@@ -819,13 +772,11 @@ export declare class Engine extends ThinEngine {
819
772
  * @param buffer defines the webGL buffer to delete
820
773
  */
821
774
  deleteInstancesBuffer(buffer: WebGLBuffer): void;
822
- private _clientWaitAsync;
823
775
  /**
824
776
  * @internal
825
777
  */
826
778
  _readPixelsAsync(x: number, y: number, w: number, h: number, format: number, type: number, outputBuffer: ArrayBufferView): Promise<ArrayBufferView> | null;
827
779
  dispose(): void;
828
- private _disableTouchAction;
829
780
  /**
830
781
  * Display the loading screen
831
782
  * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/customLoadingScreen
@@ -3479,10 +3430,20 @@ interface XRWebGLBinding {
3479
3430
  getCameraImage(camera: XRCamera): WebGLTexture | undefined;
3480
3431
  }
3481
3432
 
3482
- /**
3483
- * END: WebXR Depth Sensing Moudle
3484
- * https://www.w3.org/TR/webxr-depth-sensing-1/
3485
- */
3433
+ // Mesh Detection
3434
+
3435
+ interface XRMesh {
3436
+ meshSpace: XRSpace;
3437
+ vertices: Float32Array;
3438
+ indices: Uint32Array;
3439
+ lastChangedTime: number;
3440
+ }
3441
+
3442
+ type XRMeshSet = Set<XRMesh>;
3443
+
3444
+ interface XRFrame {
3445
+ detectedMeshes?: XRMeshSet;
3446
+ }
3486
3447
 
3487
3448
  // This file contains native only extensions for WebXR. These APIs are not supported in the browser yet.
3488
3449
  // They are intended for use with either Babylon Native https://github.com/BabylonJS/BabylonNative or
@@ -3512,13 +3473,11 @@ interface XRPlane {
3512
3473
  parentSceneObject?: XRSceneObject;
3513
3474
  }
3514
3475
 
3476
+ // extending the webxr XRMesh with babylon native properties
3515
3477
  interface XRMesh {
3516
- meshSpace: XRSpace;
3517
- positions: Float32Array;
3518
- indices: Uint32Array;
3519
3478
  normals?: Float32Array;
3520
- lastChangedTime: number;
3521
3479
  parentSceneObject?: XRSceneObject;
3480
+ positions: Float32Array; // Babylon native!
3522
3481
  }
3523
3482
 
3524
3483
  interface XRFrustumDetectionBoundary {
@@ -3554,8 +3513,6 @@ interface XRFrame {
3554
3513
  featurePointCloud?: Array<number> | undefined;
3555
3514
  }
3556
3515
 
3557
- type XRMeshSet = Set<XRMesh>;
3558
-
3559
3516
  interface XRWorldInformation {
3560
3517
  detectedMeshes?: XRMeshSet;
3561
3518
  }