@babylonjs/core 5.0.0-alpha.60 → 5.0.0-alpha.64

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 (709) hide show
  1. package/Animations/animation.d.ts +20 -0
  2. package/Animations/animation.js +99 -10
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationGroup.d.ts +5 -1
  5. package/Animations/animationGroup.js +19 -1
  6. package/Animations/animationGroup.js.map +1 -1
  7. package/Animations/animationKey.d.ts +4 -0
  8. package/Animations/animationKey.js +4 -0
  9. package/Animations/animationKey.js.map +1 -1
  10. package/Audio/sound.js +15 -1
  11. package/Audio/sound.js.map +1 -1
  12. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +130 -0
  13. package/BakedVertexAnimation/bakedVertexAnimationManager.js +134 -0
  14. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -0
  15. package/BakedVertexAnimation/index.d.ts +2 -0
  16. package/BakedVertexAnimation/index.js +3 -0
  17. package/BakedVertexAnimation/index.js.map +1 -0
  18. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +65 -0
  19. package/BakedVertexAnimation/vertexAnimationBaker.js +155 -0
  20. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -0
  21. package/Behaviors/Cameras/autoRotationBehavior.d.ts +5 -0
  22. package/Behaviors/Cameras/autoRotationBehavior.js +7 -0
  23. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  24. package/Behaviors/Cameras/framingBehavior.d.ts +5 -0
  25. package/Behaviors/Cameras/framingBehavior.js +8 -1
  26. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  27. package/Behaviors/Meshes/followBehavior.js +1 -1
  28. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  29. package/Behaviors/Meshes/handConstraintBehavior.js +16 -12
  30. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  31. package/Bones/bone.d.ts +3 -1
  32. package/Bones/bone.js +4 -1
  33. package/Bones/bone.js.map +1 -1
  34. package/Cameras/Inputs/BaseCameraPointersInput.js +4 -6
  35. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  36. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  37. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  38. package/Cameras/Inputs/freeCameraMouseInput.js +4 -4
  39. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  40. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +1 -1
  41. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  42. package/Cameras/VR/vrExperienceHelper.d.ts +1 -1
  43. package/Cameras/VR/vrExperienceHelper.js +1 -1
  44. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  45. package/Cameras/camera.js +8 -2
  46. package/Cameras/camera.js.map +1 -1
  47. package/Cameras/targetCamera.js +1 -1
  48. package/Cameras/targetCamera.js.map +1 -1
  49. package/Culling/boundingBox.d.ts +4 -0
  50. package/Culling/boundingBox.js +8 -0
  51. package/Culling/boundingBox.js.map +1 -1
  52. package/Debug/physicsViewer.js +1 -1
  53. package/Debug/physicsViewer.js.map +1 -1
  54. package/Debug/skeletonViewer.js +2 -2
  55. package/Debug/skeletonViewer.js.map +1 -1
  56. package/DeviceInput/Implementations/{nativeDeviceInputWrapper.d.ts → nativeDeviceInputSystem.d.ts} +11 -22
  57. package/DeviceInput/Implementations/nativeDeviceInputSystem.js +80 -0
  58. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +1 -0
  59. package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +7 -20
  60. package/DeviceInput/Implementations/webDeviceInputSystem.js +80 -72
  61. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  62. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +3 -2
  63. package/DeviceInput/InputDevices/deviceSourceManager.js +5 -1
  64. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  65. package/DeviceInput/Interfaces/inputInterfaces.d.ts +6 -13
  66. package/DeviceInput/Interfaces/inputInterfaces.js.map +1 -1
  67. package/DeviceInput/deviceInputSystem.d.ts +49 -5
  68. package/DeviceInput/deviceInputSystem.js +66 -9
  69. package/DeviceInput/deviceInputSystem.js.map +1 -1
  70. package/DeviceInput/index.d.ts +1 -1
  71. package/DeviceInput/index.js +1 -1
  72. package/DeviceInput/index.js.map +1 -1
  73. package/Engines/Extensions/engine.dynamicTexture.d.ts +2 -1
  74. package/Engines/Extensions/engine.dynamicTexture.js +2 -1
  75. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  76. package/Engines/Extensions/engine.multiview.js +17 -6
  77. package/Engines/Extensions/engine.multiview.js.map +1 -1
  78. package/Engines/Extensions/engine.views.d.ts +1 -1
  79. package/Engines/Extensions/engine.views.js +1 -1
  80. package/Engines/Extensions/engine.views.js.map +1 -1
  81. package/Engines/Processors/iShaderProcessor.d.ts +1 -1
  82. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  83. package/Engines/Processors/shaderProcessingOptions.d.ts +5 -0
  84. package/Engines/Processors/shaderProcessingOptions.js.map +1 -1
  85. package/Engines/Processors/shaderProcessor.js +8 -2
  86. package/Engines/Processors/shaderProcessor.js.map +1 -1
  87. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -11
  88. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  89. package/Engines/WebGPU/Extensions/engine.multiRender.js +0 -4
  90. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  91. package/Engines/WebGPU/Extensions/engine.query.js +19 -3
  92. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  93. package/Engines/WebGPU/Extensions/engine.renderTarget.js +0 -4
  94. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  95. package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -1
  96. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  97. package/Engines/WebGPU/webgpuBundleList.d.ts +13 -0
  98. package/Engines/WebGPU/webgpuBundleList.js +27 -0
  99. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  100. package/Engines/WebGPU/webgpuCacheBindGroups.js +3 -3
  101. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  102. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +42 -61
  103. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  104. package/Engines/WebGPU/webgpuCacheSampler.js +6 -4
  105. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  106. package/Engines/WebGPU/webgpuClearQuad.js +17 -8
  107. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  108. package/Engines/WebGPU/webgpuComputeContext.js +2 -2
  109. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  110. package/Engines/WebGPU/webgpuConstants.d.ts +57 -13
  111. package/Engines/WebGPU/webgpuConstants.js +62 -13
  112. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  113. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +27 -3
  114. package/Engines/WebGPU/webgpuHardwareTexture.js +12 -2
  115. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  116. package/Engines/WebGPU/webgpuShaderProcessingContext.js +2 -0
  117. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  118. package/Engines/WebGPU/webgpuShaderProcessor.d.ts +2 -0
  119. package/Engines/WebGPU/webgpuShaderProcessor.js +23 -0
  120. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  121. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -0
  122. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +17 -1
  123. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  124. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +7 -2
  125. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +16 -29
  126. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  127. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +27 -0
  128. package/Engines/WebGPU/webgpuSnapshotRendering.js +107 -0
  129. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -0
  130. package/Engines/WebGPU/webgpuTextureHelper.d.ts +4 -4
  131. package/Engines/WebGPU/webgpuTextureHelper.js +277 -83
  132. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  133. package/Engines/constants.d.ts +2 -0
  134. package/Engines/constants.js +2 -0
  135. package/Engines/constants.js.map +1 -1
  136. package/Engines/engine.d.ts +157 -46
  137. package/Engines/engine.js +38 -1
  138. package/Engines/engine.js.map +1 -1
  139. package/Engines/engineFeatures.d.ts +2 -0
  140. package/Engines/engineFeatures.js.map +1 -1
  141. package/Engines/index.d.ts +1 -0
  142. package/Engines/index.js +1 -0
  143. package/Engines/index.js.map +1 -1
  144. package/Engines/nativeEngine.js +34 -17
  145. package/Engines/nativeEngine.js.map +1 -1
  146. package/Engines/nullEngine.js +1 -0
  147. package/Engines/nullEngine.js.map +1 -1
  148. package/Engines/renderTargetWrapper.d.ts +1 -1
  149. package/Engines/renderTargetWrapper.js +1 -1
  150. package/Engines/renderTargetWrapper.js.map +1 -1
  151. package/Engines/thinEngine.d.ts +0 -11
  152. package/Engines/thinEngine.js +12 -40
  153. package/Engines/thinEngine.js.map +1 -1
  154. package/Engines/webgpuEngine.d.ts +11 -19
  155. package/Engines/webgpuEngine.js +46 -126
  156. package/Engines/webgpuEngine.js.map +1 -1
  157. package/Gizmos/positionGizmo.js +1 -1
  158. package/Gizmos/positionGizmo.js.map +1 -1
  159. package/Helpers/sceneHelpers.d.ts +3 -3
  160. package/Helpers/sceneHelpers.js +1 -2
  161. package/Helpers/sceneHelpers.js.map +1 -1
  162. package/Inputs/scene.inputManager.js +18 -15
  163. package/Inputs/scene.inputManager.js.map +1 -1
  164. package/Layers/effectLayer.d.ts +13 -1
  165. package/Layers/effectLayer.js +115 -65
  166. package/Layers/effectLayer.js.map +1 -1
  167. package/Layers/glowLayer.d.ts +8 -0
  168. package/Layers/glowLayer.js +7 -3
  169. package/Layers/glowLayer.js.map +1 -1
  170. package/Layers/highlightLayer.d.ts +2 -1
  171. package/Layers/highlightLayer.js +8 -3
  172. package/Layers/highlightLayer.js.map +1 -1
  173. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -0
  174. package/Lights/Shadows/cascadedShadowGenerator.js +14 -0
  175. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  176. package/Lights/Shadows/shadowGenerator.d.ts +4 -0
  177. package/Lights/Shadows/shadowGenerator.js +31 -3
  178. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  179. package/Lights/light.js +10 -1
  180. package/Lights/light.js.map +1 -1
  181. package/Lights/pointLight.js +1 -1
  182. package/Lights/pointLight.js.map +1 -1
  183. package/Lights/spotLight.js +1 -1
  184. package/Lights/spotLight.js.map +1 -1
  185. package/Loading/Plugins/babylonFileLoader.js +20 -4
  186. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  187. package/Materials/Background/backgroundMaterial.js +1 -0
  188. package/Materials/Background/backgroundMaterial.js.map +1 -1
  189. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +10 -0
  190. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +31 -0
  191. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Fragment/index.d.ts +2 -0
  193. package/Materials/Node/Blocks/Fragment/index.js +2 -0
  194. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  195. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +41 -0
  196. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +128 -0
  197. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -0
  198. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +49 -0
  199. package/Materials/Node/Blocks/Fragment/twirlBlock.js +145 -0
  200. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -0
  201. package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
  202. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -0
  204. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +15 -0
  205. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/customBlock.d.ts +31 -0
  207. package/Materials/Node/Blocks/customBlock.js +144 -0
  208. package/Materials/Node/Blocks/customBlock.js.map +1 -0
  209. package/Materials/Node/Blocks/index.d.ts +2 -0
  210. package/Materials/Node/Blocks/index.js +2 -0
  211. package/Materials/Node/Blocks/index.js.map +1 -1
  212. package/Materials/Node/Blocks/vectorMergerBlock.js +4 -4
  213. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/voronoiNoiseBlock.d.ts +39 -0
  215. package/Materials/Node/Blocks/voronoiNoiseBlock.js +107 -0
  216. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -0
  217. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +8 -0
  218. package/Materials/Node/Blocks/worleyNoise3DBlock.js +34 -2
  219. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  220. package/Materials/Node/nodeMaterial.d.ts +1 -0
  221. package/Materials/Node/nodeMaterial.js +10 -0
  222. package/Materials/Node/nodeMaterial.js.map +1 -1
  223. package/Materials/Node/nodeMaterialBlock.js +1 -1
  224. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  225. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +5 -0
  226. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  227. package/Materials/PBR/index.d.ts +4 -0
  228. package/Materials/PBR/index.js +4 -0
  229. package/Materials/PBR/index.js.map +1 -1
  230. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +28 -96
  231. package/Materials/PBR/pbrAnisotropicConfiguration.js +50 -111
  232. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  233. package/Materials/PBR/pbrBRDFConfiguration.d.ts +11 -37
  234. package/Materials/PBR/pbrBRDFConfiguration.js +39 -52
  235. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  236. package/Materials/PBR/pbrBaseMaterial.d.ts +17 -74
  237. package/Materials/PBR/pbrBaseMaterial.js +75 -183
  238. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  239. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  240. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +23 -98
  241. package/Materials/PBR/pbrClearCoatConfiguration.js +91 -143
  242. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  243. package/Materials/PBR/pbrSheenConfiguration.d.ts +25 -93
  244. package/Materials/PBR/pbrSheenConfiguration.js +71 -126
  245. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  246. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +29 -104
  247. package/Materials/PBR/pbrSubSurfaceConfiguration.js +158 -204
  248. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  249. package/Materials/Textures/dynamicTexture.d.ts +3 -2
  250. package/Materials/Textures/dynamicTexture.js +5 -3
  251. package/Materials/Textures/dynamicTexture.js.map +1 -1
  252. package/Materials/Textures/hdrCubeTexture.d.ts +9 -0
  253. package/Materials/Textures/hdrCubeTexture.js +21 -5
  254. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  255. package/Materials/Textures/mirrorTexture.d.ts +2 -0
  256. package/Materials/Textures/mirrorTexture.js +13 -0
  257. package/Materials/Textures/mirrorTexture.js.map +1 -1
  258. package/Materials/Textures/renderTargetTexture.js +1 -1
  259. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  260. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  261. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  262. package/Materials/Textures/thinTexture.d.ts +1 -2
  263. package/Materials/Textures/thinTexture.js +2 -4
  264. package/Materials/Textures/thinTexture.js.map +1 -1
  265. package/Materials/Textures/videoTexture.d.ts +1 -1
  266. package/Materials/Textures/videoTexture.js +1 -1
  267. package/Materials/Textures/videoTexture.js.map +1 -1
  268. package/Materials/effect.d.ts +6 -1
  269. package/Materials/effect.js +4 -1
  270. package/Materials/effect.js.map +1 -1
  271. package/Materials/fresnelParameters.d.ts +1 -1
  272. package/Materials/fresnelParameters.js +1 -1
  273. package/Materials/fresnelParameters.js.map +1 -1
  274. package/Materials/imageProcessingConfiguration.d.ts +16 -1
  275. package/Materials/imageProcessingConfiguration.js +31 -0
  276. package/Materials/imageProcessingConfiguration.js.map +1 -1
  277. package/Materials/index.d.ts +4 -0
  278. package/Materials/index.js +4 -0
  279. package/Materials/index.js.map +1 -1
  280. package/Materials/material.d.ts +43 -2
  281. package/Materials/material.detailMapConfiguration.d.ts +29 -87
  282. package/Materials/material.detailMapConfiguration.js +50 -106
  283. package/Materials/material.detailMapConfiguration.js.map +1 -1
  284. package/Materials/material.js +99 -8
  285. package/Materials/material.js.map +1 -1
  286. package/Materials/materialDefines.d.ts +16 -0
  287. package/Materials/materialDefines.js +17 -5
  288. package/Materials/materialDefines.js.map +1 -1
  289. package/Materials/materialHelper.d.ts +15 -1
  290. package/Materials/materialHelper.js +40 -3
  291. package/Materials/materialHelper.js.map +1 -1
  292. package/Materials/materialPluginBase.d.ts +182 -0
  293. package/Materials/materialPluginBase.js +209 -0
  294. package/Materials/materialPluginBase.js.map +1 -0
  295. package/Materials/materialPluginEvent.d.ts +98 -0
  296. package/Materials/materialPluginEvent.js +21 -0
  297. package/Materials/materialPluginEvent.js.map +1 -0
  298. package/Materials/materialPluginFactoryExport.d.ts +40 -0
  299. package/Materials/materialPluginFactoryExport.js +75 -0
  300. package/Materials/materialPluginFactoryExport.js.map +1 -0
  301. package/Materials/materialPluginManager.d.ts +90 -0
  302. package/Materials/materialPluginManager.js +323 -0
  303. package/Materials/materialPluginManager.js.map +1 -0
  304. package/Materials/pushMaterial.d.ts +2 -2
  305. package/Materials/pushMaterial.js +7 -3
  306. package/Materials/pushMaterial.js.map +1 -1
  307. package/Materials/shaderMaterial.d.ts +7 -6
  308. package/Materials/shaderMaterial.js +71 -29
  309. package/Materials/shaderMaterial.js.map +1 -1
  310. package/Materials/shadowDepthWrapper.js +7 -7
  311. package/Materials/shadowDepthWrapper.js.map +1 -1
  312. package/Materials/standardMaterial.d.ts +15 -10
  313. package/Materials/standardMaterial.js +53 -49
  314. package/Materials/standardMaterial.js.map +1 -1
  315. package/Materials/uniformBuffer.js +1 -2
  316. package/Materials/uniformBuffer.js.map +1 -1
  317. package/Maths/math.color.d.ts +20 -0
  318. package/Maths/math.color.js +45 -2
  319. package/Maths/math.color.js.map +1 -1
  320. package/Maths/math.vector.d.ts +14 -9
  321. package/Maths/math.vector.js +36 -17
  322. package/Maths/math.vector.js.map +1 -1
  323. package/Meshes/Builders/boxBuilder.d.ts +1 -1
  324. package/Meshes/Builders/boxBuilder.js +1 -0
  325. package/Meshes/Builders/boxBuilder.js.map +1 -1
  326. package/Meshes/Builders/capsuleBuilder.d.ts +1 -1
  327. package/Meshes/Builders/capsuleBuilder.js +1 -1
  328. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  329. package/Meshes/Builders/cylinderBuilder.d.ts +17 -17
  330. package/Meshes/Builders/cylinderBuilder.js +1 -0
  331. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  332. package/Meshes/Builders/discBuilder.d.ts +1 -1
  333. package/Meshes/Builders/discBuilder.js +1 -0
  334. package/Meshes/Builders/discBuilder.js.map +1 -1
  335. package/Meshes/Builders/groundBuilder.d.ts +8 -8
  336. package/Meshes/Builders/groundBuilder.js +2 -0
  337. package/Meshes/Builders/groundBuilder.js.map +1 -1
  338. package/Meshes/Builders/hemisphereBuilder.d.ts +4 -4
  339. package/Meshes/Builders/hemisphereBuilder.js +1 -0
  340. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  341. package/Meshes/Builders/icoSphereBuilder.d.ts +1 -1
  342. package/Meshes/Builders/icoSphereBuilder.js +1 -0
  343. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  344. package/Meshes/Builders/planeBuilder.d.ts +1 -1
  345. package/Meshes/Builders/planeBuilder.js +1 -0
  346. package/Meshes/Builders/planeBuilder.js.map +1 -1
  347. package/Meshes/Builders/polyhedronBuilder.d.ts +1 -1
  348. package/Meshes/Builders/polyhedronBuilder.js +1 -0
  349. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  350. package/Meshes/Builders/sphereBuilder.d.ts +1 -1
  351. package/Meshes/Builders/sphereBuilder.js +1 -0
  352. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  353. package/Meshes/Builders/torusBuilder.d.ts +8 -8
  354. package/Meshes/Builders/torusBuilder.js +1 -0
  355. package/Meshes/Builders/torusBuilder.js.map +1 -1
  356. package/Meshes/Builders/torusKnotBuilder.d.ts +11 -11
  357. package/Meshes/Builders/torusKnotBuilder.js +1 -0
  358. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  359. package/Meshes/abstractMesh.d.ts +23 -3
  360. package/Meshes/abstractMesh.js +79 -29
  361. package/Meshes/abstractMesh.js.map +1 -1
  362. package/Meshes/geometry.d.ts +3 -0
  363. package/Meshes/geometry.js +15 -7
  364. package/Meshes/geometry.js.map +1 -1
  365. package/Meshes/linesMesh.d.ts +1 -3
  366. package/Meshes/linesMesh.js +5 -36
  367. package/Meshes/linesMesh.js.map +1 -1
  368. package/Meshes/mesh.d.ts +12 -0
  369. package/Meshes/mesh.js +186 -117
  370. package/Meshes/mesh.js.map +1 -1
  371. package/Meshes/mesh.lts.d.ts +8 -8
  372. package/Meshes/mesh.lts.js.map +1 -1
  373. package/Meshes/mesh.vertexData.d.ts +6 -1
  374. package/Meshes/mesh.vertexData.js +295 -114
  375. package/Meshes/mesh.vertexData.js.map +1 -1
  376. package/Meshes/thinInstanceMesh.js +6 -5
  377. package/Meshes/thinInstanceMesh.js.map +1 -1
  378. package/Meshes/transformNode.d.ts +8 -8
  379. package/Meshes/transformNode.js +41 -26
  380. package/Meshes/transformNode.js.map +1 -1
  381. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +2 -1
  382. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +38 -33
  383. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  384. package/Misc/PerformanceViewer/performanceViewerCollector.d.ts +29 -4
  385. package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -12
  386. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  387. package/Misc/assetsManager.d.ts +4 -4
  388. package/Misc/assetsManager.js +2 -2
  389. package/Misc/assetsManager.js.map +1 -1
  390. package/Misc/basis.d.ts +2 -2
  391. package/Misc/basis.js +20 -4
  392. package/Misc/basis.js.map +1 -1
  393. package/Misc/coroutine.d.ts +41 -0
  394. package/Misc/coroutine.js +136 -0
  395. package/Misc/coroutine.js.map +1 -0
  396. package/Misc/index.d.ts +1 -0
  397. package/Misc/index.js +1 -0
  398. package/Misc/index.js.map +1 -1
  399. package/Misc/interfaces/iPerfViewer.d.ts +4 -0
  400. package/Misc/interfaces/iPerfViewer.js.map +1 -1
  401. package/Misc/observableCoroutine.d.ts +9 -10
  402. package/Misc/observableCoroutine.js +34 -39
  403. package/Misc/observableCoroutine.js.map +1 -1
  404. package/Misc/sceneSerializer.js +1 -3
  405. package/Misc/sceneSerializer.js.map +1 -1
  406. package/Misc/tools.d.ts +2 -4
  407. package/Misc/tools.js +6 -10
  408. package/Misc/tools.js.map +1 -1
  409. package/Particles/particleSystem.js +22 -16
  410. package/Particles/particleSystem.js.map +1 -1
  411. package/Particles/solidParticleSystem.js +29 -5
  412. package/Particles/solidParticleSystem.js.map +1 -1
  413. package/Particles/subEmitter.js +1 -0
  414. package/Particles/subEmitter.js.map +1 -1
  415. package/Physics/Plugins/ammoJSPlugin.js +10 -8
  416. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  417. package/PostProcesses/imageProcessingPostProcess.js +1 -0
  418. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  419. package/Probes/reflectionProbe.d.ts +2 -0
  420. package/Probes/reflectionProbe.js +21 -0
  421. package/Probes/reflectionProbe.js.map +1 -1
  422. package/Rendering/boundingBoxRenderer.d.ts +3 -0
  423. package/Rendering/boundingBoxRenderer.js +49 -14
  424. package/Rendering/boundingBoxRenderer.js.map +1 -1
  425. package/Rendering/depthPeelingRenderer.d.ts +4 -1
  426. package/Rendering/depthPeelingRenderer.js +34 -9
  427. package/Rendering/depthPeelingRenderer.js.map +1 -1
  428. package/Rendering/depthRenderer.d.ts +1 -1
  429. package/Rendering/depthRenderer.js +2 -2
  430. package/Rendering/depthRenderer.js.map +1 -1
  431. package/Rendering/edgesRenderer.js +3 -1
  432. package/Rendering/edgesRenderer.js.map +1 -1
  433. package/Rendering/geometryBufferRenderer.d.ts +0 -2
  434. package/Rendering/geometryBufferRenderer.js +13 -10
  435. package/Rendering/geometryBufferRenderer.js.map +1 -1
  436. package/Rendering/prePassRenderer.js +6 -6
  437. package/Rendering/prePassRenderer.js.map +1 -1
  438. package/Rendering/renderingGroup.js +5 -1
  439. package/Rendering/renderingGroup.js.map +1 -1
  440. package/Shaders/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  441. package/Shaders/ShadersInclude/bakedVertexAnimation.js +7 -0
  442. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  443. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  444. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  445. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  446. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  447. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  448. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  449. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  450. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  451. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  452. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  453. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  454. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
  455. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  456. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  457. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  458. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  459. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  460. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  461. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  462. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  463. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  464. package/Shaders/anaglyph.fragment.js +1 -1
  465. package/Shaders/anaglyph.fragment.js.map +1 -1
  466. package/Shaders/background.fragment.js +1 -1
  467. package/Shaders/background.fragment.js.map +1 -1
  468. package/Shaders/background.vertex.d.ts +2 -0
  469. package/Shaders/background.vertex.js +3 -1
  470. package/Shaders/background.vertex.js.map +1 -1
  471. package/Shaders/blackAndWhite.fragment.js +1 -1
  472. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  473. package/Shaders/bloomMerge.fragment.js +1 -1
  474. package/Shaders/bloomMerge.fragment.js.map +1 -1
  475. package/Shaders/blur.fragment.js +1 -1
  476. package/Shaders/blur.fragment.js.map +1 -1
  477. package/Shaders/boundingBoxRenderer.fragment.js +1 -1
  478. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  479. package/Shaders/boundingBoxRenderer.vertex.js +1 -1
  480. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  481. package/Shaders/chromaticAberration.fragment.js +1 -1
  482. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  483. package/Shaders/circleOfConfusion.fragment.js +1 -1
  484. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  485. package/Shaders/clearQuad.vertex.js +1 -1
  486. package/Shaders/clearQuad.vertex.js.map +1 -1
  487. package/Shaders/color.fragment.js +1 -1
  488. package/Shaders/color.fragment.js.map +1 -1
  489. package/Shaders/color.vertex.d.ts +2 -0
  490. package/Shaders/color.vertex.js +3 -1
  491. package/Shaders/color.vertex.js.map +1 -1
  492. package/Shaders/colorCorrection.fragment.js +1 -1
  493. package/Shaders/colorCorrection.fragment.js.map +1 -1
  494. package/Shaders/convolution.fragment.js +1 -1
  495. package/Shaders/convolution.fragment.js.map +1 -1
  496. package/Shaders/default.fragment.js +1 -1
  497. package/Shaders/default.fragment.js.map +1 -1
  498. package/Shaders/default.vertex.d.ts +2 -0
  499. package/Shaders/default.vertex.js +3 -1
  500. package/Shaders/default.vertex.js.map +1 -1
  501. package/Shaders/depth.fragment.js +1 -1
  502. package/Shaders/depth.fragment.js.map +1 -1
  503. package/Shaders/depth.vertex.d.ts +2 -0
  504. package/Shaders/depth.vertex.js +3 -1
  505. package/Shaders/depth.vertex.js.map +1 -1
  506. package/Shaders/depthBoxBlur.fragment.js +1 -1
  507. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  508. package/Shaders/depthOfField.fragment.js +1 -1
  509. package/Shaders/depthOfField.fragment.js.map +1 -1
  510. package/Shaders/depthOfFieldMerge.fragment.js +1 -1
  511. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  512. package/Shaders/displayPass.fragment.js +1 -1
  513. package/Shaders/displayPass.fragment.js.map +1 -1
  514. package/Shaders/extractHighlights.fragment.js +1 -1
  515. package/Shaders/extractHighlights.fragment.js.map +1 -1
  516. package/Shaders/filter.fragment.js +1 -1
  517. package/Shaders/filter.fragment.js.map +1 -1
  518. package/Shaders/fxaa.vertex.js +1 -1
  519. package/Shaders/fxaa.vertex.js.map +1 -1
  520. package/Shaders/geometry.vertex.d.ts +2 -0
  521. package/Shaders/geometry.vertex.js +3 -1
  522. package/Shaders/geometry.vertex.js.map +1 -1
  523. package/Shaders/glowBlurPostProcess.fragment.js +1 -1
  524. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  525. package/Shaders/glowMapGeneration.fragment.js +1 -1
  526. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  527. package/Shaders/glowMapGeneration.vertex.d.ts +2 -0
  528. package/Shaders/glowMapGeneration.vertex.js +3 -1
  529. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  530. package/Shaders/glowMapMerge.fragment.js +1 -1
  531. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  532. package/Shaders/glowMapMerge.vertex.js +1 -1
  533. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  534. package/Shaders/grain.fragment.js +1 -1
  535. package/Shaders/grain.fragment.js.map +1 -1
  536. package/Shaders/hdrFiltering.vertex.js +1 -1
  537. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  538. package/Shaders/highlights.fragment.js +1 -1
  539. package/Shaders/highlights.fragment.js.map +1 -1
  540. package/Shaders/imageProcessing.fragment.js +1 -1
  541. package/Shaders/imageProcessing.fragment.js.map +1 -1
  542. package/Shaders/kernelBlur.fragment.js +1 -1
  543. package/Shaders/kernelBlur.fragment.js.map +1 -1
  544. package/Shaders/kernelBlur.vertex.js +1 -1
  545. package/Shaders/kernelBlur.vertex.js.map +1 -1
  546. package/Shaders/layer.fragment.js +1 -1
  547. package/Shaders/layer.fragment.js.map +1 -1
  548. package/Shaders/layer.vertex.js +1 -1
  549. package/Shaders/layer.vertex.js.map +1 -1
  550. package/Shaders/lensFlare.fragment.js +1 -1
  551. package/Shaders/lensFlare.fragment.js.map +1 -1
  552. package/Shaders/lensFlare.vertex.js +1 -1
  553. package/Shaders/lensFlare.vertex.js.map +1 -1
  554. package/Shaders/lensHighlights.fragment.js +1 -1
  555. package/Shaders/lensHighlights.fragment.js.map +1 -1
  556. package/Shaders/line.fragment.js +1 -1
  557. package/Shaders/line.fragment.js.map +1 -1
  558. package/Shaders/line.vertex.js +1 -1
  559. package/Shaders/line.vertex.js.map +1 -1
  560. package/Shaders/minmaxRedux.fragment.js +1 -1
  561. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  562. package/Shaders/motionBlur.fragment.js +1 -1
  563. package/Shaders/motionBlur.fragment.js.map +1 -1
  564. package/Shaders/noise.fragment.js +1 -1
  565. package/Shaders/noise.fragment.js.map +1 -1
  566. package/Shaders/outline.fragment.js +1 -1
  567. package/Shaders/outline.fragment.js.map +1 -1
  568. package/Shaders/outline.vertex.d.ts +2 -0
  569. package/Shaders/outline.vertex.js +3 -1
  570. package/Shaders/outline.vertex.js.map +1 -1
  571. package/Shaders/particles.fragment.js +1 -1
  572. package/Shaders/particles.fragment.js.map +1 -1
  573. package/Shaders/particles.vertex.js +1 -1
  574. package/Shaders/particles.vertex.js.map +1 -1
  575. package/Shaders/pass.fragment.js +1 -1
  576. package/Shaders/pass.fragment.js.map +1 -1
  577. package/Shaders/passCube.fragment.js +1 -1
  578. package/Shaders/passCube.fragment.js.map +1 -1
  579. package/Shaders/pbr.fragment.js +1 -1
  580. package/Shaders/pbr.fragment.js.map +1 -1
  581. package/Shaders/pbr.vertex.d.ts +2 -0
  582. package/Shaders/pbr.vertex.js +3 -1
  583. package/Shaders/pbr.vertex.js.map +1 -1
  584. package/Shaders/postprocess.vertex.js +1 -1
  585. package/Shaders/postprocess.vertex.js.map +1 -1
  586. package/Shaders/procedural.vertex.js +1 -1
  587. package/Shaders/procedural.vertex.js.map +1 -1
  588. package/Shaders/rgbdDecode.fragment.js +1 -1
  589. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  590. package/Shaders/rgbdEncode.fragment.js +1 -1
  591. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  592. package/Shaders/screenSpaceCurvature.fragment.js +1 -1
  593. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  594. package/Shaders/shadowMap.fragment.js +1 -1
  595. package/Shaders/shadowMap.fragment.js.map +1 -1
  596. package/Shaders/shadowMap.vertex.d.ts +2 -0
  597. package/Shaders/shadowMap.vertex.js +3 -1
  598. package/Shaders/shadowMap.vertex.js.map +1 -1
  599. package/Shaders/sharpen.fragment.js +1 -1
  600. package/Shaders/sharpen.fragment.js.map +1 -1
  601. package/Shaders/sprites.fragment.js +1 -1
  602. package/Shaders/sprites.fragment.js.map +1 -1
  603. package/Shaders/sprites.vertex.js +1 -1
  604. package/Shaders/sprites.vertex.js.map +1 -1
  605. package/Shaders/ssaoCombine.fragment.js +1 -1
  606. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  607. package/Shaders/standard.fragment.js +1 -1
  608. package/Shaders/standard.fragment.js.map +1 -1
  609. package/Shaders/stereoscopicInterlace.fragment.js +1 -1
  610. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  611. package/Shaders/subSurfaceScattering.fragment.js +1 -1
  612. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  613. package/Shaders/tonemap.fragment.js +1 -1
  614. package/Shaders/tonemap.fragment.js.map +1 -1
  615. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  616. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  617. package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
  618. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  619. package/Shaders/volumetricLightScatteringPass.vertex.d.ts +2 -0
  620. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  621. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  622. package/Shaders/vrDistortionCorrection.fragment.js +1 -1
  623. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  624. package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
  625. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  626. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  627. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +7 -0
  628. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  629. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  630. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  631. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  632. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  633. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  634. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  635. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  636. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.d.ts +5 -0
  637. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +7 -0
  638. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -0
  639. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +5 -0
  640. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +7 -0
  641. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -0
  642. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.d.ts +5 -0
  643. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +7 -0
  644. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -0
  645. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.d.ts +5 -0
  646. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +7 -0
  647. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -0
  648. package/XR/features/WebXRControllerPointerSelection.d.ts +14 -0
  649. package/XR/features/WebXRControllerPointerSelection.js +55 -21
  650. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  651. package/XR/features/WebXRHandTracking.d.ts +2 -0
  652. package/XR/features/WebXRHandTracking.js +34 -14
  653. package/XR/features/WebXRHandTracking.js.map +1 -1
  654. package/XR/features/WebXRLayers.d.ts +78 -0
  655. package/XR/features/WebXRLayers.js +243 -0
  656. package/XR/features/WebXRLayers.js.map +1 -0
  657. package/XR/features/WebXRNearInteraction.d.ts +1 -0
  658. package/XR/features/WebXRNearInteraction.js +2 -0
  659. package/XR/features/WebXRNearInteraction.js.map +1 -1
  660. package/XR/features/WebXRPlaneDetector.js +8 -12
  661. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  662. package/XR/features/index.d.ts +1 -0
  663. package/XR/features/index.js +1 -0
  664. package/XR/features/index.js.map +1 -1
  665. package/XR/native/index.d.ts +1 -0
  666. package/XR/native/index.js +2 -0
  667. package/XR/native/index.js.map +1 -0
  668. package/XR/native/nativeXRRenderTarget.d.ts +44 -0
  669. package/XR/native/nativeXRRenderTarget.js +81 -0
  670. package/XR/native/nativeXRRenderTarget.js.map +1 -0
  671. package/XR/webXRCamera.js +2 -10
  672. package/XR/webXRCamera.js.map +1 -1
  673. package/XR/webXRExperienceHelper.js +15 -13
  674. package/XR/webXRExperienceHelper.js.map +1 -1
  675. package/XR/webXRFeaturesManager.d.ts +4 -0
  676. package/XR/webXRFeaturesManager.js +5 -1
  677. package/XR/webXRFeaturesManager.js.map +1 -1
  678. package/XR/webXRLayerWrapper.d.ts +48 -0
  679. package/XR/webXRLayerWrapper.js +60 -0
  680. package/XR/webXRLayerWrapper.js.map +1 -0
  681. package/XR/webXRManagedOutputCanvas.d.ts +2 -1
  682. package/XR/webXRManagedOutputCanvas.js +36 -29
  683. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  684. package/XR/webXRRenderTargetTextureProvider.d.ts +55 -0
  685. package/XR/webXRRenderTargetTextureProvider.js +63 -0
  686. package/XR/webXRRenderTargetTextureProvider.js.map +1 -0
  687. package/XR/webXRSessionManager.d.ts +30 -7
  688. package/XR/webXRSessionManager.js +62 -64
  689. package/XR/webXRSessionManager.js.map +1 -1
  690. package/XR/webXRTypes.d.ts +1 -1
  691. package/XR/webXRTypes.js.map +1 -1
  692. package/XR/webXRWebGLLayer.d.ts +36 -0
  693. package/XR/webXRWebGLLayer.js +69 -0
  694. package/XR/webXRWebGLLayer.js.map +1 -0
  695. package/abstractScene.d.ts +1 -1
  696. package/abstractScene.js +1 -1
  697. package/abstractScene.js.map +1 -1
  698. package/index.d.ts +1 -0
  699. package/index.js +1 -0
  700. package/index.js.map +1 -1
  701. package/node.d.ts +30 -1
  702. package/node.js +12 -0
  703. package/node.js.map +1 -1
  704. package/package.json +87 -6
  705. package/scene.d.ts +14 -0
  706. package/scene.js +31 -0
  707. package/scene.js.map +1 -1
  708. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +0 -66
  709. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +0 -1
