@babylonjs/core 5.0.0-beta.3 → 5.0.0-beta.7

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 (675) hide show
  1. package/Actions/actionManager.d.ts +1 -1
  2. package/Actions/actionManager.js +5 -1
  3. package/Actions/actionManager.js.map +1 -1
  4. package/Audio/analyser.d.ts +2 -1
  5. package/Audio/analyser.js +5 -0
  6. package/Audio/analyser.js.map +1 -1
  7. package/Audio/audioSceneComponent.d.ts +1 -1
  8. package/Audio/audioSceneComponent.js +5 -0
  9. package/Audio/audioSceneComponent.js.map +1 -1
  10. package/Audio/sound.d.ts +1 -1
  11. package/Audio/sound.js +8 -1
  12. package/Audio/sound.js.map +1 -1
  13. package/Audio/soundTrack.d.ts +2 -1
  14. package/Audio/soundTrack.js +5 -0
  15. package/Audio/soundTrack.js.map +1 -1
  16. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  17. package/BakedVertexAnimation/bakedVertexAnimationManager.js +5 -0
  18. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  19. package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
  20. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  21. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  22. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  23. package/Bones/bone.d.ts +2 -1
  24. package/Bones/bone.js +28 -18
  25. package/Bones/bone.js.map +1 -1
  26. package/Bones/skeleton.js +3 -3
  27. package/Bones/skeleton.js.map +1 -1
  28. package/Buffers/buffer.d.ts +4 -0
  29. package/Buffers/buffer.js +13 -3
  30. package/Buffers/buffer.js.map +1 -1
  31. package/Cameras/Inputs/freeCameraMouseInput.d.ts +1 -0
  32. package/Cameras/Inputs/freeCameraMouseInput.js +6 -3
  33. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  34. package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
  35. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  36. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +1 -1
  37. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  38. package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +1 -1
  39. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  40. package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +1 -1
  41. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  42. package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +1 -1
  43. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  44. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +1 -1
  45. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  46. package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +1 -1
  47. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  48. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +1 -1
  49. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  50. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +1 -1
  51. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  52. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +1 -1
  53. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  54. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +1 -1
  55. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  56. package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +1 -1
  57. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  58. package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +1 -1
  59. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  60. package/Cameras/VR/vrExperienceHelper.d.ts +1 -0
  61. package/Cameras/VR/vrExperienceHelper.js +1 -0
  62. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  63. package/Cameras/VR/webVRCamera.d.ts +2 -1
  64. package/Cameras/VR/webVRCamera.js +3 -2
  65. package/Cameras/VR/webVRCamera.js.map +1 -1
  66. package/Cameras/arcRotateCamera.d.ts +1 -1
  67. package/Cameras/arcRotateCamera.js.map +1 -1
  68. package/Cameras/camera.d.ts +1 -1
  69. package/Cameras/camera.js +1 -1
  70. package/Cameras/camera.js.map +1 -1
  71. package/Cameras/deviceOrientationCamera.d.ts +1 -1
  72. package/Cameras/deviceOrientationCamera.js.map +1 -1
  73. package/Cameras/flyCamera.d.ts +1 -1
  74. package/Cameras/flyCamera.js.map +1 -1
  75. package/Cameras/followCamera.d.ts +1 -1
  76. package/Cameras/followCamera.js.map +1 -1
  77. package/Cameras/freeCamera.d.ts +1 -1
  78. package/Cameras/freeCamera.js.map +1 -1
  79. package/Cameras/gamepadCamera.d.ts +1 -1
  80. package/Cameras/gamepadCamera.js.map +1 -1
  81. package/Cameras/targetCamera.d.ts +1 -1
  82. package/Cameras/targetCamera.js.map +1 -1
  83. package/Cameras/touchCamera.d.ts +1 -1
  84. package/Cameras/touchCamera.js.map +1 -1
  85. package/Cameras/universalCamera.d.ts +1 -1
  86. package/Cameras/universalCamera.js.map +1 -1
  87. package/Cameras/virtualJoysticksCamera.d.ts +1 -1
  88. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  89. package/Collisions/collider.d.ts +1 -1
  90. package/Collisions/collider.js +48 -2
  91. package/Collisions/collider.js.map +1 -1
  92. package/Compute/computeEffect.js +2 -2
  93. package/Compute/computeEffect.js.map +1 -1
  94. package/Culling/Octrees/octreeSceneComponent.d.ts +1 -1
  95. package/Culling/Octrees/octreeSceneComponent.js +5 -0
  96. package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
  97. package/Culling/ray.d.ts +6 -4
  98. package/Culling/ray.js +31 -10
  99. package/Culling/ray.js.map +1 -1
  100. package/Debug/axesViewer.d.ts +1 -1
  101. package/Debug/axesViewer.js +5 -0
  102. package/Debug/axesViewer.js.map +1 -1
  103. package/Debug/debugLayer.d.ts +1 -1
  104. package/Debug/debugLayer.js +6 -2
  105. package/Debug/debugLayer.js.map +1 -1
  106. package/Debug/physicsViewer.d.ts +1 -1
  107. package/Debug/physicsViewer.js +3 -0
  108. package/Debug/physicsViewer.js.map +1 -1
  109. package/DeviceInput/Helpers/eventFactory.d.ts +1 -1
  110. package/DeviceInput/Helpers/eventFactory.js +2 -5
  111. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  112. package/DeviceInput/InputDevices/deviceEnums.d.ts +55 -2
  113. package/DeviceInput/InputDevices/deviceEnums.js +54 -0
  114. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  115. package/DeviceInput/InputDevices/deviceSource.d.ts +35 -0
  116. package/DeviceInput/InputDevices/deviceSource.js +38 -0
  117. package/DeviceInput/InputDevices/deviceSource.js.map +1 -0
  118. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +14 -72
  119. package/DeviceInput/InputDevices/deviceSourceManager.js +10 -180
  120. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  121. package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
  122. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  123. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.d.ts +1 -5
  124. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.js +0 -0
  125. package/DeviceInput/InputDevices/inputInterfaces.js.map +1 -0
  126. package/DeviceInput/InputDevices/internalDeviceSourceManager.d.ts +46 -0
  127. package/DeviceInput/InputDevices/internalDeviceSourceManager.js +144 -0
  128. package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -0
  129. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.d.ts +3 -7
  130. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.js +11 -16
  131. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -0
  132. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.d.ts +11 -15
  133. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.js +121 -146
  134. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -0
  135. package/DeviceInput/index.d.ts +1 -5
  136. package/DeviceInput/index.js +1 -5
  137. package/DeviceInput/index.js.map +1 -1
  138. package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
  139. package/Engines/Extensions/engine.cubeTexture.js +6 -2
  140. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  141. package/Engines/Extensions/engine.multiview.d.ts +5 -0
  142. package/Engines/Extensions/engine.multiview.js +4 -1
  143. package/Engines/Extensions/engine.multiview.js.map +1 -1
  144. package/Engines/Native/nativeInterfaces.d.ts +3 -2
  145. package/Engines/Native/nativeInterfaces.js.map +1 -1
  146. package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
  147. package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
  148. package/Engines/Processors/shaderCodeInliner.js +13 -13
  149. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  150. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +4 -1
  151. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  152. package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
  153. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  154. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +1 -1
  155. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  156. package/Engines/WebGPU/webgpuComputeContext.js +1 -1
  157. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  158. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +13 -13
  159. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  160. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +30 -30
  161. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  162. package/Engines/WebGPU/webgpuTextureHelper.js +13 -6
  163. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  164. package/Engines/engine.d.ts +2 -6
  165. package/Engines/engine.js +1 -5
  166. package/Engines/engine.js.map +1 -1
  167. package/Engines/engineCapabilities.d.ts +4 -0
  168. package/Engines/engineCapabilities.js.map +1 -1
  169. package/Engines/nativeEngine.d.ts +1 -0
  170. package/Engines/nativeEngine.js +39 -12
  171. package/Engines/nativeEngine.js.map +1 -1
  172. package/Engines/nullEngine.js +3 -1
  173. package/Engines/nullEngine.js.map +1 -1
  174. package/Engines/renderTargetWrapper.d.ts +8 -0
  175. package/Engines/renderTargetWrapper.js +20 -0
  176. package/Engines/renderTargetWrapper.js.map +1 -1
  177. package/Engines/thinEngine.d.ts +17 -1
  178. package/Engines/thinEngine.js +50 -20
  179. package/Engines/thinEngine.js.map +1 -1
  180. package/Engines/webgpuEngine.d.ts +0 -4
  181. package/Engines/webgpuEngine.js +7 -14
  182. package/Engines/webgpuEngine.js.map +1 -1
  183. package/Gamepads/Controllers/daydreamController.js +1 -1
  184. package/Gamepads/Controllers/daydreamController.js.map +1 -1
  185. package/Gamepads/Controllers/oculusTouchController.js +2 -2
  186. package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
  187. package/Gamepads/Controllers/webVRController.d.ts +1 -0
  188. package/Gamepads/Controllers/webVRController.js +1 -0
  189. package/Gamepads/Controllers/webVRController.js.map +1 -1
  190. package/Gamepads/gamepadManager.js +1 -1
  191. package/Gamepads/gamepadManager.js.map +1 -1
  192. package/Gizmos/gizmoManager.d.ts +2 -0
  193. package/Gizmos/gizmoManager.js +28 -24
  194. package/Gizmos/gizmoManager.js.map +1 -1
  195. package/Helpers/sceneHelpers.d.ts +1 -0
  196. package/Helpers/sceneHelpers.js.map +1 -1
  197. package/Inputs/scene.inputManager.d.ts +2 -2
  198. package/Inputs/scene.inputManager.js +11 -13
  199. package/Inputs/scene.inputManager.js.map +1 -1
  200. package/Instrumentation/sceneInstrumentation.js +2 -2
  201. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  202. package/Layers/effectLayer.d.ts +1 -1
  203. package/Layers/effectLayer.js +1 -1
  204. package/Layers/effectLayer.js.map +1 -1
  205. package/Layers/effectLayerSceneComponent.d.ts +1 -1
  206. package/Layers/effectLayerSceneComponent.js +7 -3
  207. package/Layers/effectLayerSceneComponent.js.map +1 -1
  208. package/Layers/glowLayer.d.ts +1 -1
  209. package/Layers/glowLayer.js.map +1 -1
  210. package/Layers/highlightLayer.d.ts +1 -1
  211. package/Layers/highlightLayer.js +2 -1
  212. package/Layers/highlightLayer.js.map +1 -1
  213. package/Layers/layer.d.ts +2 -2
  214. package/Layers/layer.js.map +1 -1
  215. package/Layers/layerSceneComponent.d.ts +1 -1
  216. package/Layers/layerSceneComponent.js +7 -3
  217. package/Layers/layerSceneComponent.js.map +1 -1
  218. package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
  219. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  220. package/Lights/Shadows/shadowGenerator.js +2 -2
  221. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  222. package/Loading/Plugins/babylonFileLoader.js +115 -29
  223. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  224. package/Loading/loadingScreen.js +8 -8
  225. package/Loading/loadingScreen.js.map +1 -1
  226. package/Loading/sceneLoader.js +3 -3
  227. package/Loading/sceneLoader.js.map +1 -1
  228. package/Materials/Background/backgroundMaterial.d.ts +1 -1
  229. package/Materials/Background/backgroundMaterial.js.map +1 -1
  230. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
  231. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
  232. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
  233. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
  234. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  235. package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
  236. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +13 -13
  238. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  239. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  240. package/Materials/Node/Blocks/Dual/index.js +1 -0
  241. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  242. package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
  243. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +28 -28
  245. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  247. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  248. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
  249. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  250. package/Materials/Node/Blocks/Dual/textureBlock.js +32 -32
  251. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  252. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  253. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  254. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  255. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  256. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  257. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  258. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
  259. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  260. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
  261. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
  263. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  265. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  266. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
  267. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  268. package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
  269. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  270. package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
  271. package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
  272. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  273. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
  274. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  275. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
  276. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  277. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
  278. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  279. package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
  280. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  281. package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
  282. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  283. package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
  284. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  285. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  286. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  287. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
  288. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
  290. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  292. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  294. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
  296. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  297. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
  298. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  299. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
  300. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
  302. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  303. package/Materials/Node/Blocks/addBlock.js +1 -1
  304. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  305. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  306. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  307. package/Materials/Node/Blocks/clampBlock.js +3 -3
  308. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  309. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  310. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  311. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  312. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  313. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  314. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  315. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  316. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  317. package/Materials/Node/Blocks/crossBlock.js +1 -1
  318. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  319. package/Materials/Node/Blocks/customBlock.js +1 -1
  320. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  321. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  322. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  323. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  324. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  325. package/Materials/Node/Blocks/divideBlock.js +1 -1
  326. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  327. package/Materials/Node/Blocks/dotBlock.js +1 -1
  328. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  329. package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
  330. package/Materials/Node/Blocks/elbowBlock.js +60 -0
  331. package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
  332. package/Materials/Node/Blocks/fresnelBlock.js +2 -2
  333. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  334. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  335. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  336. package/Materials/Node/Blocks/index.d.ts +1 -0
  337. package/Materials/Node/Blocks/index.js +1 -0
  338. package/Materials/Node/Blocks/index.js.map +1 -1
  339. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  340. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  341. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  342. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  343. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  344. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  345. package/Materials/Node/Blocks/maxBlock.js +1 -1
  346. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  347. package/Materials/Node/Blocks/minBlock.js +1 -1
  348. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  349. package/Materials/Node/Blocks/modBlock.js +1 -1
  350. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  351. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  352. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  353. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  354. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  355. package/Materials/Node/Blocks/negateBlock.js +1 -1
  356. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  357. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  358. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  359. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  360. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  361. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  362. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  363. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  364. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  365. package/Materials/Node/Blocks/powBlock.js +1 -1
  366. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  367. package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
  368. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  369. package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
  370. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  371. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  372. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  373. package/Materials/Node/Blocks/refractBlock.js +1 -1
  374. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  375. package/Materials/Node/Blocks/remapBlock.js +3 -3
  376. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  377. package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
  378. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  379. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  380. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  381. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  382. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  383. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
  384. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  385. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  386. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  387. package/Materials/Node/Blocks/stepBlock.js +1 -1
  388. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  389. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  390. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  391. package/Materials/Node/Blocks/transformBlock.js +13 -13
  392. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  393. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  394. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  395. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  396. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  397. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  398. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  399. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  400. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  401. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  402. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  403. package/Materials/Node/Blocks/waveBlock.js +3 -3
  404. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  405. package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
  406. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  407. package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
  408. package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
  409. package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
  410. package/Materials/Node/nodeMaterial.d.ts +4 -0
  411. package/Materials/Node/nodeMaterial.js +22 -11
  412. package/Materials/Node/nodeMaterial.js.map +1 -1
  413. package/Materials/Node/nodeMaterialBlock.js +12 -12
  414. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  415. package/Materials/Node/nodeMaterialBuildState.js +24 -24
  416. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  417. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
  418. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  419. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -1
  420. package/Materials/PBR/pbrBaseMaterial.js +4 -3
  421. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  422. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +1 -1
  423. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  424. package/Materials/PBR/pbrMaterial.d.ts +1 -1
  425. package/Materials/PBR/pbrMaterial.js +2 -3
  426. package/Materials/PBR/pbrMaterial.js.map +1 -1
  427. package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +1 -1
  428. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  429. package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +1 -1
  430. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  431. package/Materials/Textures/Loaders/ddsTextureLoader.js +8 -1
  432. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  433. package/Materials/Textures/Loaders/ktxTextureLoader.js +2 -2
  434. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  435. package/Materials/Textures/MultiviewRenderTarget.d.ts +2 -1
  436. package/Materials/Textures/MultiviewRenderTarget.js +10 -2
  437. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  438. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
  439. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  440. package/Materials/Textures/baseTexture.d.ts +1 -1
  441. package/Materials/Textures/baseTexture.js.map +1 -1
  442. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  443. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  444. package/Materials/Textures/internalTexture.d.ts +2 -0
  445. package/Materials/Textures/internalTexture.js +2 -0
  446. package/Materials/Textures/internalTexture.js.map +1 -1
  447. package/Materials/Textures/mirrorTexture.d.ts +2 -2
  448. package/Materials/Textures/mirrorTexture.js +7 -3
  449. package/Materials/Textures/mirrorTexture.js.map +1 -1
  450. package/Materials/Textures/multiRenderTarget.d.ts +1 -1
  451. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  452. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  453. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  454. package/Materials/Textures/refractionTexture.d.ts +1 -1
  455. package/Materials/Textures/refractionTexture.js +2 -2
  456. package/Materials/Textures/refractionTexture.js.map +1 -1
  457. package/Materials/Textures/renderTargetTexture.d.ts +1 -1
  458. package/Materials/Textures/renderTargetTexture.js +2 -2
  459. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  460. package/Materials/Textures/texture.d.ts +1 -1
  461. package/Materials/Textures/texture.js.map +1 -1
  462. package/Materials/Textures/videoTexture.js +1 -0
  463. package/Materials/Textures/videoTexture.js.map +1 -1
  464. package/Materials/effect.js +3 -3
  465. package/Materials/effect.js.map +1 -1
  466. package/Materials/material.d.ts +3 -1
  467. package/Materials/material.js +11 -3
  468. package/Materials/material.js.map +1 -1
  469. package/Materials/materialHelper.js +9 -1
  470. package/Materials/materialHelper.js.map +1 -1
  471. package/Materials/materialPluginManager.js +3 -3
  472. package/Materials/materialPluginManager.js.map +1 -1
  473. package/Materials/multiMaterial.d.ts +3 -1
  474. package/Materials/multiMaterial.js +13 -11
  475. package/Materials/multiMaterial.js.map +1 -1
  476. package/Materials/pushMaterial.d.ts +1 -1
  477. package/Materials/pushMaterial.js.map +1 -1
  478. package/Materials/shaderMaterial.js +8 -4
  479. package/Materials/shaderMaterial.js.map +1 -1
  480. package/Materials/shadowDepthWrapper.d.ts +1 -1
  481. package/Materials/shadowDepthWrapper.js +3 -3
  482. package/Materials/shadowDepthWrapper.js.map +1 -1
  483. package/Materials/standardMaterial.d.ts +2 -6
  484. package/Materials/standardMaterial.js +5 -10
  485. package/Materials/standardMaterial.js.map +1 -1
  486. package/Maths/math.size.js +1 -1
  487. package/Maths/math.size.js.map +1 -1
  488. package/Maths/math.vector.d.ts +4 -2
  489. package/Maths/math.vector.js +34 -32
  490. package/Maths/math.vector.js.map +1 -1
  491. package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
  492. package/Meshes/Builders/cylinderBuilder.js +1 -1
  493. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  494. package/Meshes/Builders/linesBuilder.js.map +1 -1
  495. package/Meshes/Compression/dracoCompression.d.ts +3 -0
  496. package/Meshes/Compression/dracoCompression.js +23 -7
  497. package/Meshes/Compression/dracoCompression.js.map +1 -1
  498. package/Meshes/abstractMesh.d.ts +6 -0
  499. package/Meshes/abstractMesh.js +18 -2
  500. package/Meshes/abstractMesh.js.map +1 -1
  501. package/Meshes/geometry.d.ts +1 -1
  502. package/Meshes/geometry.js +7 -3
  503. package/Meshes/geometry.js.map +1 -1
  504. package/Meshes/groundMesh.d.ts +1 -1
  505. package/Meshes/groundMesh.js.map +1 -1
  506. package/Meshes/mesh.js +21 -6
  507. package/Meshes/mesh.js.map +1 -1
  508. package/Meshes/mesh.lts.d.ts +1 -1
  509. package/Meshes/mesh.lts.js.map +1 -1
  510. package/Meshes/mesh.vertexData.d.ts +1 -1
  511. package/Meshes/mesh.vertexData.js +2 -2
  512. package/Meshes/mesh.vertexData.js.map +1 -1
  513. package/Meshes/polygonMesh.js +2 -2
  514. package/Meshes/polygonMesh.js.map +1 -1
  515. package/Meshes/subMesh.js +1 -2
  516. package/Meshes/subMesh.js.map +1 -1
  517. package/Meshes/subMesh.project.js +1 -2
  518. package/Meshes/subMesh.project.js.map +1 -1
  519. package/Meshes/thinInstanceMesh.js +5 -0
  520. package/Meshes/thinInstanceMesh.js.map +1 -1
  521. package/Meshes/trailMesh.d.ts +1 -1
  522. package/Meshes/trailMesh.js.map +1 -1
  523. package/Meshes/transformNode.js +40 -13
  524. package/Meshes/transformNode.js.map +1 -1
  525. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +5 -0
  526. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +13 -2
  527. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  528. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +6 -12
  529. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  530. package/Misc/PerformanceViewer/performanceViewerCollector.js +6 -6
  531. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  532. package/Misc/assetsManager.d.ts +2 -1
  533. package/Misc/assetsManager.js +15 -1
  534. package/Misc/assetsManager.js.map +1 -1
  535. package/Misc/basis.js +1 -1
  536. package/Misc/basis.js.map +1 -1
  537. package/Misc/brdfTextureTools.js +4 -1
  538. package/Misc/brdfTextureTools.js.map +1 -1
  539. package/Misc/dds.js +7 -0
  540. package/Misc/dds.js.map +1 -1
  541. package/Misc/devTools.js +1 -1
  542. package/Misc/devTools.js.map +1 -1
  543. package/Misc/environmentTextureTools.js +2 -2
  544. package/Misc/environmentTextureTools.js.map +1 -1
  545. package/Misc/fileTools.js +4 -4
  546. package/Misc/fileTools.js.map +1 -1
  547. package/Misc/index.d.ts +1 -0
  548. package/Misc/index.js +1 -0
  549. package/Misc/index.js.map +1 -1
  550. package/Misc/khronosTextureContainer2.js +4 -3
  551. package/Misc/khronosTextureContainer2.js.map +1 -1
  552. package/Misc/reflector.js +6 -6
  553. package/Misc/reflector.js.map +1 -1
  554. package/Misc/tools.js +15 -13
  555. package/Misc/tools.js.map +1 -1
  556. package/Misc/uniqueIdGenerator.js +1 -1
  557. package/Misc/uniqueIdGenerator.js.map +1 -1
  558. package/Offline/database.js +1 -1
  559. package/Offline/database.js.map +1 -1
  560. package/Particles/baseParticleSystem.d.ts +4 -1
  561. package/Particles/baseParticleSystem.js +20 -5
  562. package/Particles/baseParticleSystem.js.map +1 -1
  563. package/Particles/gpuParticleSystem.js +2 -1
  564. package/Particles/gpuParticleSystem.js.map +1 -1
  565. package/Particles/particleHelper.js +2 -2
  566. package/Particles/particleHelper.js.map +1 -1
  567. package/Physics/Plugins/ammoJSPlugin.d.ts +5 -1
  568. package/Physics/Plugins/ammoJSPlugin.js +16 -11
  569. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  570. package/Physics/physicsEngine.d.ts +1 -0
  571. package/Physics/physicsEngine.js +3 -1
  572. package/Physics/physicsEngine.js.map +1 -1
  573. package/Physics/physicsImpostor.d.ts +2 -2
  574. package/Physics/physicsImpostor.js.map +1 -1
  575. package/PostProcesses/blurPostProcess.js +5 -5
  576. package/PostProcesses/blurPostProcess.js.map +1 -1
  577. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  578. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  579. package/PostProcesses/postProcess.js +1 -1
  580. package/PostProcesses/postProcess.js.map +1 -1
  581. package/PostProcesses/postProcessManager.js +2 -2
  582. package/PostProcesses/postProcessManager.js.map +1 -1
  583. package/Probes/reflectionProbe.js +2 -2
  584. package/Probes/reflectionProbe.js.map +1 -1
  585. package/Rendering/depthPeelingRenderer.js +3 -3
  586. package/Rendering/depthPeelingRenderer.js.map +1 -1
  587. package/Rendering/geometryBufferRenderer.js +8 -8
  588. package/Rendering/geometryBufferRenderer.js.map +1 -1
  589. package/Rendering/outlineRenderer.js +1 -1
  590. package/Rendering/outlineRenderer.js.map +1 -1
  591. package/Rendering/utilityLayerRenderer.js +4 -0
  592. package/Rendering/utilityLayerRenderer.js.map +1 -1
  593. package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
  594. package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
  595. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
  596. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  597. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +1 -1
  598. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  599. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  600. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  601. package/Shaders/color.fragment.js +1 -1
  602. package/Shaders/color.fragment.js.map +1 -1
  603. package/Shaders/color.vertex.js +1 -1
  604. package/Shaders/color.vertex.js.map +1 -1
  605. package/Shaders/default.fragment.js +1 -1
  606. package/Shaders/default.fragment.js.map +1 -1
  607. package/Shaders/default.vertex.js +1 -1
  608. package/Shaders/default.vertex.js.map +1 -1
  609. package/Shaders/geometry.vertex.js +1 -1
  610. package/Shaders/geometry.vertex.js.map +1 -1
  611. package/Shaders/pbr.vertex.js +1 -1
  612. package/Shaders/pbr.vertex.js.map +1 -1
  613. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
  614. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
  615. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  616. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  617. package/Sprites/spriteManager.js +9 -10
  618. package/Sprites/spriteManager.js.map +1 -1
  619. package/Sprites/spriteMap.js +2 -2
  620. package/Sprites/spriteMap.js.map +1 -1
  621. package/Sprites/spriteRenderer.js +1 -1
  622. package/Sprites/spriteRenderer.js.map +1 -1
  623. package/XR/features/WebXRControllerPointerSelection.js +15 -9
  624. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  625. package/XR/features/WebXRDOMOverlay.js +1 -1
  626. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  627. package/XR/features/WebXRHandTracking.js +30 -30
  628. package/XR/features/WebXRHandTracking.js.map +1 -1
  629. package/XR/features/WebXRImageTracking.js +2 -2
  630. package/XR/features/WebXRImageTracking.js.map +1 -1
  631. package/XR/features/WebXRLayers.d.ts +28 -5
  632. package/XR/features/WebXRLayers.js +54 -20
  633. package/XR/features/WebXRLayers.js.map +1 -1
  634. package/XR/features/WebXRNearInteraction.d.ts +35 -3
  635. package/XR/features/WebXRNearInteraction.js +201 -40
  636. package/XR/features/WebXRNearInteraction.js.map +1 -1
  637. package/XR/motionController/webXRAbstractMotionController.js +1 -1
  638. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  639. package/XR/motionController/webXRMotionControllerManager.js +2 -2
  640. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  641. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  642. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  643. package/XR/webXRCamera.js +17 -4
  644. package/XR/webXRCamera.js.map +1 -1
  645. package/XR/webXRDefaultExperience.js +3 -0
  646. package/XR/webXRDefaultExperience.js.map +1 -1
  647. package/XR/webXREnterExitUI.js +2 -2
  648. package/XR/webXREnterExitUI.js.map +1 -1
  649. package/XR/webXRExperienceHelper.js +3 -2
  650. package/XR/webXRExperienceHelper.js.map +1 -1
  651. package/XR/webXRFeaturesManager.js +6 -6
  652. package/XR/webXRFeaturesManager.js.map +1 -1
  653. package/XR/webXRInputSource.js +3 -3
  654. package/XR/webXRInputSource.js.map +1 -1
  655. package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
  656. package/XR/webXRRenderTargetTextureProvider.js +37 -18
  657. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  658. package/XR/webXRSessionManager.d.ts +1 -0
  659. package/XR/webXRSessionManager.js +6 -1
  660. package/XR/webXRSessionManager.js.map +1 -1
  661. package/assetContainer.d.ts +1 -1
  662. package/assetContainer.js +4 -0
  663. package/assetContainer.js.map +1 -1
  664. package/node.d.ts +1 -1
  665. package/node.js.map +1 -1
  666. package/package.json +22 -13
  667. package/scene.d.ts +5 -2
  668. package/scene.js +31 -5
  669. package/scene.js.map +1 -1
  670. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +0 -1
  671. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +0 -1
  672. package/DeviceInput/Interfaces/inputInterfaces.js.map +0 -1
  673. package/DeviceInput/deviceInputSystem.d.ts +0 -60
  674. package/DeviceInput/deviceInputSystem.js +0 -84
  675. package/DeviceInput/deviceInputSystem.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"shaderDefineExpression.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Engines/Processors/Expressions/shaderDefineExpression.ts"],"names":[],"mappings":"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","sourcesContent":["/** @hidden */\r\nexport class ShaderDefineExpression {\r\n public isTrue(preprocessors: { [key: string]: string }): boolean {\r\n return true;\r\n }\r\n\r\n private static _OperatorPriority: { [name: string]: number } = {\r\n \")\": 0,\r\n \"(\": 1,\r\n \"||\": 2,\r\n \"&&\": 3,\r\n };\r\n\r\n private static _Stack = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''];\r\n\r\n public static postfixToInfix(postfix: string[]): string {\r\n const stack: string[] = [];\r\n\r\n for (let c of postfix) {\r\n if (ShaderDefineExpression._OperatorPriority[c] === undefined) {\r\n stack.push(c);\r\n } else {\r\n const v1 = stack[stack.length - 1],\r\n v2 = stack[stack.length - 2];\r\n\r\n stack.length -= 2;\r\n stack.push(`(${v2}${c}${v1})`);\r\n }\r\n }\r\n\r\n return stack[stack.length - 1];\r\n }\r\n\r\n public static infixToPostfix(infix: string): string[] {\r\n const result: string[] = [];\r\n\r\n let stackIdx = -1;\r\n\r\n const pushOperand = () => {\r\n operand = operand.trim();\r\n if (operand !== '') {\r\n result.push(operand);\r\n operand = '';\r\n }\r\n };\r\n\r\n const push = (s: string) => {\r\n if (stackIdx < ShaderDefineExpression._Stack.length - 1) {\r\n ShaderDefineExpression._Stack[++stackIdx] = s;\r\n }\r\n };\r\n\r\n const peek = () => ShaderDefineExpression._Stack[stackIdx];\r\n\r\n const pop = () => stackIdx === -1 ? '!!INVALID EXPRESSION!!' : ShaderDefineExpression._Stack[stackIdx--];\r\n\r\n let idx = 0,\r\n operand = '';\r\n\r\n while (idx < infix.length) {\r\n const c = infix.charAt(idx),\r\n token = idx < infix.length - 1 ? infix.substr(idx, 2) : '';\r\n\r\n if (c === '(') {\r\n operand = '';\r\n push(c);\r\n } else if (c === ')') {\r\n pushOperand();\r\n while (stackIdx !== -1 && peek() !== '(') {\r\n result.push(pop());\r\n }\r\n pop();\r\n } else if (ShaderDefineExpression._OperatorPriority[token] > 1) {\r\n pushOperand();\r\n while (stackIdx !== -1 && ShaderDefineExpression._OperatorPriority[peek()] >= ShaderDefineExpression._OperatorPriority[token]) {\r\n result.push(pop());\r\n }\r\n push(token);\r\n idx++;\r\n } else {\r\n operand += c;\r\n }\r\n idx++;\r\n }\r\n\r\n pushOperand();\r\n\r\n while (stackIdx !== -1) {\r\n if (peek() === '(') {\r\n pop();\r\n } else {\r\n result.push(pop());\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}"]}