@@ -16,7 +16,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
16
16
  return function (scene) {
17
17
  var engine = scene.getEngine();
18
18
  return {
19
- id: "fps",
19
+ id: "FPS",
20
20
  getData: function () { return engine.getFps(); },
21
21
  dispose: defaultDisposeImpl,
22
22
  };
@@ -24,6 +24,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
24
24
  };
25
25
  /**
26
26
  * Gets the initializer for the strategy used for collection of cpu utilization metrics.
27
+ * Needs the experimental compute pressure API.
27
28
  * @returns the initializer for the cpu utilization strategy
28
29
  */
29
30
  PerfCollectionStrategy.CpuStrategy = function () {
@@ -33,7 +34,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
33
34
  value = update.cpuUtilization;
34
35
  });
35
36
  return {
36
- id: "cpu utilization",
37
+ id: "CPU utilization",
37
38
  getData: function () { return value; },
38
39
  dispose: function () { return scene.onComputePressureChanged.remove(computePressureObserver); },
39
40
  };
@@ -46,7 +47,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
46
47
  PerfCollectionStrategy.TotalMeshesStrategy = function () {
47
48
  return function (scene) {
48
49
  return {
49
- id: "total meshes",
50
+ id: "Total meshes",
50
51
  getData: function () { return scene.meshes.length; },
51
52
  dispose: defaultDisposeImpl,
52
53
  };
@@ -59,7 +60,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
59
60
  PerfCollectionStrategy.ActiveMeshesStrategy = function () {
60
61
  return function (scene) {
61
62
  return {
62
- id: "active meshes",
63
+ id: "Active meshes",
63
64
  getData: function () { return scene.getActiveMeshes().length; },
64
65
  dispose: defaultDisposeImpl,
65
66
  };
@@ -69,10 +70,10 @@ var PerfCollectionStrategy = /** @class */ (function () {
69
70
  * Gets the initializer for the strategy used for collection of active indices metrics.
70
71
  * @returns the initializer for the active indices strategy
71
72
  */
72
- PerfCollectionStrategy.ActiveIndiciesStrategy = function () {
73
+ PerfCollectionStrategy.ActiveIndicesStrategy = function () {
73
74
  return function (scene) {
74
75
  return {
75
- id: "active indices",
76
+ id: "Active indices",
76
77
  getData: function () { return scene.getActiveIndices(); },
77
78
  dispose: defaultDisposeImpl,
78
79
  };
@@ -85,7 +86,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
85
86
  PerfCollectionStrategy.ActiveFacesStrategy = function () {
86
87
  return function (scene) {
87
88
  return {
88
- id: "active faces",
89
+ id: "Active faces",
89
90
  getData: function () { return scene.getActiveIndices() / 3; },
90
91
  dispose: defaultDisposeImpl,
91
92
  };
@@ -98,7 +99,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
98
99
  PerfCollectionStrategy.ActiveBonesStrategy = function () {
99
100
  return function (scene) {
100
101
  return {
101
- id: "active bones",
102
+ id: "Active bones",
102
103
  getData: function () { return scene.getActiveBones(); },
103
104
  dispose: defaultDisposeImpl,
104
105
  };
@@ -111,7 +112,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
111
112
  PerfCollectionStrategy.ActiveParticlesStrategy = function () {
112
113
  return function (scene) {
113
114
  return {
114
- id: "active particles",
115
+ id: "Active particles",
115
116
  getData: function () { return scene.getActiveParticles(); },
116
117
  dispose: defaultDisposeImpl,
117
118
  };
@@ -131,7 +132,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
131
132
  drawCalls = scene.getEngine()._drawCalls.current;
132
133
  });
133
134
  return {
134
- id: "draw calls",
135
+ id: "Draw calls",
135
136
  getData: function () { return drawCalls; },
136
137
  dispose: function () {
137
138
  scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);
@@ -147,7 +148,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
147
148
  PerfCollectionStrategy.TotalLightsStrategy = function () {
148
149
  return function (scene) {
149
150
  return {
150
- id: "total lights",
151
+ id: "Total lights",
151
152
  getData: function () { return scene.lights.length; },
152
153
  dispose: defaultDisposeImpl,
153
154
  };
@@ -160,7 +161,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
160
161
  PerfCollectionStrategy.TotalVerticesStrategy = function () {
161
162
  return function (scene) {
162
163
  return {
163
- id: "total vertices",
164
+ id: "Total vertices",
164
165
  getData: function () { return scene.getTotalVertices(); },
165
166
  dispose: defaultDisposeImpl,
166
167
  };
@@ -173,7 +174,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
173
174
  PerfCollectionStrategy.TotalMaterialsStrategy = function () {
174
175
  return function (scene) {
175
176
  return {
176
- id: "total materials",
177
+ id: "Total materials",
177
178
  getData: function () { return scene.materials.length; },
178
179
  dispose: defaultDisposeImpl,
179
180
  };
@@ -186,7 +187,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
186
187
  PerfCollectionStrategy.TotalTexturesStrategy = function () {
187
188
  return function (scene) {
188
189
  return {
189
- id: "total textures",
190
+ id: "Total textures",
190
191
  getData: function () { return scene.textures.length; },
191
192
  dispose: defaultDisposeImpl,
192
193
  };
@@ -207,7 +208,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
207
208
  timeTaken = PrecisionDate.Now - startTime;
208
209
  });
209
210
  return {
210
- id: "absolute fps",
211
+ id: "Absolute FPS",
211
212
  getData: function () { return 1000.0 / timeTaken; },
212
213
  dispose: function () {
213
214
  scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);
@@ -231,7 +232,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
231
232
  timeTaken = PrecisionDate.Now - startTime;
232
233
  });
233
234
  return {
234
- id: "meshes selection time",
235
+ id: "Meshes Selection",
235
236
  getData: function () { return timeTaken; },
236
237
  dispose: function () {
237
238
  scene.onBeforeActiveMeshesEvaluationObservable.remove(onBeforeActiveMeshesObserver);
@@ -255,7 +256,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
255
256
  timeTaken = PrecisionDate.Now - startTime;
256
257
  });
257
258
  return {
258
- id: "render targets time",
259
+ id: "Render Targets",
259
260
  getData: function () { return timeTaken; },
260
261
  dispose: function () {
261
262
  scene.onBeforeRenderTargetsRenderObservable.remove(onBeforeRenderTargetsObserver);
@@ -279,7 +280,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
279
280
  timeTaken = PrecisionDate.Now - startTime;
280
281
  });
281
282
  return {
282
- id: "particles time",
283
+ id: "Particles",
283
284
  getData: function () { return timeTaken; },
284
285
  dispose: function () {
285
286
  scene.onBeforeParticlesRenderingObservable.remove(onBeforeParticlesObserver);
@@ -294,20 +295,22 @@ var PerfCollectionStrategy = /** @class */ (function () {
294
295
  */
295
296
  PerfCollectionStrategy.SpritesStrategy = function () {
296
297
  return function (scene) {
298
+ var _a, _b;
297
299
  var startTime = PrecisionDate.Now;
298
300
  var timeTaken = 0;
299
- var onBeforeSpritesObserver = scene.onBeforeSpritesRenderingObservable.add(function () {
301
+ var onBeforeSpritesObserver = (_a = scene.onBeforeSpritesRenderingObservable) === null || _a === void 0 ? void 0 : _a.add(function () {
300
302
  startTime = PrecisionDate.Now;
301
303
  });
302
- var onAfterSpritesObserver = scene.onAfterSpritesRenderingObservable.add(function () {
304
+ var onAfterSpritesObserver = (_b = scene.onAfterSpritesRenderingObservable) === null || _b === void 0 ? void 0 : _b.add(function () {
303
305
  timeTaken = PrecisionDate.Now - startTime;
304
306
  });
305
307
  return {
306
- id: "sprites time",
308
+ id: "Sprites",
307
309
  getData: function () { return timeTaken; },
308
310
  dispose: function () {
309
- scene.onBeforeSpritesRenderingObservable.remove(onBeforeSpritesObserver);
310
- scene.onAfterSpritesRenderingObservable.remove(onAfterSpritesObserver);
311
+ var _a, _b;
312
+ (_a = scene.onBeforeSpritesRenderingObservable) === null || _a === void 0 ? void 0 : _a.remove(onBeforeSpritesObserver);
313
+ (_b = scene.onAfterSpritesRenderingObservable) === null || _b === void 0 ? void 0 : _b.remove(onAfterSpritesObserver);
311
314
  },
312
315
  };
313
316
  };
@@ -327,7 +330,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
327
330
  timeTaken = PrecisionDate.Now - startTime;
328
331
  });
329
332
  return {
330
- id: "animations time",
333
+ id: "Animations",
331
334
  getData: function () { return timeTaken; },
332
335
  dispose: function () {
333
336
  scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);
@@ -342,20 +345,22 @@ var PerfCollectionStrategy = /** @class */ (function () {
342
345
  */
343
346
  PerfCollectionStrategy.PhysicsStrategy = function () {
344
347
  return function (scene) {
348
+ var _a, _b;
345
349
  var startTime = PrecisionDate.Now;
346
350
  var timeTaken = 0;
347
- var onBeforePhysicsObserver = scene.onBeforePhysicsObservable.add(function () {
351
+ var onBeforePhysicsObserver = (_a = scene.onBeforePhysicsObservable) === null || _a === void 0 ? void 0 : _a.add(function () {
348
352
  startTime = PrecisionDate.Now;
349
353
  });
350
- var onAfterPhysicsObserver = scene.onAfterPhysicsObservable.add(function () {
354
+ var onAfterPhysicsObserver = (_b = scene.onAfterPhysicsObservable) === null || _b === void 0 ? void 0 : _b.add(function () {
351
355
  timeTaken = PrecisionDate.Now - startTime;
352
356
  });
353
357
  return {
354
- id: "physics time",
358
+ id: "Physics",
355
359
  getData: function () { return timeTaken; },
356
360
  dispose: function () {
357
- scene.onBeforePhysicsObservable.remove(onBeforePhysicsObserver);
358
- scene.onAfterPhysicsObservable.remove(onAfterPhysicsObserver);
361
+ var _a, _b;
362
+ (_a = scene.onBeforePhysicsObservable) === null || _a === void 0 ? void 0 : _a.remove(onBeforePhysicsObserver);
363
+ (_b = scene.onAfterPhysicsObservable) === null || _b === void 0 ? void 0 : _b.remove(onAfterPhysicsObserver);
359
364
  },
360
365
  };
361
366
  };
@@ -375,7 +380,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
375
380
  timeTaken = PrecisionDate.Now - startTime;
376
381
  });
377
382
  return {
378
- id: "render time",
383
+ id: "Render",
379
384
  getData: function () { return timeTaken; },
380
385
  dispose: function () {
381
386
  scene.onBeforeDrawPhaseObservable.remove(onBeforeDrawPhaseObserver);
@@ -399,7 +404,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
399
404
  timeTaken = PrecisionDate.Now - startTime;
400
405
  });
401
406
  return {
402
- id: "total frame time",
407
+ id: "Frame Total",
403
408
  getData: function () { return timeTaken; },
404
409
  dispose: function () {
405
410
  scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);
@@ -423,7 +428,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
423
428
  startTime = PrecisionDate.Now;
424
429
  });
425
430
  return {
426
- id: "inter-frame time",
431
+ id: "Inter-frame",
427
432
  getData: function () { return timeTaken; },
428
433
  dispose: function () {
429
434
  scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);
@@ -441,7 +446,7 @@ var PerfCollectionStrategy = /** @class */ (function () {
441
446
  var engineInstrumentation = new EngineInstrumentation(scene.getEngine());
442
447
  engineInstrumentation.captureGPUFrameTime = true;
443
448
  return {
444
- id: "gpu frame time",
449
+ id: "GPU frame time",
445
450
  getData: function () { return Math.max(engineInstrumentation.gpuFrameTimeCounter.current * 0.000001, 0); },
446
451
  dispose: function () {
447
452
  engineInstrumentation.dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"performanceViewerCollectionStrategies.js","sourceRoot":"","sources":["../../../../sourceES6/core/Misc/PerformanceViewer/performanceViewerCollectionStrategies.ts"],"names":[],"mappings":"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","sourcesContent":["import { EngineInstrumentation } from \"../../Instrumentation/engineInstrumentation\";\r\nimport { Scene } from \"../../scene\";\r\nimport { PrecisionDate } from \"../precisionDate\";\r\n\r\n/**\r\n * Defines the general structure of what is necessary for a collection strategy.\r\n */\r\nexport interface IPerfViewerCollectionStrategy {\r\n /**\r\n * The id of the strategy.\r\n */\r\n id: string;\r\n /**\r\n * Function which gets the data for the strategy.\r\n */\r\n getData: () => number;\r\n /**\r\n * Function which does any necessary cleanup. Called when performanceViewerCollector.dispose() is called.\r\n */\r\n dispose: () => void;\r\n}\r\n// Dispose which does nothing.\r\nconst defaultDisposeImpl = () => {};\r\n\r\n/**\r\n * Initializer callback for a strategy\r\n */\r\nexport type PerfStrategyInitialization = (scene: Scene) => IPerfViewerCollectionStrategy;\r\n/**\r\n * Defines the predefined strategies used in the performance viewer.\r\n */\r\nexport class PerfCollectionStrategy {\r\n /**\r\n * Gets the initializer for the strategy used for collection of fps metrics\r\n * @returns the initializer for the fps strategy\r\n */\r\n public static FpsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n const engine = scene.getEngine();\r\n return {\r\n id: \"fps\",\r\n getData: () => engine.getFps(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of cpu utilization metrics.\r\n * @returns the initializer for the cpu utilization strategy\r\n */\r\n public static CpuStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let value = 0;\r\n const computePressureObserver = scene.onComputePressureChanged.add((update) => {\r\n value = update.cpuUtilization;\r\n });\r\n return {\r\n id: \"cpu utilization\",\r\n getData: () => value,\r\n dispose: () => scene.onComputePressureChanged.remove(computePressureObserver),\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total meshes metrics.\r\n * @returns the initializer for the total meshes strategy\r\n */\r\n public static TotalMeshesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"total meshes\",\r\n getData: () => scene.meshes.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active meshes metrics.\r\n * @returns the initializer for the active meshes strategy\r\n */\r\n public static ActiveMeshesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"active meshes\",\r\n getData: () => scene.getActiveMeshes().length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active indices metrics.\r\n * @returns the initializer for the active indices strategy\r\n */\r\n public static ActiveIndiciesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"active indices\",\r\n getData: () => scene.getActiveIndices(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active faces metrics.\r\n * @returns the initializer for the active faces strategy\r\n */\r\n public static ActiveFacesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"active faces\",\r\n getData: () => scene.getActiveIndices() / 3,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active bones metrics.\r\n * @returns the initializer for the active bones strategy\r\n */\r\n public static ActiveBonesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"active bones\",\r\n getData: () => scene.getActiveBones(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active particles metrics.\r\n * @returns the initializer for the active particles strategy\r\n */\r\n public static ActiveParticlesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"active particles\",\r\n getData: () => scene.getActiveParticles(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of draw calls metrics.\r\n * @returns the initializer for the draw calls strategy\r\n */\r\n public static DrawCallsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let drawCalls = 0;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n scene.getEngine()._drawCalls.fetchNewFrame();\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n drawCalls = scene.getEngine()._drawCalls.current;\r\n });\r\n\r\n return {\r\n id: \"draw calls\",\r\n getData: () => drawCalls,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total lights metrics.\r\n * @returns the initializer for the total lights strategy\r\n */\r\n public static TotalLightsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"total lights\",\r\n getData: () => scene.lights.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total vertices metrics.\r\n * @returns the initializer for the total vertices strategy\r\n */\r\n public static TotalVerticesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"total vertices\",\r\n getData: () => scene.getTotalVertices(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total materials metrics.\r\n * @returns the initializer for the total materials strategy\r\n */\r\n public static TotalMaterialsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"total materials\",\r\n getData: () => scene.materials.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total textures metrics.\r\n * @returns the initializer for the total textures strategy\r\n */\r\n public static TotalTexturesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"total textures\",\r\n getData: () => scene.textures.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of absolute fps metrics.\r\n * @returns the initializer for the absolute fps strategy\r\n */\r\n public static AbsoluteFpsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 1;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"absolute fps\",\r\n getData: () => 1000.0 / timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of meshes selection time metrics.\r\n * @returns the initializer for the meshes selection time strategy\r\n */\r\n public static MeshesSelectionStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeActiveMeshesObserver = scene.onBeforeActiveMeshesEvaluationObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterActiveMeshesObserver = scene.onAfterActiveMeshesEvaluationObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"meshes selection time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeActiveMeshesEvaluationObservable.remove(onBeforeActiveMeshesObserver);\r\n scene.onAfterActiveMeshesEvaluationObservable.remove(onAfterActiveMeshesObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of render targets time metrics.\r\n * @returns the initializer for the render targets time strategy\r\n */\r\n public static RenderTargetsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeRenderTargetsObserver = scene.onBeforeRenderTargetsRenderObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterRenderTargetsObserver = scene.onAfterRenderTargetsRenderObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"render targets time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeRenderTargetsRenderObservable.remove(onBeforeRenderTargetsObserver);\r\n scene.onAfterRenderTargetsRenderObservable.remove(onAfterRenderTargetsObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of particles time metrics.\r\n * @returns the initializer for the particles time strategy\r\n */\r\n public static ParticlesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeParticlesObserver = scene.onBeforeParticlesRenderingObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterParticlesObserver = scene.onAfterParticlesRenderingObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"particles time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeParticlesRenderingObservable.remove(onBeforeParticlesObserver);\r\n scene.onAfterParticlesRenderingObservable.remove(onAfterParticlesObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of sprites time metrics.\r\n * @returns the initializer for the sprites time strategy\r\n */\r\n public static SpritesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeSpritesObserver = scene.onBeforeSpritesRenderingObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterSpritesObserver = scene.onAfterSpritesRenderingObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"sprites time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeSpritesRenderingObservable.remove(onBeforeSpritesObserver);\r\n scene.onAfterSpritesRenderingObservable.remove(onAfterSpritesObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of animations time metrics.\r\n * @returns the initializer for the animations time strategy\r\n */\r\n public static AnimationsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterAnimationsObserver = scene.onAfterAnimationsObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"animations time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterAnimationsObservable.remove(onAfterAnimationsObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of physics time metrics.\r\n * @returns the initializer for the physics time strategy\r\n */\r\n public static PhysicsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforePhysicsObserver = scene.onBeforePhysicsObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterPhysicsObserver = scene.onAfterPhysicsObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"physics time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforePhysicsObservable.remove(onBeforePhysicsObserver);\r\n scene.onAfterPhysicsObservable.remove(onAfterPhysicsObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of render time metrics.\r\n * @returns the initializer for the render time strategy\r\n */\r\n public static RenderStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeDrawPhaseObserver = scene.onBeforeDrawPhaseObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterDrawPhaseObserver = scene.onAfterDrawPhaseObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"render time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeDrawPhaseObservable.remove(onBeforeDrawPhaseObserver);\r\n scene.onAfterDrawPhaseObservable.remove(onAfterDrawPhaseObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total frame time metrics.\r\n * @returns the initializer for the total frame time strategy\r\n */\r\n public static FrameTotalStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"total frame time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of inter-frame time metrics.\r\n * @returns the initializer for the inter-frame time strategy\r\n */\r\n public static InterFrameStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n return {\r\n id: \"inter-frame time\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of gpu frame time metrics.\r\n * @returns the initializer for the gpu frame time strategy\r\n */\r\n public static GpuFrameTimeStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n const engineInstrumentation = new EngineInstrumentation(scene.getEngine());\r\n engineInstrumentation.captureGPUFrameTime = true;\r\n return {\r\n id: \"gpu frame time\",\r\n getData: () => Math.max(engineInstrumentation.gpuFrameTimeCounter.current * 0.000001, 0),\r\n dispose: () => {\r\n engineInstrumentation.dispose();\r\n },\r\n };\r\n };\r\n }\r\n}"]}
1
+ {"version":3,"file":"performanceViewerCollectionStrategies.js","sourceRoot":"","sources":["../../../../sourceES6/core/Misc/PerformanceViewer/performanceViewerCollectionStrategies.ts"],"names":[],"mappings":"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","sourcesContent":["import { EngineInstrumentation } from \"../../Instrumentation/engineInstrumentation\";\r\nimport { Scene } from \"../../scene\";\r\nimport { PrecisionDate } from \"../precisionDate\";\r\n\r\n/**\r\n * Defines the general structure of what is necessary for a collection strategy.\r\n */\r\nexport interface IPerfViewerCollectionStrategy {\r\n /**\r\n * The id of the strategy.\r\n */\r\n id: string;\r\n /**\r\n * Function which gets the data for the strategy.\r\n */\r\n getData: () => number;\r\n /**\r\n * Function which does any necessary cleanup. Called when performanceViewerCollector.dispose() is called.\r\n */\r\n dispose: () => void;\r\n}\r\n// Dispose which does nothing.\r\nconst defaultDisposeImpl = () => {};\r\n\r\n/**\r\n * Initializer callback for a strategy\r\n */\r\nexport type PerfStrategyInitialization = (scene: Scene) => IPerfViewerCollectionStrategy;\r\n/**\r\n * Defines the predefined strategies used in the performance viewer.\r\n */\r\nexport class PerfCollectionStrategy {\r\n /**\r\n * Gets the initializer for the strategy used for collection of fps metrics\r\n * @returns the initializer for the fps strategy\r\n */\r\n public static FpsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n const engine = scene.getEngine();\r\n return {\r\n id: \"FPS\",\r\n getData: () => engine.getFps(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of cpu utilization metrics.\r\n * Needs the experimental compute pressure API.\r\n * @returns the initializer for the cpu utilization strategy\r\n */\r\n public static CpuStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let value = 0;\r\n const computePressureObserver = scene.onComputePressureChanged.add((update) => {\r\n value = update.cpuUtilization;\r\n });\r\n return {\r\n id: \"CPU utilization\",\r\n getData: () => value,\r\n dispose: () => scene.onComputePressureChanged.remove(computePressureObserver),\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total meshes metrics.\r\n * @returns the initializer for the total meshes strategy\r\n */\r\n public static TotalMeshesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Total meshes\",\r\n getData: () => scene.meshes.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active meshes metrics.\r\n * @returns the initializer for the active meshes strategy\r\n */\r\n public static ActiveMeshesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Active meshes\",\r\n getData: () => scene.getActiveMeshes().length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active indices metrics.\r\n * @returns the initializer for the active indices strategy\r\n */\r\n public static ActiveIndicesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Active indices\",\r\n getData: () => scene.getActiveIndices(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active faces metrics.\r\n * @returns the initializer for the active faces strategy\r\n */\r\n public static ActiveFacesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Active faces\",\r\n getData: () => scene.getActiveIndices() / 3,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active bones metrics.\r\n * @returns the initializer for the active bones strategy\r\n */\r\n public static ActiveBonesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Active bones\",\r\n getData: () => scene.getActiveBones(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of active particles metrics.\r\n * @returns the initializer for the active particles strategy\r\n */\r\n public static ActiveParticlesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Active particles\",\r\n getData: () => scene.getActiveParticles(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of draw calls metrics.\r\n * @returns the initializer for the draw calls strategy\r\n */\r\n public static DrawCallsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let drawCalls = 0;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n scene.getEngine()._drawCalls.fetchNewFrame();\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n drawCalls = scene.getEngine()._drawCalls.current;\r\n });\r\n\r\n return {\r\n id: \"Draw calls\",\r\n getData: () => drawCalls,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total lights metrics.\r\n * @returns the initializer for the total lights strategy\r\n */\r\n public static TotalLightsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Total lights\",\r\n getData: () => scene.lights.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total vertices metrics.\r\n * @returns the initializer for the total vertices strategy\r\n */\r\n public static TotalVerticesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Total vertices\",\r\n getData: () => scene.getTotalVertices(),\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total materials metrics.\r\n * @returns the initializer for the total materials strategy\r\n */\r\n public static TotalMaterialsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Total materials\",\r\n getData: () => scene.materials.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total textures metrics.\r\n * @returns the initializer for the total textures strategy\r\n */\r\n public static TotalTexturesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n return {\r\n id: \"Total textures\",\r\n getData: () => scene.textures.length,\r\n dispose: defaultDisposeImpl,\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of absolute fps metrics.\r\n * @returns the initializer for the absolute fps strategy\r\n */\r\n public static AbsoluteFpsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 1;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Absolute FPS\",\r\n getData: () => 1000.0 / timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of meshes selection time metrics.\r\n * @returns the initializer for the meshes selection time strategy\r\n */\r\n public static MeshesSelectionStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeActiveMeshesObserver = scene.onBeforeActiveMeshesEvaluationObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterActiveMeshesObserver = scene.onAfterActiveMeshesEvaluationObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Meshes Selection\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeActiveMeshesEvaluationObservable.remove(onBeforeActiveMeshesObserver);\r\n scene.onAfterActiveMeshesEvaluationObservable.remove(onAfterActiveMeshesObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of render targets time metrics.\r\n * @returns the initializer for the render targets time strategy\r\n */\r\n public static RenderTargetsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeRenderTargetsObserver = scene.onBeforeRenderTargetsRenderObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterRenderTargetsObserver = scene.onAfterRenderTargetsRenderObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Render Targets\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeRenderTargetsRenderObservable.remove(onBeforeRenderTargetsObserver);\r\n scene.onAfterRenderTargetsRenderObservable.remove(onAfterRenderTargetsObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of particles time metrics.\r\n * @returns the initializer for the particles time strategy\r\n */\r\n public static ParticlesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeParticlesObserver = scene.onBeforeParticlesRenderingObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterParticlesObserver = scene.onAfterParticlesRenderingObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Particles\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeParticlesRenderingObservable.remove(onBeforeParticlesObserver);\r\n scene.onAfterParticlesRenderingObservable.remove(onAfterParticlesObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of sprites time metrics.\r\n * @returns the initializer for the sprites time strategy\r\n */\r\n public static SpritesStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeSpritesObserver = scene.onBeforeSpritesRenderingObservable?.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterSpritesObserver = scene.onAfterSpritesRenderingObservable?.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Sprites\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeSpritesRenderingObservable?.remove(onBeforeSpritesObserver);\r\n scene.onAfterSpritesRenderingObservable?.remove(onAfterSpritesObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of animations time metrics.\r\n * @returns the initializer for the animations time strategy\r\n */\r\n public static AnimationsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterAnimationsObserver = scene.onAfterAnimationsObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Animations\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterAnimationsObservable.remove(onAfterAnimationsObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of physics time metrics.\r\n * @returns the initializer for the physics time strategy\r\n */\r\n public static PhysicsStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforePhysicsObserver = scene.onBeforePhysicsObservable?.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterPhysicsObserver = scene.onAfterPhysicsObservable?.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Physics\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforePhysicsObservable?.remove(onBeforePhysicsObserver);\r\n scene.onAfterPhysicsObservable?.remove(onAfterPhysicsObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of render time metrics.\r\n * @returns the initializer for the render time strategy\r\n */\r\n public static RenderStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeDrawPhaseObserver = scene.onBeforeDrawPhaseObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterDrawPhaseObserver = scene.onAfterDrawPhaseObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Render\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeDrawPhaseObservable.remove(onBeforeDrawPhaseObserver);\r\n scene.onAfterDrawPhaseObservable.remove(onAfterDrawPhaseObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of total frame time metrics.\r\n * @returns the initializer for the total frame time strategy\r\n */\r\n public static FrameTotalStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n return {\r\n id: \"Frame Total\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of inter-frame time metrics.\r\n * @returns the initializer for the inter-frame time strategy\r\n */\r\n public static InterFrameStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n let startTime = PrecisionDate.Now;\r\n let timeTaken = 0;\r\n\r\n const onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n timeTaken = PrecisionDate.Now - startTime;\r\n });\r\n\r\n const onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n startTime = PrecisionDate.Now;\r\n });\r\n\r\n return {\r\n id: \"Inter-frame\",\r\n getData: () => timeTaken,\r\n dispose: () => {\r\n scene.onBeforeAnimationsObservable.remove(onBeforeAnimationsObserver);\r\n scene.onAfterRenderObservable.remove(onAfterRenderObserver);\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Gets the initializer for the strategy used for collection of gpu frame time metrics.\r\n * @returns the initializer for the gpu frame time strategy\r\n */\r\n public static GpuFrameTimeStrategy(): PerfStrategyInitialization {\r\n return (scene) => {\r\n const engineInstrumentation = new EngineInstrumentation(scene.getEngine());\r\n engineInstrumentation.captureGPUFrameTime = true;\r\n return {\r\n id: \"GPU frame time\",\r\n getData: () => Math.max(engineInstrumentation.gpuFrameTimeCounter.current * 0.000001, 0),\r\n dispose: () => {\r\n engineInstrumentation.dispose();\r\n },\r\n };\r\n };\r\n }\r\n}"]}
@@ -2,6 +2,23 @@ import { Scene } from "../../scene";
2
2
  import { IPerfCustomEvent, IPerfDatasets, IPerfMetadata } from "../interfaces/iPerfViewer";
3
3
  import { Observable } from "../observable";
4
4
  import { PerfStrategyInitialization } from "./performanceViewerCollectionStrategies";
5
+ /**
6
+ * Callback strategy and optional category for data collection
7
+ */
8
+ interface IPerformanceViewerStrategyParameter {
9
+ /**
10
+ * The strategy for collecting data. Available strategies are located on the PerfCollectionStrategy class
11
+ */
12
+ strategyCallback: PerfStrategyInitialization;
13
+ /**
14
+ * Category for displaying this strategy on the viewer. Can be undefined or an empty string, in which case the strategy will be displayed on top
15
+ */
16
+ category?: string;
17
+ /**
18
+ * Starts hidden
19
+ */
20
+ hidden?: boolean;
21
+ }
5
22
  /**
6
23
  * The collector class handles the collection and storage of data into the appropriate array.
7
24
  * The collector also handles notifying any observers of any updates.
@@ -12,6 +29,7 @@ export declare class PerformanceViewerCollector {
12
29
  private _strategies;
13
30
  private _startingTimestamp;
14
31
  private _hasLoadedData;
32
+ private _isStarted;
15
33
  private readonly _customEventObservable;
16
34
  private readonly _eventRestoreSet;
17
35
  /**
@@ -40,16 +58,17 @@ export declare class PerformanceViewerCollector {
40
58
  * @param _scene the scene to collect on.
41
59
  * @param _enabledStrategyCallbacks the list of data to collect with callbacks for initialization purposes.
42
60
  */
43
- constructor(_scene: Scene, _enabledStrategyCallbacks?: PerfStrategyInitialization[]);
61
+ constructor(_scene: Scene, _enabledStrategyCallbacks?: IPerformanceViewerStrategyParameter[]);
44
62
  /**
45
63
  * Registers a custom string event which will be callable via sendEvent. This method returns an event object which will contain the id of the event.
46
64
  * The user can set a value optionally, which will be used in the sendEvent method. If the value is set, we will record this value at the end of each frame,
47
65
  * if not we will increment our counter and record the value of the counter at the end of each frame. The value recorded is 0 if no sendEvent method is called, within a frame.
48
66
  * @param name The name of the event to register
49
67
  * @param forceUpdate if the code should force add an event, and replace the last one.
68
+ * @param category the category for that event
50
69
  * @returns The event registered, used in sendEvent
51
70
  */
52
- registerEvent(name: string, forceUpdate?: boolean): IPerfCustomEvent | undefined;
71
+ registerEvent(name: string, forceUpdate?: boolean, category?: string): IPerfCustomEvent | undefined;
53
72
  /**
54
73
  * Lets the perf collector handle an event, occurences or event value depending on if the event.value params is set.
55
74
  * @param event the event to handle an occurence for
@@ -63,7 +82,7 @@ export declare class PerformanceViewerCollector {
63
82
  * This method adds additional collection strategies for data collection purposes.
64
83
  * @param strategyCallbacks the list of data to collect with callbacks.
65
84
  */
66
- addCollectionStrategies(...strategyCallbacks: PerfStrategyInitialization[]): void;
85
+ addCollectionStrategies(...strategyCallbacks: IPerformanceViewerStrategyParameter[]): void;
67
86
  /**
68
87
  * Gets a 6 character hexcode representing the colour from a passed in string.
69
88
  * @param id the string to get a hex code for.
@@ -103,9 +122,10 @@ export declare class PerformanceViewerCollector {
103
122
  * Given a string containing file data, this function parses the file data into the datasets object.
104
123
  * It returns a boolean to indicate if this object was successfully loaded with the data.
105
124
  * @param data string content representing the file data.
125
+ * @param keepDatasetMeta if it should use reuse the existing dataset metadata
106
126
  * @returns true if the data was successfully loaded, false otherwise.
107
127
  */
108
- loadFromFileData(data: string): boolean;
128
+ loadFromFileData(data: string, keepDatasetMeta?: boolean): boolean;
109
129
  /**
110
130
  * Exports the datasets inside of the collector to a csv.
111
131
  */
@@ -119,8 +139,13 @@ export declare class PerformanceViewerCollector {
119
139
  * Stops the collection of data.
120
140
  */
121
141
  stop(): void;
142
+ /**
143
+ * Returns if the perf collector has been started or not.
144
+ */
145
+ get isStarted(): boolean;
122
146
  /**
123
147
  * Disposes of the object
124
148
  */
125
149
  dispose(): void;
126
150
  }
151
+ export {};
@@ -102,9 +102,10 @@ var PerformanceViewerCollector = /** @class */ (function () {
102
102
  * if not we will increment our counter and record the value of the counter at the end of each frame. The value recorded is 0 if no sendEvent method is called, within a frame.
103
103
  * @param name The name of the event to register
104
104
  * @param forceUpdate if the code should force add an event, and replace the last one.
105
+ * @param category the category for that event
105
106
  * @returns The event registered, used in sendEvent
106
107
  */
107
- PerformanceViewerCollector.prototype.registerEvent = function (name, forceUpdate) {
108
+ PerformanceViewerCollector.prototype.registerEvent = function (name, forceUpdate, category) {
108
109
  var _this = this;
109
110
  var _a;
110
111
  if (this._strategies.has(name) && !forceUpdate) {
@@ -145,7 +146,7 @@ var PerformanceViewerCollector = /** @class */ (function () {
145
146
  name: name
146
147
  };
147
148
  this._eventRestoreSet.add(name);
148
- this.addCollectionStrategies(strategy);
149
+ this.addCollectionStrategies({ strategyCallback: strategy, category: category });
149
150
  return event;
150
151
  };
151
152
  /**
@@ -176,7 +177,7 @@ var PerformanceViewerCollector = /** @class */ (function () {
176
177
  strategyCallbacks[_i] = arguments[_i];
177
178
  }
178
179
  for (var _a = 0, strategyCallbacks_1 = strategyCallbacks; _a < strategyCallbacks_1.length; _a++) {
179
- var strategyCallback = strategyCallbacks_1[_a];
180
+ var _b = strategyCallbacks_1[_a], strategyCallback = _b.strategyCallback, category = _b.category, hidden = _b.hidden;
180
181
  var strategy = strategyCallback(this._scene);
181
182
  if (this._strategies.has(strategy.id)) {
182
183
  strategy.dispose();
@@ -185,6 +186,8 @@ var PerformanceViewerCollector = /** @class */ (function () {
185
186
  this.datasets.ids.push(strategy.id);
186
187
  this._datasetMeta.set(strategy.id, {
187
188
  color: this._getHexColorFromId(strategy.id),
189
+ category: category,
190
+ hidden: hidden
188
191
  });
189
192
  this._strategies.set(strategy.id, strategy);
190
193
  }
@@ -280,9 +283,10 @@ var PerformanceViewerCollector = /** @class */ (function () {
280
283
  * Given a string containing file data, this function parses the file data into the datasets object.
281
284
  * It returns a boolean to indicate if this object was successfully loaded with the data.
282
285
  * @param data string content representing the file data.
286
+ * @param keepDatasetMeta if it should use reuse the existing dataset metadata
283
287
  * @returns true if the data was successfully loaded, false otherwise.
284
288
  */
285
- PerformanceViewerCollector.prototype.loadFromFileData = function (data) {
289
+ PerformanceViewerCollector.prototype.loadFromFileData = function (data, keepDatasetMeta) {
286
290
  var lines = data.replace(carriageReturnRegex, '').split('\n')
287
291
  .map(function (line) { return (line.split(',')
288
292
  .filter(function (s) { return s.length > 0; })); })
@@ -336,13 +340,17 @@ var PerformanceViewerCollector = /** @class */ (function () {
336
340
  this.datasets.ids = parsedDatasets.ids;
337
341
  this.datasets.data = parsedDatasets.data;
338
342
  this.datasets.startingIndices = parsedDatasets.startingIndices;
339
- this._datasetMeta.clear();
343
+ if (!keepDatasetMeta) {
344
+ this._datasetMeta.clear();
345
+ }
340
346
  this._strategies.forEach(function (strategy) { return strategy.dispose(); });
341
347
  this._strategies.clear();
342
348
  // populate metadata.
343
- for (var _a = 0, _b = this.datasets.ids; _a < _b.length; _a++) {
344
- var id = _b[_a];
345
- this._datasetMeta.set(id, { color: this._getHexColorFromId(id) });
349
+ if (!keepDatasetMeta) {
350
+ for (var _a = 0, _b = this.datasets.ids; _a < _b.length; _a++) {
351
+ var id = _b[_a];
352
+ this._datasetMeta.set(id, { color: this._getHexColorFromId(id) });
353
+ }
346
354
  }
347
355
  this.metadataObservable.notifyObservers(this._datasetMeta);
348
356
  this._hasLoadedData = true;
@@ -385,28 +393,44 @@ var PerformanceViewerCollector = /** @class */ (function () {
385
393
  if (!shouldPreserve) {
386
394
  this.datasets.data = new DynamicFloat32Array(initialArraySize);
387
395
  this.datasets.startingIndices = new DynamicFloat32Array(initialArraySize);
396
+ this._startingTimestamp = PrecisionDate.Now;
388
397
  }
389
- this._startingTimestamp = PrecisionDate.Now;
390
- this._scene.onBeforeRenderObservable.add(this._collectDataAtFrame);
398
+ else if (this._startingTimestamp === undefined) {
399
+ this._startingTimestamp = PrecisionDate.Now;
400
+ }
401
+ this._scene.onAfterRenderObservable.add(this._collectDataAtFrame);
391
402
  this._restoreStringEvents();
403
+ this._isStarted = true;
392
404
  };
393
405
  /**
394
406
  * Stops the collection of data.
395
407
  */
396
408
  PerformanceViewerCollector.prototype.stop = function () {
397
- this._scene.onBeforeRenderObservable.removeCallback(this._collectDataAtFrame);
409
+ this._scene.onAfterRenderObservable.removeCallback(this._collectDataAtFrame);
410
+ this._isStarted = false;
398
411
  };
412
+ Object.defineProperty(PerformanceViewerCollector.prototype, "isStarted", {
413
+ /**
414
+ * Returns if the perf collector has been started or not.
415
+ */
416
+ get: function () {
417
+ return this._isStarted;
418
+ },
419
+ enumerable: false,
420
+ configurable: true
421
+ });
399
422
  /**
400
423
  * Disposes of the object
401
424
  */
402
425
  PerformanceViewerCollector.prototype.dispose = function () {
403
- this._scene.onBeforeRenderObservable.removeCallback(this._collectDataAtFrame);
426
+ this._scene.onAfterRenderObservable.removeCallback(this._collectDataAtFrame);
404
427
  this._datasetMeta.clear();
405
428
  this._strategies.forEach(function (strategy) {
406
429
  strategy.dispose();
407
430
  });
408
431
  this.datasetObservable.clear();
409
432
  this.metadataObservable.clear();
433
+ this._isStarted = false;
410
434
  this.datasets = null;
411
435
  };
412
436
  return PerformanceViewerCollector;