1
+ {"version":3,"file":"shaderDefineExpression.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Engines/Processors/Expressions/shaderDefineExpression.ts"],"names":[],"mappings":"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","sourcesContent":["/** @hidden */\r\nexport class ShaderDefineExpression {\r\n public isTrue(preprocessors: { [key: string]: string }): boolean {\r\n return true;\r\n }\r\n\r\n private static _OperatorPriority: { [name: string]: number } = {\r\n \")\": 0,\r\n \"(\": 1,\r\n \"||\": 2,\r\n \"&&\": 3,\r\n };\r\n\r\n private static _Stack = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''];\r\n\r\n public static postfixToInfix(postfix: string[]): string {\r\n const stack: string[] = [];\r\n\r\n for (let c of postfix) {\r\n if (ShaderDefineExpression._OperatorPriority[c] === undefined) {\r\n stack.push(c);\r\n } else {\r\n const v1 = stack[stack.length - 1],\r\n v2 = stack[stack.length - 2];\r\n\r\n stack.length -= 2;\r\n stack.push(`(${v2}${c}${v1})`);\r\n }\r\n }\r\n\r\n return stack[stack.length - 1];\r\n }\r\n\r\n public static infixToPostfix(infix: string): string[] {\r\n const result: string[] = [];\r\n\r\n let stackIdx = -1;\r\n\r\n const pushOperand = () => {\r\n operand = operand.trim();\r\n if (operand !== '') {\r\n result.push(operand);\r\n operand = '';\r\n }\r\n };\r\n\r\n const push = (s: string) => {\r\n if (stackIdx < ShaderDefineExpression._Stack.length - 1) {\r\n ShaderDefineExpression._Stack[++stackIdx] = s;\r\n }\r\n };\r\n\r\n const peek = () => ShaderDefineExpression._Stack[stackIdx];\r\n\r\n const pop = () => stackIdx === -1 ? '!!INVALID EXPRESSION!!' : ShaderDefineExpression._Stack[stackIdx--];\r\n\r\n let idx = 0,\r\n operand = '';\r\n\r\n while (idx < infix.length) {\r\n const c = infix.charAt(idx),\r\n token = idx < infix.length - 1 ? infix.substr(idx, 2) : '';\r\n\r\n if (c === '(') {\r\n operand = '';\r\n push(c);\r\n } else if (c === ')') {\r\n pushOperand();\r\n while (stackIdx !== -1 && peek() !== '(') {\r\n result.push(pop());\r\n }\r\n pop();\r\n } else if (ShaderDefineExpression._OperatorPriority[token] > 1) {\r\n pushOperand();\r\n while (stackIdx !== -1 && ShaderDefineExpression._OperatorPriority[peek()] >= ShaderDefineExpression._OperatorPriority[token]) {\r\n result.push(pop());\r\n }\r\n push(token);\r\n idx++;\r\n } else {\r\n operand += c;\r\n }\r\n idx++;\r\n }\r\n\r\n pushOperand();\r\n\r\n while (stackIdx !== -1) {\r\n if (peek() === '(') {\r\n pop();\r\n } else {\r\n result.push(pop());\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}"]}
@@ -30,7 +30,7 @@ var ShaderCodeInliner = /** @class */ (function () {
30
30
  */
31
31
  ShaderCodeInliner.prototype.processCode = function () {
32
32
  if (this.debug) {
33
- console.log("Start inlining process (code size=" + this._sourceCode.length + ")...");
33
+ console.log("Start inlining process (code size=".concat(this._sourceCode.length, ")..."));
34
34
  }
35
35
  this._collectFunctions();
36
36
  this._processInlining(this._numMaxIterations);
@@ -49,7 +49,7 @@ var ShaderCodeInliner = /** @class */ (function () {
49
49
  var funcParamsStartIndex = this._sourceCode.indexOf("(", inlineTokenIndex + this.inlineToken.length);
50
50
  if (funcParamsStartIndex < 0) {
51
51
  if (this.debug) {
52
- console.warn("Could not find the opening parenthesis after the token. startIndex=" + startIndex);
52
+ console.warn("Could not find the opening parenthesis after the token. startIndex=".concat(startIndex));
53
53
  }
54
54
  startIndex = inlineTokenIndex + this.inlineToken.length;
55
55
  continue;
@@ -57,7 +57,7 @@ var ShaderCodeInliner = /** @class */ (function () {
57
57
  var funcNameMatch = ShaderCodeInliner._RegexpFindFunctionNameAndType.exec(this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex));
58
58
  if (!funcNameMatch) {
59
59
  if (this.debug) {
60
- console.warn("Could not extract the name/type of the function from: " + this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex));
60
+ console.warn("Could not extract the name/type of the function from: ".concat(this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex)));
61
61
  }
62
62
  startIndex = inlineTokenIndex + this.inlineToken.length;
63
63
  continue;
@@ -67,7 +67,7 @@ var ShaderCodeInliner = /** @class */ (function () {
67
67
  var funcParamsEndIndex = ExtractBetweenMarkers('(', ')', this._sourceCode, funcParamsStartIndex);
68
68
  if (funcParamsEndIndex < 0) {
69
69
  if (this.debug) {
70
- console.warn("Could not extract the parameters the function '" + funcName + "' (type=" + funcType + "). funcParamsStartIndex=" + funcParamsStartIndex);
70
+ console.warn("Could not extract the parameters the function '".concat(funcName, "' (type=").concat(funcType, "). funcParamsStartIndex=").concat(funcParamsStartIndex));
71
71
  }
72
72
  startIndex = inlineTokenIndex + this.inlineToken.length;
73
73
  continue;
@@ -77,7 +77,7 @@ var ShaderCodeInliner = /** @class */ (function () {
77
77
  var funcBodyStartIndex = SkipWhitespaces(this._sourceCode, funcParamsEndIndex + 1);
78
78
  if (funcBodyStartIndex === this._sourceCode.length) {
79
79
  if (this.debug) {
80
- console.warn("Could not extract the body of the function '" + funcName + "' (type=" + funcType + "). funcParamsEndIndex=" + funcParamsEndIndex);
80
+ console.warn("Could not extract the body of the function '".concat(funcName, "' (type=").concat(funcType, "). funcParamsEndIndex=").concat(funcParamsEndIndex));
81
81
  }
82
82
  startIndex = inlineTokenIndex + this.inlineToken.length;
83
83
  continue;
@@ -85,7 +85,7 @@ var ShaderCodeInliner = /** @class */ (function () {
85
85
  var funcBodyEndIndex = ExtractBetweenMarkers('{', '}', this._sourceCode, funcBodyStartIndex);
86
86
  if (funcBodyEndIndex < 0) {
87
87
  if (this.debug) {
88
- console.warn("Could not extract the body of the function '" + funcName + "' (type=" + funcType + "). funcBodyStartIndex=" + funcBodyStartIndex);
88
+ console.warn("Could not extract the body of the function '".concat(funcName, "' (type=").concat(funcType, "). funcBodyStartIndex=").concat(funcBodyStartIndex));
89
89
  }
90
90
  startIndex = inlineTokenIndex + this.inlineToken.length;
91
91
  continue;
@@ -121,7 +121,7 @@ var ShaderCodeInliner = /** @class */ (function () {
121
121
  startIndex -= funcBodyEndIndex + 1 - inlineTokenIndex;
122
122
  }
123
123
  if (this.debug) {
124
- console.log("Collect functions: " + this._functionDescr.length + " functions found. functionDescr=", this._functionDescr);
124
+ console.log("Collect functions: ".concat(this._functionDescr.length, " functions found. functionDescr="), this._functionDescr);
125
125
  }
126
126
  };
127
127
  ShaderCodeInliner.prototype._processInlining = function (numMaxIterations) {
@@ -132,7 +132,7 @@ var ShaderCodeInliner = /** @class */ (function () {
132
132
  }
133
133
  }
134
134
  if (this.debug) {
135
- console.log("numMaxIterations is " + numMaxIterations + " after inlining process");
135
+ console.log("numMaxIterations is ".concat(numMaxIterations, " after inlining process"));
136
136
  }
137
137
  return numMaxIterations >= 0;
138
138
  };
@@ -163,7 +163,7 @@ var ShaderCodeInliner = /** @class */ (function () {
163
163
  var callParamsEndIndex = ExtractBetweenMarkers('(', ')', this._sourceCode, callParamsStartIndex);
164
164
  if (callParamsEndIndex < 0) {
165
165
  if (this.debug) {
166
- console.warn("Could not extract the parameters of the function call. Function '" + name_1 + "' (type=" + type + "). callParamsStartIndex=" + callParamsStartIndex);
166
+ console.warn("Could not extract the parameters of the function call. Function '".concat(name_1, "' (type=").concat(type, "). callParamsStartIndex=").concat(callParamsStartIndex));
167
167
  }
168
168
  startIndex = functionCallIndex + name_1.length;
169
169
  continue;
@@ -197,7 +197,7 @@ var ShaderCodeInliner = /** @class */ (function () {
197
197
  var params = splitParameterCall(RemoveComments(callParams));
198
198
  if (params === null) {
199
199
  if (this.debug) {
200
- console.warn("Invalid function call: can't extract the parameters of the function call. Function '" + name_1 + "' (type=" + type + "). callParamsStartIndex=" + callParamsStartIndex + ", callParams=" + callParams);
200
+ console.warn("Invalid function call: can't extract the parameters of the function call. Function '".concat(name_1, "' (type=").concat(type, "). callParamsStartIndex=").concat(callParamsStartIndex, ", callParams=") + callParams);
201
201
  }
202
202
  startIndex = functionCallIndex + name_1.length;
203
203
  continue;
@@ -213,7 +213,7 @@ var ShaderCodeInliner = /** @class */ (function () {
213
213
  }
214
214
  if (paramNames.length !== parameters.length) {
215
215
  if (this.debug) {
216
- console.warn("Invalid function call: not the same number of parameters for the call than the number expected by the function. Function '" + name_1 + "' (type=" + type + "). function parameters=" + parameters + ", call parameters=" + paramNames);
216
+ console.warn("Invalid function call: not the same number of parameters for the call than the number expected by the function. Function '".concat(name_1, "' (type=").concat(type, "). function parameters=").concat(parameters, ", call parameters=").concat(paramNames));
217
217
  }
218
218
  startIndex = functionCallIndex + name_1.length;
219
219
  continue;
@@ -233,7 +233,7 @@ var ShaderCodeInliner = /** @class */ (function () {
233
233
  var partBetween = this._sourceCode.substring(injectDeclarationIndex + 1, functionCallIndex);
234
234
  this._sourceCode = partBefore + type + " " + retParamName + ";\n" + funcBody + "\n" + partBetween + retParamName + partAfter;
235
235
  if (this.debug) {
236
- console.log("Replace function call by code. Function '" + name_1 + "' (type=" + type + "). injectDeclarationIndex=" + injectDeclarationIndex + ", call parameters=" + paramNames);
236
+ console.log("Replace function call by code. Function '".concat(name_1, "' (type=").concat(type, "). injectDeclarationIndex=").concat(injectDeclarationIndex, ", call parameters=").concat(paramNames));
237
237
  }
238
238
  }
239
239
  else {
@@ -241,7 +241,7 @@ var ShaderCodeInliner = /** @class */ (function () {
241
241
  this._sourceCode = partBefore + funcBody + partAfter;
242
242
  startIndex += funcBody.length - (callParamsEndIndex + 1 - functionCallIndex);
243
243
  if (this.debug) {
244
- console.log("Replace function call by code. Function '" + name_1 + "' (type=" + type + "). functionCallIndex=" + functionCallIndex + ", call parameters=" + paramNames);
244
+ console.log("Replace function call by code. Function '".concat(name_1, "' (type=").concat(type, "). functionCallIndex=").concat(functionCallIndex, ", call parameters=").concat(paramNames));
245
245
  }
246
246
  }
247
247
  doAgain = true;
@@ -1 +1 @@
1
- {"version":3,"file":"shaderCodeInliner.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Processors/shaderCodeInliner.ts"],"names":[],"mappings":"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","sourcesContent":["import { EscapeRegExp, ExtractBetweenMarkers, FindBackward, IsIdentifierChar, RemoveComments, SkipWhitespaces } from \"../../Misc/codeStringParsingTools\";\r\n\r\ninterface IInlineFunctionDescr {\r\n name: string;\r\n type: string;\r\n parameters: string[];\r\n body: string;\r\n callIndex: number;\r\n}\r\n\r\n/**\r\n * Class used to inline functions in shader code\r\n*/\r\nexport class ShaderCodeInliner {\r\n\r\n private static readonly _RegexpFindFunctionNameAndType = /((\\s+?)(\\w+)\\s+(\\w+)\\s*?)$/;\r\n\r\n private _sourceCode: string;\r\n private _functionDescr: IInlineFunctionDescr[];\r\n private _numMaxIterations: number;\r\n\r\n /** Gets or sets the token used to mark the functions to inline */\r\n public inlineToken: string;\r\n\r\n /** Gets or sets the debug mode */\r\n public debug: boolean = false;\r\n\r\n /** Gets the code after the inlining process */\r\n public get code(): string {\r\n return this._sourceCode;\r\n }\r\n\r\n /**\r\n * Initializes the inliner\r\n * @param sourceCode shader code source to inline\r\n * @param numMaxIterations maximum number of iterations (used to detect recursive calls)\r\n */\r\n constructor(sourceCode: string, numMaxIterations = 20) {\r\n this._sourceCode = sourceCode;\r\n this._numMaxIterations = numMaxIterations;\r\n this._functionDescr = [];\r\n this.inlineToken = \"#define inline\";\r\n }\r\n\r\n /**\r\n * Start the processing of the shader code\r\n */\r\n public processCode() {\r\n if (this.debug) {\r\n console.log(`Start inlining process (code size=${this._sourceCode.length})...`);\r\n }\r\n this._collectFunctions();\r\n this._processInlining(this._numMaxIterations);\r\n if (this.debug) {\r\n console.log(\"End of inlining process.\");\r\n }\r\n }\r\n\r\n private _collectFunctions() {\r\n let startIndex = 0;\r\n\r\n while (startIndex < this._sourceCode.length) {\r\n // locate the function to inline and extract its name\r\n const inlineTokenIndex = this._sourceCode.indexOf(this.inlineToken, startIndex);\r\n if (inlineTokenIndex < 0) {\r\n break;\r\n }\r\n\r\n const funcParamsStartIndex = this._sourceCode.indexOf(\"(\", inlineTokenIndex + this.inlineToken.length);\r\n if (funcParamsStartIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not find the opening parenthesis after the token. startIndex=${startIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n\r\n const funcNameMatch = ShaderCodeInliner._RegexpFindFunctionNameAndType.exec(this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex));\r\n if (!funcNameMatch) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the name/type of the function from: ${this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex)}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n const [funcType, funcName] = [funcNameMatch[3], funcNameMatch[4]];\r\n\r\n // extract the parameters of the function as a whole string (without the leading / trailing parenthesis)\r\n const funcParamsEndIndex = ExtractBetweenMarkers('(', ')', this._sourceCode, funcParamsStartIndex);\r\n if (funcParamsEndIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the parameters the function '${funcName}' (type=${funcType}). funcParamsStartIndex=${funcParamsStartIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n const funcParams = this._sourceCode.substring(funcParamsStartIndex + 1, funcParamsEndIndex);\r\n\r\n // extract the body of the function (with the curly brackets)\r\n const funcBodyStartIndex = SkipWhitespaces(this._sourceCode, funcParamsEndIndex + 1);\r\n if (funcBodyStartIndex === this._sourceCode.length) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the body of the function '${funcName}' (type=${funcType}). funcParamsEndIndex=${funcParamsEndIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n\r\n const funcBodyEndIndex = ExtractBetweenMarkers('{', '}', this._sourceCode, funcBodyStartIndex);\r\n if (funcBodyEndIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the body of the function '${funcName}' (type=${funcType}). funcBodyStartIndex=${funcBodyStartIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n const funcBody = this._sourceCode.substring(funcBodyStartIndex, funcBodyEndIndex + 1);\r\n\r\n // process the parameters: extract each names\r\n const params = RemoveComments(funcParams).split(\",\");\r\n const paramNames = [];\r\n\r\n for (let p = 0; p < params.length; ++p) {\r\n const param = params[p].trim();\r\n const idx = param.lastIndexOf(\" \");\r\n\r\n if (idx >= 0) {\r\n paramNames.push(param.substring(idx + 1));\r\n }\r\n }\r\n\r\n if (funcType !== 'void') {\r\n // for functions that return a value, we will replace \"return\" by \"tempvarname = \", tempvarname being a unique generated name\r\n paramNames.push('return');\r\n }\r\n\r\n // collect the function\r\n this._functionDescr.push({\r\n \"name\": funcName,\r\n \"type\": funcType,\r\n \"parameters\": paramNames,\r\n \"body\": funcBody,\r\n \"callIndex\": 0,\r\n });\r\n\r\n startIndex = funcBodyEndIndex + 1;\r\n\r\n // remove the function from the source code\r\n const partBefore = inlineTokenIndex > 0 ? this._sourceCode.substring(0, inlineTokenIndex) : \"\";\r\n const partAfter = funcBodyEndIndex + 1 < this._sourceCode.length - 1 ? this._sourceCode.substring(funcBodyEndIndex + 1) : \"\";\r\n\r\n this._sourceCode = partBefore + partAfter;\r\n\r\n startIndex -= funcBodyEndIndex + 1 - inlineTokenIndex;\r\n }\r\n\r\n if (this.debug) {\r\n console.log(`Collect functions: ${this._functionDescr.length} functions found. functionDescr=`, this._functionDescr);\r\n }\r\n }\r\n\r\n private _processInlining(numMaxIterations: number = 20): boolean {\r\n while (numMaxIterations-- >= 0) {\r\n if (!this._replaceFunctionCallsByCode()) {\r\n break;\r\n }\r\n }\r\n\r\n if (this.debug) {\r\n console.log(`numMaxIterations is ${numMaxIterations} after inlining process`);\r\n }\r\n\r\n return numMaxIterations >= 0;\r\n }\r\n\r\n private _replaceFunctionCallsByCode(): boolean {\r\n let doAgain = false;\r\n\r\n for (const func of this._functionDescr) {\r\n const { name, type, parameters, body } = func;\r\n\r\n let startIndex = 0;\r\n\r\n while (startIndex < this._sourceCode.length) {\r\n // Look for the function name in the source code\r\n const functionCallIndex = this._sourceCode.indexOf(name, startIndex);\r\n\r\n if (functionCallIndex < 0) {\r\n break;\r\n }\r\n\r\n // Make sure \"name\" is not part of a bigger string\r\n if (functionCallIndex === 0 || IsIdentifierChar(this._sourceCode.charAt(functionCallIndex - 1))) {\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n // Find the opening parenthesis\r\n const callParamsStartIndex = SkipWhitespaces(this._sourceCode, functionCallIndex + name.length);\r\n if (callParamsStartIndex === this._sourceCode.length || this._sourceCode.charAt(callParamsStartIndex) !== '(') {\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n // extract the parameters of the function call as a whole string (without the leading / trailing parenthesis)\r\n const callParamsEndIndex = ExtractBetweenMarkers('(', ')', this._sourceCode, callParamsStartIndex);\r\n if (callParamsEndIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the parameters of the function call. Function '${name}' (type=${type}). callParamsStartIndex=${callParamsStartIndex}`);\r\n }\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n const callParams = this._sourceCode.substring(callParamsStartIndex + 1, callParamsEndIndex);\r\n\r\n // process the parameter call: extract each names\r\n\r\n // this function split the parameter list used in the function call at ',' boundaries by taking care of potential parenthesis like in:\r\n // myfunc(a, vec2(1., 0.), 4.)\r\n const splitParameterCall = (s: string) => {\r\n const parameters = [];\r\n let curIdx = 0, startParamIdx = 0;\r\n while (curIdx < s.length) {\r\n if (s.charAt(curIdx) === '(') {\r\n const idx2 = ExtractBetweenMarkers('(', ')', s, curIdx);\r\n if (idx2 < 0) {\r\n return null;\r\n }\r\n curIdx = idx2;\r\n } else if (s.charAt(curIdx) === ',') {\r\n parameters.push(s.substring(startParamIdx, curIdx));\r\n startParamIdx = curIdx + 1;\r\n }\r\n curIdx++;\r\n }\r\n if (startParamIdx < curIdx) {\r\n parameters.push(s.substring(startParamIdx, curIdx));\r\n }\r\n return parameters;\r\n };\r\n\r\n const params = splitParameterCall(RemoveComments(callParams));\r\n\r\n if (params === null) {\r\n if (this.debug) {\r\n console.warn(`Invalid function call: can't extract the parameters of the function call. Function '${name}' (type=${type}). callParamsStartIndex=${callParamsStartIndex}, callParams=` + callParams);\r\n }\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n const paramNames = [];\r\n\r\n for (let p = 0; p < params.length; ++p) {\r\n const param = params[p].trim();\r\n paramNames.push(param);\r\n }\r\n\r\n const retParamName = type !== 'void' ? name + '_' + (func.callIndex++) : null;\r\n\r\n if (retParamName) {\r\n paramNames.push(retParamName + ' =');\r\n }\r\n\r\n if (paramNames.length !== parameters.length) {\r\n if (this.debug) {\r\n console.warn(`Invalid function call: not the same number of parameters for the call than the number expected by the function. Function '${name}' (type=${type}). function parameters=${parameters}, call parameters=${paramNames}`);\r\n }\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n startIndex = callParamsEndIndex + 1;\r\n\r\n // replace the function call by the body function\r\n const funcBody = this._replaceNames(body, parameters, paramNames);\r\n\r\n let partBefore = functionCallIndex > 0 ? this._sourceCode.substring(0, functionCallIndex) : \"\";\r\n let partAfter = callParamsEndIndex + 1 < this._sourceCode.length - 1 ? this._sourceCode.substring(callParamsEndIndex + 1) : \"\";\r\n\r\n if (retParamName) {\r\n // case where the function returns a value. We generate:\r\n // FUNCTYPE retParamName;\r\n // {function body}\r\n // and replace the function call by retParamName\r\n const injectDeclarationIndex = FindBackward(this._sourceCode, functionCallIndex - 1, '\\n');\r\n\r\n partBefore = this._sourceCode.substring(0, injectDeclarationIndex + 1);\r\n let partBetween = this._sourceCode.substring(injectDeclarationIndex + 1, functionCallIndex);\r\n\r\n this._sourceCode = partBefore + type + \" \" + retParamName + \";\\n\" + funcBody + \"\\n\" + partBetween + retParamName + partAfter;\r\n\r\n if (this.debug) {\r\n console.log(`Replace function call by code. Function '${name}' (type=${type}). injectDeclarationIndex=${injectDeclarationIndex}, call parameters=${paramNames}`);\r\n }\r\n } else {\r\n // simple case where the return value of the function is \"void\"\r\n this._sourceCode = partBefore + funcBody + partAfter;\r\n\r\n startIndex += funcBody.length - (callParamsEndIndex + 1 - functionCallIndex);\r\n\r\n if (this.debug) {\r\n console.log(`Replace function call by code. Function '${name}' (type=${type}). functionCallIndex=${functionCallIndex}, call parameters=${paramNames}`);\r\n }\r\n }\r\n\r\n doAgain = true;\r\n }\r\n }\r\n\r\n return doAgain;\r\n }\r\n\r\n private _replaceNames(code: string, sources: string[], destinations: string[]): string {\r\n for (let i = 0; i < sources.length; ++i) {\r\n const source = new RegExp(EscapeRegExp(sources[i]), 'g'),\r\n sourceLen = sources[i].length,\r\n destination = destinations[i];\r\n\r\n code = code.replace(source, (match, ...args) => {\r\n const offset: number = args[0];\r\n // Make sure \"source\" is not part of a bigger identifier (for eg, if source=view and we matched it with viewDirection)\r\n if (IsIdentifierChar(code.charAt(offset - 1)) || IsIdentifierChar(code.charAt(offset + sourceLen))) {\r\n return sources[i];\r\n }\r\n return destination;\r\n });\r\n }\r\n\r\n return code;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"shaderCodeInliner.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Processors/shaderCodeInliner.ts"],"names":[],"mappings":"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","sourcesContent":["import { EscapeRegExp, ExtractBetweenMarkers, FindBackward, IsIdentifierChar, RemoveComments, SkipWhitespaces } from \"../../Misc/codeStringParsingTools\";\r\n\r\ninterface IInlineFunctionDescr {\r\n name: string;\r\n type: string;\r\n parameters: string[];\r\n body: string;\r\n callIndex: number;\r\n}\r\n\r\n/**\r\n * Class used to inline functions in shader code\r\n*/\r\nexport class ShaderCodeInliner {\r\n\r\n private static readonly _RegexpFindFunctionNameAndType = /((\\s+?)(\\w+)\\s+(\\w+)\\s*?)$/;\r\n\r\n private _sourceCode: string;\r\n private _functionDescr: IInlineFunctionDescr[];\r\n private _numMaxIterations: number;\r\n\r\n /** Gets or sets the token used to mark the functions to inline */\r\n public inlineToken: string;\r\n\r\n /** Gets or sets the debug mode */\r\n public debug: boolean = false;\r\n\r\n /** Gets the code after the inlining process */\r\n public get code(): string {\r\n return this._sourceCode;\r\n }\r\n\r\n /**\r\n * Initializes the inliner\r\n * @param sourceCode shader code source to inline\r\n * @param numMaxIterations maximum number of iterations (used to detect recursive calls)\r\n */\r\n constructor(sourceCode: string, numMaxIterations = 20) {\r\n this._sourceCode = sourceCode;\r\n this._numMaxIterations = numMaxIterations;\r\n this._functionDescr = [];\r\n this.inlineToken = \"#define inline\";\r\n }\r\n\r\n /**\r\n * Start the processing of the shader code\r\n */\r\n public processCode() {\r\n if (this.debug) {\r\n console.log(`Start inlining process (code size=${this._sourceCode.length})...`);\r\n }\r\n this._collectFunctions();\r\n this._processInlining(this._numMaxIterations);\r\n if (this.debug) {\r\n console.log(\"End of inlining process.\");\r\n }\r\n }\r\n\r\n private _collectFunctions() {\r\n let startIndex = 0;\r\n\r\n while (startIndex < this._sourceCode.length) {\r\n // locate the function to inline and extract its name\r\n const inlineTokenIndex = this._sourceCode.indexOf(this.inlineToken, startIndex);\r\n if (inlineTokenIndex < 0) {\r\n break;\r\n }\r\n\r\n const funcParamsStartIndex = this._sourceCode.indexOf(\"(\", inlineTokenIndex + this.inlineToken.length);\r\n if (funcParamsStartIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not find the opening parenthesis after the token. startIndex=${startIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n\r\n const funcNameMatch = ShaderCodeInliner._RegexpFindFunctionNameAndType.exec(this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex));\r\n if (!funcNameMatch) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the name/type of the function from: ${this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex)}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n const [funcType, funcName] = [funcNameMatch[3], funcNameMatch[4]];\r\n\r\n // extract the parameters of the function as a whole string (without the leading / trailing parenthesis)\r\n const funcParamsEndIndex = ExtractBetweenMarkers('(', ')', this._sourceCode, funcParamsStartIndex);\r\n if (funcParamsEndIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the parameters the function '${funcName}' (type=${funcType}). funcParamsStartIndex=${funcParamsStartIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n const funcParams = this._sourceCode.substring(funcParamsStartIndex + 1, funcParamsEndIndex);\r\n\r\n // extract the body of the function (with the curly brackets)\r\n const funcBodyStartIndex = SkipWhitespaces(this._sourceCode, funcParamsEndIndex + 1);\r\n if (funcBodyStartIndex === this._sourceCode.length) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the body of the function '${funcName}' (type=${funcType}). funcParamsEndIndex=${funcParamsEndIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n\r\n const funcBodyEndIndex = ExtractBetweenMarkers('{', '}', this._sourceCode, funcBodyStartIndex);\r\n if (funcBodyEndIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the body of the function '${funcName}' (type=${funcType}). funcBodyStartIndex=${funcBodyStartIndex}`);\r\n }\r\n startIndex = inlineTokenIndex + this.inlineToken.length;\r\n continue;\r\n }\r\n const funcBody = this._sourceCode.substring(funcBodyStartIndex, funcBodyEndIndex + 1);\r\n\r\n // process the parameters: extract each names\r\n const params = RemoveComments(funcParams).split(\",\");\r\n const paramNames = [];\r\n\r\n for (let p = 0; p < params.length; ++p) {\r\n const param = params[p].trim();\r\n const idx = param.lastIndexOf(\" \");\r\n\r\n if (idx >= 0) {\r\n paramNames.push(param.substring(idx + 1));\r\n }\r\n }\r\n\r\n if (funcType !== 'void') {\r\n // for functions that return a value, we will replace \"return\" by \"tempvarname = \", tempvarname being a unique generated name\r\n paramNames.push('return');\r\n }\r\n\r\n // collect the function\r\n this._functionDescr.push({\r\n \"name\": funcName,\r\n \"type\": funcType,\r\n \"parameters\": paramNames,\r\n \"body\": funcBody,\r\n \"callIndex\": 0,\r\n });\r\n\r\n startIndex = funcBodyEndIndex + 1;\r\n\r\n // remove the function from the source code\r\n const partBefore = inlineTokenIndex > 0 ? this._sourceCode.substring(0, inlineTokenIndex) : \"\";\r\n const partAfter = funcBodyEndIndex + 1 < this._sourceCode.length - 1 ? this._sourceCode.substring(funcBodyEndIndex + 1) : \"\";\r\n\r\n this._sourceCode = partBefore + partAfter;\r\n\r\n startIndex -= funcBodyEndIndex + 1 - inlineTokenIndex;\r\n }\r\n\r\n if (this.debug) {\r\n console.log(`Collect functions: ${this._functionDescr.length} functions found. functionDescr=`, this._functionDescr);\r\n }\r\n }\r\n\r\n private _processInlining(numMaxIterations: number = 20): boolean {\r\n while (numMaxIterations-- >= 0) {\r\n if (!this._replaceFunctionCallsByCode()) {\r\n break;\r\n }\r\n }\r\n\r\n if (this.debug) {\r\n console.log(`numMaxIterations is ${numMaxIterations} after inlining process`);\r\n }\r\n\r\n return numMaxIterations >= 0;\r\n }\r\n\r\n private _replaceFunctionCallsByCode(): boolean {\r\n let doAgain = false;\r\n\r\n for (const func of this._functionDescr) {\r\n const { name, type, parameters, body } = func;\r\n\r\n let startIndex = 0;\r\n\r\n while (startIndex < this._sourceCode.length) {\r\n // Look for the function name in the source code\r\n const functionCallIndex = this._sourceCode.indexOf(name, startIndex);\r\n\r\n if (functionCallIndex < 0) {\r\n break;\r\n }\r\n\r\n // Make sure \"name\" is not part of a bigger string\r\n if (functionCallIndex === 0 || IsIdentifierChar(this._sourceCode.charAt(functionCallIndex - 1))) {\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n // Find the opening parenthesis\r\n const callParamsStartIndex = SkipWhitespaces(this._sourceCode, functionCallIndex + name.length);\r\n if (callParamsStartIndex === this._sourceCode.length || this._sourceCode.charAt(callParamsStartIndex) !== '(') {\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n // extract the parameters of the function call as a whole string (without the leading / trailing parenthesis)\r\n const callParamsEndIndex = ExtractBetweenMarkers('(', ')', this._sourceCode, callParamsStartIndex);\r\n if (callParamsEndIndex < 0) {\r\n if (this.debug) {\r\n console.warn(`Could not extract the parameters of the function call. Function '${name}' (type=${type}). callParamsStartIndex=${callParamsStartIndex}`);\r\n }\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n const callParams = this._sourceCode.substring(callParamsStartIndex + 1, callParamsEndIndex);\r\n\r\n // process the parameter call: extract each names\r\n\r\n // this function split the parameter list used in the function call at ',' boundaries by taking care of potential parenthesis like in:\r\n // myfunc(a, vec2(1., 0.), 4.)\r\n const splitParameterCall = (s: string) => {\r\n const parameters = [];\r\n let curIdx = 0, startParamIdx = 0;\r\n while (curIdx < s.length) {\r\n if (s.charAt(curIdx) === '(') {\r\n const idx2 = ExtractBetweenMarkers('(', ')', s, curIdx);\r\n if (idx2 < 0) {\r\n return null;\r\n }\r\n curIdx = idx2;\r\n } else if (s.charAt(curIdx) === ',') {\r\n parameters.push(s.substring(startParamIdx, curIdx));\r\n startParamIdx = curIdx + 1;\r\n }\r\n curIdx++;\r\n }\r\n if (startParamIdx < curIdx) {\r\n parameters.push(s.substring(startParamIdx, curIdx));\r\n }\r\n return parameters;\r\n };\r\n\r\n const params = splitParameterCall(RemoveComments(callParams));\r\n\r\n if (params === null) {\r\n if (this.debug) {\r\n console.warn(`Invalid function call: can't extract the parameters of the function call. Function '${name}' (type=${type}). callParamsStartIndex=${callParamsStartIndex}, callParams=` + callParams);\r\n }\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n const paramNames = [];\r\n\r\n for (let p = 0; p < params.length; ++p) {\r\n const param = params[p].trim();\r\n paramNames.push(param);\r\n }\r\n\r\n const retParamName = type !== 'void' ? name + '_' + (func.callIndex++) : null;\r\n\r\n if (retParamName) {\r\n paramNames.push(retParamName + ' =');\r\n }\r\n\r\n if (paramNames.length !== parameters.length) {\r\n if (this.debug) {\r\n console.warn(`Invalid function call: not the same number of parameters for the call than the number expected by the function. Function '${name}' (type=${type}). function parameters=${parameters}, call parameters=${paramNames}`);\r\n }\r\n startIndex = functionCallIndex + name.length;\r\n continue;\r\n }\r\n\r\n startIndex = callParamsEndIndex + 1;\r\n\r\n // replace the function call by the body function\r\n const funcBody = this._replaceNames(body, parameters, paramNames);\r\n\r\n let partBefore = functionCallIndex > 0 ? this._sourceCode.substring(0, functionCallIndex) : \"\";\r\n let partAfter = callParamsEndIndex + 1 < this._sourceCode.length - 1 ? this._sourceCode.substring(callParamsEndIndex + 1) : \"\";\r\n\r\n if (retParamName) {\r\n // case where the function returns a value. We generate:\r\n // FUNCTYPE retParamName;\r\n // {function body}\r\n // and replace the function call by retParamName\r\n const injectDeclarationIndex = FindBackward(this._sourceCode, functionCallIndex - 1, '\\n');\r\n\r\n partBefore = this._sourceCode.substring(0, injectDeclarationIndex + 1);\r\n let partBetween = this._sourceCode.substring(injectDeclarationIndex + 1, functionCallIndex);\r\n\r\n this._sourceCode = partBefore + type + \" \" + retParamName + \";\\n\" + funcBody + \"\\n\" + partBetween + retParamName + partAfter;\r\n\r\n if (this.debug) {\r\n console.log(`Replace function call by code. Function '${name}' (type=${type}). injectDeclarationIndex=${injectDeclarationIndex}, call parameters=${paramNames}`);\r\n }\r\n } else {\r\n // simple case where the return value of the function is \"void\"\r\n this._sourceCode = partBefore + funcBody + partAfter;\r\n\r\n startIndex += funcBody.length - (callParamsEndIndex + 1 - functionCallIndex);\r\n\r\n if (this.debug) {\r\n console.log(`Replace function call by code. Function '${name}' (type=${type}). functionCallIndex=${functionCallIndex}, call parameters=${paramNames}`);\r\n }\r\n }\r\n\r\n doAgain = true;\r\n }\r\n }\r\n\r\n return doAgain;\r\n }\r\n\r\n private _replaceNames(code: string, sources: string[], destinations: string[]): string {\r\n for (let i = 0; i < sources.length; ++i) {\r\n const source = new RegExp(EscapeRegExp(sources[i]), 'g'),\r\n sourceLen = sources[i].length,\r\n destination = destinations[i];\r\n\r\n code = code.replace(source, (match, ...args) => {\r\n const offset: number = args[0];\r\n // Make sure \"source\" is not part of a bigger identifier (for eg, if source=view and we matched it with viewDirection)\r\n if (IsIdentifierChar(code.charAt(offset - 1)) || IsIdentifierChar(code.charAt(offset + sourceLen))) {\r\n return sources[i];\r\n }\r\n return destination;\r\n });\r\n }\r\n\r\n return code;\r\n }\r\n}\r\n"]}
@@ -41,9 +41,12 @@ WebGPUEngine.prototype.createCubeTexture = function (rootUrl, scene, files, noMi
41
41
  }
42
42
  }, !!useSRGBBuffer);
43
43
  };
44
- WebGPUEngine.prototype._setCubeMapTextureParams = function (texture, loadMipmap) {
44
+ WebGPUEngine.prototype._setCubeMapTextureParams = function (texture, loadMipmap, maxLevel) {
45
45
  texture.samplingMode = loadMipmap ? 3 : 2;
46
46
  texture._cachedWrapU = 0;
47
47
  texture._cachedWrapV = 0;
48
+ if (maxLevel) {
49
+ texture._maxLodLevel = maxLevel;
50
+ }
48
51
  };
49
52
  //# sourceMappingURL=engine.cubeTexture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.cubeTexture.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Engines/WebGPU/Extensions/engine.cubeTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport { Nullable } from \"../../../types\";\r\n\r\nimport { DepthTextureCreationOptions } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\n\r\ndeclare type Scene = import(\"../../../scene\").Scene;\r\n\r\nWebGPUEngine.prototype._createDepthStencilCubeTexture = function (size: number, options: DepthTextureCreationOptions): InternalTexture {\r\n const internalTexture = new InternalTexture(this, InternalTextureSource.DepthStencil);\r\n\r\n internalTexture.isCube = true;\r\n\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n ...options\r\n };\r\n\r\n // TODO WEBGPU allow to choose the format?\r\n internalTexture.format = internalOptions.generateStencil ? 13 : 14;\r\n\r\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.generateStencil, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n};\r\n\r\nWebGPUEngine.prototype.createCubeTexture = function (rootUrl: string, scene: Nullable<Scene>, files: Nullable<string[]>, noMipmap?: boolean, onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null, format?: number, forcedExtension: any = null, createPolynomials: boolean = false, lodScale: number = 0, lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null, useSRGBBuffer = false): InternalTexture {\r\n return this.createCubeTextureBase(\r\n rootUrl, scene, files, !!noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, fallback,\r\n null,\r\n (texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => {\r\n const imageBitmaps = imgs as ImageBitmap[]; // we will always get an ImageBitmap array in WebGPU\r\n const width = imageBitmaps[0].width;\r\n const height = width;\r\n\r\n this._setCubeMapTextureParams(texture, !noMipmap);\r\n texture.format = format ?? -1;\r\n\r\n const gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);\r\n\r\n this._textureHelper.updateCubeTextures(imageBitmaps, gpuTextureWrapper.underlyingResource!, width, height, gpuTextureWrapper.format, false, false, 0, 0);\r\n\r\n if (!noMipmap) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n\r\n texture.isReady = true;\r\n\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n }, !!useSRGBBuffer\r\n );\r\n};\r\n\r\nWebGPUEngine.prototype._setCubeMapTextureParams = function (texture: InternalTexture, loadMipmap: boolean) {\r\n texture.samplingMode = loadMipmap ? 3 : 2;\r\n texture._cachedWrapU = 0;\r\n texture._cachedWrapV = 0;\r\n};\r\n"]}
1
+ {"version":3,"file":"engine.cubeTexture.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Engines/WebGPU/Extensions/engine.cubeTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport { Nullable } from \"../../../types\";\r\n\r\nimport { DepthTextureCreationOptions } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\n\r\ndeclare type Scene = import(\"../../../scene\").Scene;\r\n\r\nWebGPUEngine.prototype._createDepthStencilCubeTexture = function (size: number, options: DepthTextureCreationOptions): InternalTexture {\r\n const internalTexture = new InternalTexture(this, InternalTextureSource.DepthStencil);\r\n\r\n internalTexture.isCube = true;\r\n\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n ...options\r\n };\r\n\r\n // TODO WEBGPU allow to choose the format?\r\n internalTexture.format = internalOptions.generateStencil ? 13 : 14;\r\n\r\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.generateStencil, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n};\r\n\r\nWebGPUEngine.prototype.createCubeTexture = function (rootUrl: string, scene: Nullable<Scene>, files: Nullable<string[]>, noMipmap?: boolean, onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null, format?: number, forcedExtension: any = null, createPolynomials: boolean = false, lodScale: number = 0, lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null, useSRGBBuffer = false): InternalTexture {\r\n return this.createCubeTextureBase(\r\n rootUrl, scene, files, !!noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, fallback,\r\n null,\r\n (texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => {\r\n const imageBitmaps = imgs as ImageBitmap[]; // we will always get an ImageBitmap array in WebGPU\r\n const width = imageBitmaps[0].width;\r\n const height = width;\r\n\r\n this._setCubeMapTextureParams(texture, !noMipmap);\r\n texture.format = format ?? -1;\r\n\r\n const gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);\r\n\r\n this._textureHelper.updateCubeTextures(imageBitmaps, gpuTextureWrapper.underlyingResource!, width, height, gpuTextureWrapper.format, false, false, 0, 0);\r\n\r\n if (!noMipmap) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n\r\n texture.isReady = true;\r\n\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n }, !!useSRGBBuffer\r\n );\r\n};\r\n\r\nWebGPUEngine.prototype._setCubeMapTextureParams = function (texture: InternalTexture, loadMipmap: boolean, maxLevel?: number) {\r\n texture.samplingMode = loadMipmap ? 3 : 2;\r\n texture._cachedWrapU = 0;\r\n texture._cachedWrapV = 0;\r\n if (maxLevel) {\r\n texture._maxLodLevel = maxLevel;\r\n }\r\n};\r\n"]}
@@ -108,50 +108,50 @@ var WebGPUCacheBindGroups = /** @class */ (function () {
108
108
  var sampler = bindingInfo.sampler;
109
109
  if (!sampler) {
110
110
  if (this._engine.dbgSanityChecks) {
111
- Logger.Error("Trying to bind a null sampler! entry=" + JSON.stringify(entry) + ", name=" + name_1 + ", bindingInfo=" + JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }) + ", materialContext.uniqueId=" + materialContext.uniqueId, 50);
111
+ Logger.Error("Trying to bind a null sampler! entry=".concat(JSON.stringify(entry), ", name=").concat(name_1, ", bindingInfo=").concat(JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }), ", materialContext.uniqueId=").concat(materialContext.uniqueId), 50);
112
112
  }
113
113
  continue;
114
114
  }
115
115
  entries[j].resource = this._cacheSampler.getSampler(sampler, false, bindingInfo.hashCode);
116
116
  }
117
117
  else {
118
- Logger.Error("Sampler \"" + name_1 + "\" could not be bound. entry=" + JSON.stringify(entry) + ", materialContext=" + JSON.stringify(materialContext, function (key, value) { return key === 'texture' || key === 'sampler' ? '<no dump>' : value; }), 50);
118
+ Logger.Error("Sampler \"".concat(name_1, "\" could not be bound. entry=").concat(JSON.stringify(entry), ", materialContext=").concat(JSON.stringify(materialContext, function (key, value) { return key === 'texture' || key === 'sampler' ? '<no dump>' : value; })), 50);
119
119
  }
120
120
  }
121
121
  else if (entry.texture || entry.storageTexture) {
122
122
  var bindingInfo = materialContext.textures[name_1];
123
123
  if (bindingInfo) {
124
124
  if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {
125
- Logger.Error("Trying to bind a null texture! entry=" + JSON.stringify(entry) + ", bindingInfo=" + JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }) + ", materialContext.uniqueId=" + materialContext.uniqueId, 50);
125
+ Logger.Error("Trying to bind a null texture! entry=".concat(JSON.stringify(entry), ", bindingInfo=").concat(JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }), ", materialContext.uniqueId=").concat(materialContext.uniqueId), 50);
126
126
  continue;
127
127
  }
128
128
  var hardwareTexture = bindingInfo.texture._hardwareTexture;
129
129
  if (this._engine.dbgSanityChecks && (!hardwareTexture || entry.texture && !hardwareTexture.view || entry.storageTexture && !hardwareTexture.viewForWriting)) {
130
- Logger.Error("Trying to bind a null gpu texture or view! entry=" + JSON.stringify(entry) + ", name=" + name_1 + ", bindingInfo=" + JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }) + ", isReady=" + ((_j = bindingInfo.texture) === null || _j === void 0 ? void 0 : _j.isReady) + ", materialContext.uniqueId=" + materialContext.uniqueId, 50);
130
+ Logger.Error("Trying to bind a null gpu texture or view! entry=".concat(JSON.stringify(entry), ", name=").concat(name_1, ", bindingInfo=").concat(JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }), ", isReady=").concat((_j = bindingInfo.texture) === null || _j === void 0 ? void 0 : _j.isReady, ", materialContext.uniqueId=").concat(materialContext.uniqueId), 50);
131
131
  continue;
132
132
  }
133
133
  entries[j].resource = entry.storageTexture ? hardwareTexture.viewForWriting : hardwareTexture.view;
134
134
  }
135
135
  else {
136
- Logger.Error("Texture \"" + name_1 + "\" could not be bound. entry=" + JSON.stringify(entry) + ", materialContext=" + JSON.stringify(materialContext, function (key, value) { return key === 'texture' || key === 'sampler' ? '<no dump>' : value; }), 50);
136
+ Logger.Error("Texture \"".concat(name_1, "\" could not be bound. entry=").concat(JSON.stringify(entry), ", materialContext=").concat(JSON.stringify(materialContext, function (key, value) { return key === 'texture' || key === 'sampler' ? '<no dump>' : value; })), 50);
137
137
  }
138
138
  }
139
139
  else if (entry.externalTexture) {
140
140
  var bindingInfo = materialContext.textures[name_1];
141
141
  if (bindingInfo) {
142
142
  if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {
143
- Logger.Error("Trying to bind a null external texture! entry=" + JSON.stringify(entry) + ", name=" + name_1 + ", bindingInfo=" + JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }) + ", materialContext.uniqueId=" + materialContext.uniqueId, 50);
143
+ Logger.Error("Trying to bind a null external texture! entry=".concat(JSON.stringify(entry), ", name=").concat(name_1, ", bindingInfo=").concat(JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }), ", materialContext.uniqueId=").concat(materialContext.uniqueId), 50);
144
144
  continue;
145
145
  }
146
146
  var externalTexture = bindingInfo.texture.underlyingResource;
147
147
  if (this._engine.dbgSanityChecks && !externalTexture) {
148
- Logger.Error("Trying to bind a null gpu external texture! entry=" + JSON.stringify(entry) + ", name=" + name_1 + ", bindingInfo=" + JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }) + ", isReady=" + ((_k = bindingInfo.texture) === null || _k === void 0 ? void 0 : _k.isReady) + ", materialContext.uniqueId=" + materialContext.uniqueId, 50);
148
+ Logger.Error("Trying to bind a null gpu external texture! entry=".concat(JSON.stringify(entry), ", name=").concat(name_1, ", bindingInfo=").concat(JSON.stringify(bindingInfo, function (key, value) { return key === 'texture' ? '<no dump>' : value; }), ", isReady=").concat((_k = bindingInfo.texture) === null || _k === void 0 ? void 0 : _k.isReady, ", materialContext.uniqueId=").concat(materialContext.uniqueId), 50);
149
149
  continue;
150
150
  }
151
151
  entries[j].resource = this._device.importExternalTexture({ source: externalTexture });
152
152
  }
153
153
  else {
154
- Logger.Error("Texture \"" + name_1 + "\" could not be bound. entry=" + JSON.stringify(entry) + ", materialContext=" + JSON.stringify(materialContext, function (key, value) { return key === 'texture' || key === 'sampler' ? '<no dump>' : value; }), 50);
154
+ Logger.Error("Texture \"".concat(name_1, "\" could not be bound. entry=").concat(JSON.stringify(entry), ", materialContext=").concat(JSON.stringify(materialContext, function (key, value) { return key === 'texture' || key === 'sampler' ? '<no dump>' : value; })), 50);
155
155
  }
156
156
  }
157
157
  else if (entry.buffer) {
@@ -162,7 +162,7 @@ var WebGPUCacheBindGroups = /** @class */ (function () {
162
162
  entries[j].resource.size = dataBuffer.capacity;
163
163
  }
164
164
  else {
165
- Logger.Error("Can't find buffer \"" + name_1 + "\". entry=" + JSON.stringify(entry) + ", buffers=" + JSON.stringify(drawContext.buffers) + ", drawContext.uniqueId=" + drawContext.uniqueId, 50);
165
+ Logger.Error("Can't find buffer \"".concat(name_1, "\". entry=").concat(JSON.stringify(entry), ", buffers=").concat(JSON.stringify(drawContext.buffers), ", drawContext.uniqueId=").concat(drawContext.uniqueId), 50);
166
166
  }
167
167
  }
168
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuCacheBindGroups.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuCacheBindGroups.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport { WebGPUMaterialContext } from \"./webgpuMaterialContext\";\r\nimport { WebGPUPipelineContext } from \"./webgpuPipelineContext\";\r\nimport { WebGPUEngine } from \"../webgpuEngine\";\r\nimport { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { ExternalTexture } from \"../../Materials/Textures/externalTexture\";\r\nimport { WebGPUDrawContext } from \"./webgpuDrawContext\";\r\n\r\nclass WebGPUBindGroupCacheNode {\r\n public values: { [id: number]: WebGPUBindGroupCacheNode };\r\n public bindGroups: GPUBindGroup[];\r\n\r\n constructor() {\r\n this.values = {};\r\n }\r\n}\r\n\r\n/** @hidden */\r\nexport class WebGPUCacheBindGroups {\r\n\r\n public static NumBindGroupsCreatedTotal = 0;\r\n public static NumBindGroupsCreatedLastFrame = 0;\r\n public static NumBindGroupsLookupLastFrame = 0;\r\n public static NumBindGroupsNoLookupLastFrame = 0;\r\n\r\n private static _Cache: WebGPUBindGroupCacheNode = new WebGPUBindGroupCacheNode();\r\n\r\n private static _NumBindGroupsCreatedCurrentFrame = 0;\r\n private static _NumBindGroupsLookupCurrentFrame = 0;\r\n private static _NumBindGroupsNoLookupCurrentFrame = 0;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _engine: WebGPUEngine;\r\n\r\n public disabled = false;\r\n\r\n public static get Statistics() {\r\n return {\r\n totalCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedTotal,\r\n lastFrameCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame,\r\n lookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame,\r\n noLookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame,\r\n };\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler, engine: WebGPUEngine) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this._engine = engine;\r\n }\r\n\r\n public endFrame(): void {\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame = WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame = 0;\r\n }\r\n\r\n /**\r\n * Cache is currently based on the uniform/storage buffers, samplers and textures used by the binding groups.\r\n * Note that all uniform buffers have an offset of 0 in Babylon and we don't have a use case where we would have the same buffer used with different capacity values:\r\n * that means we don't need to factor in the offset/size of the buffer in the cache, only the id\r\n */\r\n public getBindGroups(webgpuPipelineContext: WebGPUPipelineContext, drawContext: WebGPUDrawContext, materialContext: WebGPUMaterialContext): GPUBindGroup[] {\r\n let bindGroups: GPUBindGroup[] | undefined = undefined;\r\n let node = WebGPUCacheBindGroups._Cache;\r\n\r\n const cacheIsDisabled = this.disabled || materialContext.forceBindGroupCreation;\r\n if (!cacheIsDisabled) {\r\n if (!drawContext.isDirty(materialContext.updateId) && !materialContext.isDirty) {\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame++;\r\n return drawContext.bindGroups!;\r\n }\r\n\r\n for (const bufferName of webgpuPipelineContext.shaderProcessingContext.bufferNames) {\r\n const uboId = drawContext.buffers[bufferName]?.uniqueId ?? 0;\r\n let nextNode = node.values[uboId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[uboId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const samplerName of webgpuPipelineContext.shaderProcessingContext.samplerNames) {\r\n const samplerHashCode = materialContext.samplers[samplerName]?.hashCode ?? 0;\r\n let nextNode = node.values[samplerHashCode];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[samplerHashCode] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const textureName of webgpuPipelineContext.shaderProcessingContext.textureNames) {\r\n const textureId = materialContext.textures[textureName]?.texture?.uniqueId ?? 0;\r\n let nextNode = node.values[textureId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[textureId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n bindGroups = node.bindGroups;\r\n }\r\n\r\n drawContext.resetIsDirty(materialContext.updateId);\r\n materialContext.isDirty = false;\r\n\r\n if (bindGroups) {\r\n drawContext.bindGroups = bindGroups;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame++;\r\n return bindGroups;\r\n }\r\n\r\n bindGroups = [];\r\n drawContext.bindGroups = bindGroups;\r\n\r\n if (!cacheIsDisabled) {\r\n node.bindGroups = bindGroups;\r\n }\r\n\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedTotal++;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame++;\r\n\r\n const bindGroupLayouts = webgpuPipelineContext.bindGroupLayouts;\r\n for (let i = 0; i < webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i];\r\n\r\n const entries = webgpuPipelineContext.shaderProcessingContext.bindGroupEntries[i];\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i][j];\r\n const entryInfo = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding];\r\n const name = entryInfo.nameInArrayOfTexture ?? entryInfo.name;\r\n\r\n if (entry.sampler) {\r\n const bindingInfo = materialContext.samplers[name];\r\n if (bindingInfo) {\r\n const sampler = bindingInfo.sampler;\r\n if (!sampler) {\r\n if (this._engine.dbgSanityChecks) {\r\n Logger.Error(`Trying to bind a null sampler! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n }\r\n continue;\r\n }\r\n entries[j].resource = this._cacheSampler.getSampler(sampler, false, bindingInfo.hashCode);\r\n } else {\r\n Logger.Error(`Sampler \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) => key === 'texture' || key === 'sampler' ? '<no dump>' : value)}`, 50);\r\n }\r\n } else if (entry.texture || entry.storageTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(`Trying to bind a null texture! entry=${JSON.stringify(entry)}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n const hardwareTexture = (bindingInfo.texture as InternalTexture)._hardwareTexture as WebGPUHardwareTexture;\r\n\r\n if (this._engine.dbgSanityChecks && (!hardwareTexture || entry.texture && !hardwareTexture.view || entry.storageTexture && !hardwareTexture.viewForWriting)) {\r\n Logger.Error(`Trying to bind a null gpu texture or view! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n\r\n entries[j].resource = entry.storageTexture ? hardwareTexture.viewForWriting! : hardwareTexture.view!;\r\n } else {\r\n Logger.Error(`Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) => key === 'texture' || key === 'sampler' ? '<no dump>' : value)}`, 50);\r\n }\r\n } else if (entry.externalTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(`Trying to bind a null external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n const externalTexture = (bindingInfo.texture as ExternalTexture).underlyingResource;\r\n\r\n if (this._engine.dbgSanityChecks && !externalTexture) {\r\n Logger.Error(`Trying to bind a null gpu external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n\r\n entries[j].resource = this._device.importExternalTexture({ source: externalTexture });\r\n } else {\r\n Logger.Error(`Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) => key === 'texture' || key === 'sampler' ? '<no dump>' : value)}`, 50);\r\n }\r\n } else if (entry.buffer) {\r\n const dataBuffer = drawContext.buffers[name];\r\n if (dataBuffer) {\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n (entries[j].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[j].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n Logger.Error(`Can't find buffer \"${name}\". entry=${JSON.stringify(entry)}, buffers=${JSON.stringify(drawContext.buffers)}, drawContext.uniqueId=${drawContext.uniqueId}`, 50);\r\n }\r\n }\r\n }\r\n\r\n let groupLayout = bindGroupLayouts[i];\r\n bindGroups[i] = this._device.createBindGroup({\r\n layout: groupLayout,\r\n entries,\r\n });\r\n }\r\n\r\n return bindGroups;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuCacheBindGroups.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuCacheBindGroups.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport { WebGPUMaterialContext } from \"./webgpuMaterialContext\";\r\nimport { WebGPUPipelineContext } from \"./webgpuPipelineContext\";\r\nimport { WebGPUEngine } from \"../webgpuEngine\";\r\nimport { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { ExternalTexture } from \"../../Materials/Textures/externalTexture\";\r\nimport { WebGPUDrawContext } from \"./webgpuDrawContext\";\r\n\r\nclass WebGPUBindGroupCacheNode {\r\n public values: { [id: number]: WebGPUBindGroupCacheNode };\r\n public bindGroups: GPUBindGroup[];\r\n\r\n constructor() {\r\n this.values = {};\r\n }\r\n}\r\n\r\n/** @hidden */\r\nexport class WebGPUCacheBindGroups {\r\n\r\n public static NumBindGroupsCreatedTotal = 0;\r\n public static NumBindGroupsCreatedLastFrame = 0;\r\n public static NumBindGroupsLookupLastFrame = 0;\r\n public static NumBindGroupsNoLookupLastFrame = 0;\r\n\r\n private static _Cache: WebGPUBindGroupCacheNode = new WebGPUBindGroupCacheNode();\r\n\r\n private static _NumBindGroupsCreatedCurrentFrame = 0;\r\n private static _NumBindGroupsLookupCurrentFrame = 0;\r\n private static _NumBindGroupsNoLookupCurrentFrame = 0;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _engine: WebGPUEngine;\r\n\r\n public disabled = false;\r\n\r\n public static get Statistics() {\r\n return {\r\n totalCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedTotal,\r\n lastFrameCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame,\r\n lookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame,\r\n noLookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame,\r\n };\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler, engine: WebGPUEngine) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this._engine = engine;\r\n }\r\n\r\n public endFrame(): void {\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame = WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame = 0;\r\n }\r\n\r\n /**\r\n * Cache is currently based on the uniform/storage buffers, samplers and textures used by the binding groups.\r\n * Note that all uniform buffers have an offset of 0 in Babylon and we don't have a use case where we would have the same buffer used with different capacity values:\r\n * that means we don't need to factor in the offset/size of the buffer in the cache, only the id\r\n */\r\n public getBindGroups(webgpuPipelineContext: WebGPUPipelineContext, drawContext: WebGPUDrawContext, materialContext: WebGPUMaterialContext): GPUBindGroup[] {\r\n let bindGroups: GPUBindGroup[] | undefined = undefined;\r\n let node = WebGPUCacheBindGroups._Cache;\r\n\r\n const cacheIsDisabled = this.disabled || materialContext.forceBindGroupCreation;\r\n if (!cacheIsDisabled) {\r\n if (!drawContext.isDirty(materialContext.updateId) && !materialContext.isDirty) {\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame++;\r\n return drawContext.bindGroups!;\r\n }\r\n\r\n for (const bufferName of webgpuPipelineContext.shaderProcessingContext.bufferNames) {\r\n const uboId = drawContext.buffers[bufferName]?.uniqueId ?? 0;\r\n let nextNode = node.values[uboId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[uboId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const samplerName of webgpuPipelineContext.shaderProcessingContext.samplerNames) {\r\n const samplerHashCode = materialContext.samplers[samplerName]?.hashCode ?? 0;\r\n let nextNode = node.values[samplerHashCode];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[samplerHashCode] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const textureName of webgpuPipelineContext.shaderProcessingContext.textureNames) {\r\n const textureId = materialContext.textures[textureName]?.texture?.uniqueId ?? 0;\r\n let nextNode = node.values[textureId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[textureId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n bindGroups = node.bindGroups;\r\n }\r\n\r\n drawContext.resetIsDirty(materialContext.updateId);\r\n materialContext.isDirty = false;\r\n\r\n if (bindGroups) {\r\n drawContext.bindGroups = bindGroups;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame++;\r\n return bindGroups;\r\n }\r\n\r\n bindGroups = [];\r\n drawContext.bindGroups = bindGroups;\r\n\r\n if (!cacheIsDisabled) {\r\n node.bindGroups = bindGroups;\r\n }\r\n\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedTotal++;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame++;\r\n\r\n const bindGroupLayouts = webgpuPipelineContext.bindGroupLayouts;\r\n for (let i = 0; i < webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i];\r\n\r\n const entries = webgpuPipelineContext.shaderProcessingContext.bindGroupEntries[i];\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i][j];\r\n const entryInfo = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding];\r\n const name = entryInfo.nameInArrayOfTexture ?? entryInfo.name;\r\n\r\n if (entry.sampler) {\r\n const bindingInfo = materialContext.samplers[name];\r\n if (bindingInfo) {\r\n const sampler = bindingInfo.sampler;\r\n if (!sampler) {\r\n if (this._engine.dbgSanityChecks) {\r\n Logger.Error(`Trying to bind a null sampler! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n }\r\n continue;\r\n }\r\n entries[j].resource = this._cacheSampler.getSampler(sampler, false, bindingInfo.hashCode);\r\n } else {\r\n Logger.Error(`Sampler \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) => key === 'texture' || key === 'sampler' ? '<no dump>' : value)}`, 50);\r\n }\r\n } else if (entry.texture || entry.storageTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(`Trying to bind a null texture! entry=${JSON.stringify(entry)}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n const hardwareTexture = (bindingInfo.texture as InternalTexture)._hardwareTexture as WebGPUHardwareTexture;\r\n\r\n if (this._engine.dbgSanityChecks && (!hardwareTexture || entry.texture && !hardwareTexture.view || entry.storageTexture && !hardwareTexture.viewForWriting)) {\r\n Logger.Error(`Trying to bind a null gpu texture or view! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n\r\n entries[j].resource = entry.storageTexture ? hardwareTexture.viewForWriting! : hardwareTexture.view!;\r\n } else {\r\n Logger.Error(`Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) => key === 'texture' || key === 'sampler' ? '<no dump>' : value)}`, 50);\r\n }\r\n } else if (entry.externalTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(`Trying to bind a null external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n const externalTexture = (bindingInfo.texture as ExternalTexture).underlyingResource;\r\n\r\n if (this._engine.dbgSanityChecks && !externalTexture) {\r\n Logger.Error(`Trying to bind a null gpu external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) => key === 'texture' ? '<no dump>' : value)}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\r\n continue;\r\n }\r\n\r\n entries[j].resource = this._device.importExternalTexture({ source: externalTexture });\r\n } else {\r\n Logger.Error(`Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) => key === 'texture' || key === 'sampler' ? '<no dump>' : value)}`, 50);\r\n }\r\n } else if (entry.buffer) {\r\n const dataBuffer = drawContext.buffers[name];\r\n if (dataBuffer) {\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n (entries[j].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[j].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n Logger.Error(`Can't find buffer \"${name}\". entry=${JSON.stringify(entry)}, buffers=${JSON.stringify(drawContext.buffers)}, drawContext.uniqueId=${drawContext.uniqueId}`, 50);\r\n }\r\n }\r\n }\r\n\r\n let groupLayout = bindGroupLayouts[i];\r\n bindGroups[i] = this._device.createBindGroup({\r\n layout: groupLayout,\r\n entries,\r\n });\r\n }\r\n\r\n return bindGroups;\r\n }\r\n}\r\n"]}
@@ -515,7 +515,7 @@ var WebGPUCacheRenderPipeline = /** @class */ (function () {
515
515
  }
516
516
  break;
517
517
  }
518
- throw new Error("Invalid Format '" + vertexBuffer.getKind() + "' - type=" + type + ", normalized=" + normalized + ", size=" + size);
518
+ throw new Error("Invalid Format '".concat(vertexBuffer.getKind(), "' - type=").concat(type, ", normalized=").concat(normalized, ", size=").concat(size));
519
519
  };
520
520
  WebGPUCacheRenderPipeline.prototype._getAphaBlendState = function () {
521
521
  if (!this._alphaBlendEnabled) {