@babylonjs/core 5.0.0-beta.4 → 5.0.0-beta.8

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 (705) 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/Animations/animation.d.ts +2 -2
  5. package/Animations/animation.js +5 -1
  6. package/Animations/animation.js.map +1 -1
  7. package/Audio/analyser.d.ts +2 -1
  8. package/Audio/analyser.js +5 -0
  9. package/Audio/analyser.js.map +1 -1
  10. package/Audio/audioSceneComponent.d.ts +1 -1
  11. package/Audio/audioSceneComponent.js +5 -0
  12. package/Audio/audioSceneComponent.js.map +1 -1
  13. package/Audio/sound.d.ts +1 -1
  14. package/Audio/sound.js +8 -1
  15. package/Audio/sound.js.map +1 -1
  16. package/Audio/soundTrack.d.ts +2 -1
  17. package/Audio/soundTrack.js +5 -0
  18. package/Audio/soundTrack.js.map +1 -1
  19. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  20. package/BakedVertexAnimation/bakedVertexAnimationManager.js +5 -0
  21. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  22. package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
  23. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  24. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  25. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  26. package/Bones/bone.d.ts +2 -1
  27. package/Bones/bone.js +28 -18
  28. package/Bones/bone.js.map +1 -1
  29. package/Bones/skeleton.d.ts +0 -6
  30. package/Bones/skeleton.js +5 -17
  31. package/Bones/skeleton.js.map +1 -1
  32. package/Buffers/buffer.d.ts +4 -0
  33. package/Buffers/buffer.js +13 -3
  34. package/Buffers/buffer.js.map +1 -1
  35. package/Cameras/Inputs/freeCameraMouseInput.d.ts +1 -0
  36. package/Cameras/Inputs/freeCameraMouseInput.js +6 -3
  37. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  38. package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
  39. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  40. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +1 -1
  41. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  42. package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +1 -1
  43. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  44. package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +1 -1
  45. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  46. package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +1 -1
  47. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  48. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +1 -1
  49. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  50. package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +1 -1
  51. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  52. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +1 -1
  53. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  54. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +1 -1
  55. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  56. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +1 -1
  57. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  58. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +1 -1
  59. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  60. package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +1 -1
  61. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  62. package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +1 -1
  63. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  64. package/Cameras/VR/vrExperienceHelper.d.ts +1 -0
  65. package/Cameras/VR/vrExperienceHelper.js +1 -0
  66. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  67. package/Cameras/VR/webVRCamera.d.ts +2 -1
  68. package/Cameras/VR/webVRCamera.js +3 -2
  69. package/Cameras/VR/webVRCamera.js.map +1 -1
  70. package/Cameras/arcRotateCamera.d.ts +1 -1
  71. package/Cameras/arcRotateCamera.js.map +1 -1
  72. package/Cameras/camera.d.ts +1 -1
  73. package/Cameras/camera.js +1 -1
  74. package/Cameras/camera.js.map +1 -1
  75. package/Cameras/deviceOrientationCamera.d.ts +1 -1
  76. package/Cameras/deviceOrientationCamera.js.map +1 -1
  77. package/Cameras/flyCamera.d.ts +1 -1
  78. package/Cameras/flyCamera.js.map +1 -1
  79. package/Cameras/followCamera.d.ts +1 -1
  80. package/Cameras/followCamera.js.map +1 -1
  81. package/Cameras/freeCamera.d.ts +1 -1
  82. package/Cameras/freeCamera.js.map +1 -1
  83. package/Cameras/gamepadCamera.d.ts +1 -1
  84. package/Cameras/gamepadCamera.js.map +1 -1
  85. package/Cameras/targetCamera.d.ts +1 -1
  86. package/Cameras/targetCamera.js.map +1 -1
  87. package/Cameras/touchCamera.d.ts +1 -1
  88. package/Cameras/touchCamera.js.map +1 -1
  89. package/Cameras/universalCamera.d.ts +1 -1
  90. package/Cameras/universalCamera.js.map +1 -1
  91. package/Cameras/virtualJoysticksCamera.d.ts +1 -1
  92. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  93. package/Collisions/collider.d.ts +1 -1
  94. package/Collisions/collider.js +48 -2
  95. package/Collisions/collider.js.map +1 -1
  96. package/Compat/compatibilityOptions.d.ts +9 -0
  97. package/Compat/compatibilityOptions.js +14 -0
  98. package/Compat/compatibilityOptions.js.map +1 -0
  99. package/Compat/index.d.ts +1 -0
  100. package/Compat/index.js +2 -0
  101. package/Compat/index.js.map +1 -0
  102. package/Compute/computeEffect.js +2 -2
  103. package/Compute/computeEffect.js.map +1 -1
  104. package/Culling/Octrees/octreeSceneComponent.d.ts +1 -1
  105. package/Culling/Octrees/octreeSceneComponent.js +5 -0
  106. package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
  107. package/Culling/ray.js +2 -2
  108. package/Culling/ray.js.map +1 -1
  109. package/Debug/axesViewer.d.ts +1 -1
  110. package/Debug/axesViewer.js +5 -0
  111. package/Debug/axesViewer.js.map +1 -1
  112. package/Debug/debugLayer.d.ts +1 -1
  113. package/Debug/debugLayer.js +6 -2
  114. package/Debug/debugLayer.js.map +1 -1
  115. package/Debug/physicsViewer.d.ts +1 -1
  116. package/Debug/physicsViewer.js +3 -0
  117. package/Debug/physicsViewer.js.map +1 -1
  118. package/Debug/skeletonViewer.js +3 -4
  119. package/Debug/skeletonViewer.js.map +1 -1
  120. package/DeviceInput/Helpers/eventFactory.js +2 -5
  121. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  122. package/DeviceInput/InputDevices/deviceEnums.d.ts +55 -2
  123. package/DeviceInput/InputDevices/deviceEnums.js +54 -0
  124. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  125. package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
  126. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  127. package/DeviceInput/InputDevices/internalDeviceSourceManager.js +1 -0
  128. package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -1
  129. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js +3 -2
  130. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -1
  131. package/DeviceInput/InputDevices/webDeviceInputSystem.js +38 -82
  132. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -1
  133. package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
  134. package/Engines/Extensions/engine.cubeTexture.js +6 -2
  135. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  136. package/Engines/Extensions/engine.multiview.d.ts +5 -0
  137. package/Engines/Extensions/engine.multiview.js +4 -2
  138. package/Engines/Extensions/engine.multiview.js.map +1 -1
  139. package/Engines/Native/nativeInterfaces.d.ts +2 -1
  140. package/Engines/Native/nativeInterfaces.js.map +1 -1
  141. package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
  142. package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
  143. package/Engines/Processors/shaderCodeInliner.js +13 -13
  144. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  145. package/Engines/WebGPU/Extensions/engine.computeShader.js +1 -1
  146. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  147. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +4 -1
  148. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  149. package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
  150. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  151. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +1 -1
  152. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  153. package/Engines/WebGPU/webgpuComputeContext.js +1 -1
  154. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  155. package/Engines/WebGPU/webgpuConstants.d.ts +2 -1
  156. package/Engines/WebGPU/webgpuConstants.js +1 -0
  157. package/Engines/WebGPU/webgpuConstants.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 +18 -11
  163. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  164. package/Engines/engine.d.ts +47 -27
  165. package/Engines/engine.js +1 -1
  166. package/Engines/engine.js.map +1 -1
  167. package/Engines/engineCapabilities.d.ts +2 -0
  168. package/Engines/engineCapabilities.js.map +1 -1
  169. package/Engines/nativeEngine.d.ts +1 -0
  170. package/Engines/nativeEngine.js +39 -13
  171. package/Engines/nativeEngine.js.map +1 -1
  172. package/Engines/nullEngine.js +3 -2
  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 +7 -0
  178. package/Engines/thinEngine.js +27 -9
  179. package/Engines/thinEngine.js.map +1 -1
  180. package/Engines/webgpuEngine.js +37 -25
  181. package/Engines/webgpuEngine.js.map +1 -1
  182. package/Events/keyboardEvents.d.ts +7 -1
  183. package/Events/keyboardEvents.js +11 -1
  184. package/Events/keyboardEvents.js.map +1 -1
  185. package/Gamepads/Controllers/daydreamController.js +1 -1
  186. package/Gamepads/Controllers/daydreamController.js.map +1 -1
  187. package/Gamepads/Controllers/oculusTouchController.js +2 -2
  188. package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
  189. package/Gamepads/Controllers/webVRController.d.ts +1 -0
  190. package/Gamepads/Controllers/webVRController.js +1 -0
  191. package/Gamepads/Controllers/webVRController.js.map +1 -1
  192. package/Gamepads/gamepadManager.js +1 -1
  193. package/Gamepads/gamepadManager.js.map +1 -1
  194. package/Gizmos/boundingBoxGizmo.js +0 -10
  195. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  196. package/Gizmos/gizmo.js +1 -1
  197. package/Gizmos/gizmo.js.map +1 -1
  198. package/Gizmos/gizmoManager.d.ts +2 -0
  199. package/Gizmos/gizmoManager.js +28 -24
  200. package/Gizmos/gizmoManager.js.map +1 -1
  201. package/Helpers/sceneHelpers.d.ts +1 -0
  202. package/Helpers/sceneHelpers.js.map +1 -1
  203. package/Inputs/scene.inputManager.d.ts +1 -1
  204. package/Inputs/scene.inputManager.js +8 -7
  205. package/Inputs/scene.inputManager.js.map +1 -1
  206. package/Instrumentation/sceneInstrumentation.js +2 -2
  207. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  208. package/Layers/effectLayer.d.ts +1 -1
  209. package/Layers/effectLayer.js +1 -1
  210. package/Layers/effectLayer.js.map +1 -1
  211. package/Layers/effectLayerSceneComponent.d.ts +1 -1
  212. package/Layers/effectLayerSceneComponent.js +7 -3
  213. package/Layers/effectLayerSceneComponent.js.map +1 -1
  214. package/Layers/glowLayer.d.ts +1 -1
  215. package/Layers/glowLayer.js.map +1 -1
  216. package/Layers/highlightLayer.d.ts +1 -1
  217. package/Layers/highlightLayer.js +2 -1
  218. package/Layers/highlightLayer.js.map +1 -1
  219. package/Layers/layer.d.ts +2 -2
  220. package/Layers/layer.js.map +1 -1
  221. package/Layers/layerSceneComponent.d.ts +1 -1
  222. package/Layers/layerSceneComponent.js +7 -3
  223. package/Layers/layerSceneComponent.js.map +1 -1
  224. package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
  225. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  226. package/Lights/Shadows/shadowGenerator.js +7 -7
  227. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  228. package/Loading/Plugins/babylonFileLoader.js +79 -36
  229. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  230. package/Loading/loadingScreen.js +8 -8
  231. package/Loading/loadingScreen.js.map +1 -1
  232. package/Loading/sceneLoader.js +3 -3
  233. package/Loading/sceneLoader.js.map +1 -1
  234. package/Materials/Background/backgroundMaterial.d.ts +1 -1
  235. package/Materials/Background/backgroundMaterial.js.map +1 -1
  236. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
  237. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
  238. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
  239. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
  240. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  241. package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
  242. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +13 -13
  244. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  245. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  246. package/Materials/Node/Blocks/Dual/index.js +1 -0
  247. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  248. package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
  249. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  250. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +28 -28
  251. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  252. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  253. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  254. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
  255. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  256. package/Materials/Node/Blocks/Dual/textureBlock.js +32 -32
  257. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  258. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  259. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  260. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  261. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  263. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
  265. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  266. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
  267. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  268. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
  269. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  270. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  271. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  272. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
  273. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  274. package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
  275. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  276. package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
  277. package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
  278. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  279. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
  280. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  281. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
  282. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  283. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
  284. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  285. package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
  286. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  287. package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
  288. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
  290. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  292. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
  294. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
  296. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  297. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  298. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  299. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  300. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
  302. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  303. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
  304. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  305. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
  306. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  307. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
  308. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  309. package/Materials/Node/Blocks/addBlock.js +1 -1
  310. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  311. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  312. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  313. package/Materials/Node/Blocks/clampBlock.js +3 -3
  314. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  315. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  316. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  317. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  318. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  319. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  320. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  321. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  322. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  323. package/Materials/Node/Blocks/crossBlock.js +1 -1
  324. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  325. package/Materials/Node/Blocks/customBlock.js +1 -1
  326. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  327. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  328. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  329. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  330. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  331. package/Materials/Node/Blocks/divideBlock.js +1 -1
  332. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  333. package/Materials/Node/Blocks/dotBlock.js +1 -1
  334. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  335. package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
  336. package/Materials/Node/Blocks/elbowBlock.js +60 -0
  337. package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
  338. package/Materials/Node/Blocks/fresnelBlock.js +2 -2
  339. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  340. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  341. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  342. package/Materials/Node/Blocks/index.d.ts +1 -0
  343. package/Materials/Node/Blocks/index.js +1 -0
  344. package/Materials/Node/Blocks/index.js.map +1 -1
  345. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  346. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  347. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  348. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  349. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  350. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  351. package/Materials/Node/Blocks/maxBlock.js +1 -1
  352. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  353. package/Materials/Node/Blocks/minBlock.js +1 -1
  354. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  355. package/Materials/Node/Blocks/modBlock.js +1 -1
  356. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  357. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  358. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  359. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  360. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  361. package/Materials/Node/Blocks/negateBlock.js +1 -1
  362. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  363. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  364. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  365. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  366. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  367. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  368. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  369. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  370. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  371. package/Materials/Node/Blocks/powBlock.js +1 -1
  372. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  373. package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
  374. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  375. package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
  376. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  377. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  378. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  379. package/Materials/Node/Blocks/refractBlock.js +1 -1
  380. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  381. package/Materials/Node/Blocks/remapBlock.js +3 -3
  382. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  383. package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
  384. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  385. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  386. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  387. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  388. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  389. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
  390. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  391. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  392. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  393. package/Materials/Node/Blocks/stepBlock.js +1 -1
  394. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  395. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  396. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  397. package/Materials/Node/Blocks/transformBlock.js +13 -13
  398. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  399. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  400. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  401. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  402. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  403. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  404. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  405. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  406. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  407. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  408. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  409. package/Materials/Node/Blocks/waveBlock.js +3 -3
  410. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  411. package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
  412. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  413. package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
  414. package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
  415. package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
  416. package/Materials/Node/nodeMaterial.d.ts +4 -0
  417. package/Materials/Node/nodeMaterial.js +22 -11
  418. package/Materials/Node/nodeMaterial.js.map +1 -1
  419. package/Materials/Node/nodeMaterialBlock.js +12 -12
  420. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  421. package/Materials/Node/nodeMaterialBuildState.js +24 -24
  422. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  423. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
  424. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  425. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -1
  426. package/Materials/PBR/pbrBaseMaterial.js +4 -3
  427. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  428. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +1 -1
  429. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  430. package/Materials/PBR/pbrMaterial.d.ts +1 -1
  431. package/Materials/PBR/pbrMaterial.js +2 -3
  432. package/Materials/PBR/pbrMaterial.js.map +1 -1
  433. package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +1 -1
  434. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  435. package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +1 -1
  436. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  437. package/Materials/Textures/Loaders/ddsTextureLoader.js +8 -1
  438. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  439. package/Materials/Textures/Loaders/ktxTextureLoader.js +2 -2
  440. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  441. package/Materials/Textures/MultiviewRenderTarget.d.ts +2 -1
  442. package/Materials/Textures/MultiviewRenderTarget.js +10 -2
  443. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  444. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
  445. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  446. package/Materials/Textures/baseTexture.d.ts +1 -1
  447. package/Materials/Textures/baseTexture.js.map +1 -1
  448. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  449. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  450. package/Materials/Textures/internalTexture.d.ts +2 -0
  451. package/Materials/Textures/internalTexture.js +2 -0
  452. package/Materials/Textures/internalTexture.js.map +1 -1
  453. package/Materials/Textures/mirrorTexture.d.ts +2 -2
  454. package/Materials/Textures/mirrorTexture.js +7 -3
  455. package/Materials/Textures/mirrorTexture.js.map +1 -1
  456. package/Materials/Textures/multiRenderTarget.d.ts +1 -1
  457. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  458. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  459. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  460. package/Materials/Textures/refractionTexture.d.ts +1 -1
  461. package/Materials/Textures/refractionTexture.js +2 -2
  462. package/Materials/Textures/refractionTexture.js.map +1 -1
  463. package/Materials/Textures/renderTargetTexture.d.ts +1 -1
  464. package/Materials/Textures/renderTargetTexture.js +2 -2
  465. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  466. package/Materials/Textures/texture.d.ts +1 -1
  467. package/Materials/Textures/texture.js +5 -5
  468. package/Materials/Textures/texture.js.map +1 -1
  469. package/Materials/Textures/videoTexture.js +1 -0
  470. package/Materials/Textures/videoTexture.js.map +1 -1
  471. package/Materials/effect.js +3 -3
  472. package/Materials/effect.js.map +1 -1
  473. package/Materials/material.d.ts +3 -1
  474. package/Materials/material.js +11 -3
  475. package/Materials/material.js.map +1 -1
  476. package/Materials/materialHelper.js +9 -1
  477. package/Materials/materialHelper.js.map +1 -1
  478. package/Materials/materialPluginManager.js +3 -3
  479. package/Materials/materialPluginManager.js.map +1 -1
  480. package/Materials/multiMaterial.d.ts +3 -1
  481. package/Materials/multiMaterial.js +13 -11
  482. package/Materials/multiMaterial.js.map +1 -1
  483. package/Materials/pushMaterial.d.ts +1 -1
  484. package/Materials/pushMaterial.js.map +1 -1
  485. package/Materials/shaderMaterial.js +8 -4
  486. package/Materials/shaderMaterial.js.map +1 -1
  487. package/Materials/shadowDepthWrapper.d.ts +1 -1
  488. package/Materials/shadowDepthWrapper.js +3 -3
  489. package/Materials/shadowDepthWrapper.js.map +1 -1
  490. package/Materials/standardMaterial.d.ts +2 -6
  491. package/Materials/standardMaterial.js +5 -10
  492. package/Materials/standardMaterial.js.map +1 -1
  493. package/Maths/math.size.js +1 -1
  494. package/Maths/math.size.js.map +1 -1
  495. package/Maths/math.vector.d.ts +4 -2
  496. package/Maths/math.vector.js +34 -32
  497. package/Maths/math.vector.js.map +1 -1
  498. package/Meshes/Builders/boxBuilder.js +5 -4
  499. package/Meshes/Builders/boxBuilder.js.map +1 -1
  500. package/Meshes/Builders/capsuleBuilder.js +4 -3
  501. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  502. package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
  503. package/Meshes/Builders/cylinderBuilder.js +11 -8
  504. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  505. package/Meshes/Builders/decalBuilder.js +5 -2
  506. package/Meshes/Builders/decalBuilder.js.map +1 -1
  507. package/Meshes/Builders/discBuilder.js +3 -2
  508. package/Meshes/Builders/discBuilder.js.map +1 -1
  509. package/Meshes/Builders/goldbergBuilder.js +10 -1
  510. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  511. package/Meshes/Builders/groundBuilder.js +2 -1
  512. package/Meshes/Builders/groundBuilder.js.map +1 -1
  513. package/Meshes/Builders/icoSphereBuilder.js +2 -1
  514. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  515. package/Meshes/Builders/linesBuilder.js.map +1 -1
  516. package/Meshes/Builders/planeBuilder.js +5 -4
  517. package/Meshes/Builders/planeBuilder.js.map +1 -1
  518. package/Meshes/Builders/polygonBuilder.js +6 -2
  519. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  520. package/Meshes/Builders/polyhedronBuilder.js +3 -2
  521. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  522. package/Meshes/Builders/ribbonBuilder.js +4 -3
  523. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  524. package/Meshes/Builders/sphereBuilder.js +2 -1
  525. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  526. package/Meshes/Builders/tiledBoxBuilder.js +4 -0
  527. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  528. package/Meshes/Builders/torusBuilder.js +2 -1
  529. package/Meshes/Builders/torusBuilder.js.map +1 -1
  530. package/Meshes/Builders/torusKnotBuilder.js +2 -1
  531. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  532. package/Meshes/Compression/dracoCompression.d.ts +3 -0
  533. package/Meshes/Compression/dracoCompression.js +23 -7
  534. package/Meshes/Compression/dracoCompression.js.map +1 -1
  535. package/Meshes/abstractMesh.d.ts +10 -2
  536. package/Meshes/abstractMesh.js +39 -33
  537. package/Meshes/abstractMesh.js.map +1 -1
  538. package/Meshes/geometry.d.ts +1 -1
  539. package/Meshes/geometry.js +38 -3
  540. package/Meshes/geometry.js.map +1 -1
  541. package/Meshes/groundMesh.d.ts +1 -1
  542. package/Meshes/groundMesh.js.map +1 -1
  543. package/Meshes/instancedMesh.js +5 -6
  544. package/Meshes/instancedMesh.js.map +1 -1
  545. package/Meshes/mesh.d.ts +1 -1
  546. package/Meshes/mesh.js +39 -35
  547. package/Meshes/mesh.js.map +1 -1
  548. package/Meshes/mesh.lts.d.ts +1 -1
  549. package/Meshes/mesh.lts.js.map +1 -1
  550. package/Meshes/mesh.vertexData.d.ts +1 -1
  551. package/Meshes/mesh.vertexData.js +2 -2
  552. package/Meshes/mesh.vertexData.js.map +1 -1
  553. package/Meshes/polygonMesh.js +2 -2
  554. package/Meshes/polygonMesh.js.map +1 -1
  555. package/Meshes/subMesh.js +1 -2
  556. package/Meshes/subMesh.js.map +1 -1
  557. package/Meshes/subMesh.project.js +1 -2
  558. package/Meshes/subMesh.project.js.map +1 -1
  559. package/Meshes/thinInstanceMesh.js +5 -0
  560. package/Meshes/thinInstanceMesh.js.map +1 -1
  561. package/Meshes/trailMesh.d.ts +1 -1
  562. package/Meshes/trailMesh.js.map +1 -1
  563. package/Meshes/transformNode.js +40 -13
  564. package/Meshes/transformNode.js.map +1 -1
  565. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +5 -0
  566. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +13 -2
  567. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  568. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +6 -12
  569. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  570. package/Misc/PerformanceViewer/performanceViewerCollector.js +6 -6
  571. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  572. package/Misc/assetsManager.d.ts +2 -1
  573. package/Misc/assetsManager.js +15 -1
  574. package/Misc/assetsManager.js.map +1 -1
  575. package/Misc/basis.js +1 -1
  576. package/Misc/basis.js.map +1 -1
  577. package/Misc/brdfTextureTools.js +4 -1
  578. package/Misc/brdfTextureTools.js.map +1 -1
  579. package/Misc/dds.js +7 -0
  580. package/Misc/dds.js.map +1 -1
  581. package/Misc/decorators.js +7 -0
  582. package/Misc/decorators.js.map +1 -1
  583. package/Misc/deepCopier.js +3 -3
  584. package/Misc/deepCopier.js.map +1 -1
  585. package/Misc/devTools.js +1 -1
  586. package/Misc/devTools.js.map +1 -1
  587. package/Misc/environmentTextureTools.js +2 -2
  588. package/Misc/environmentTextureTools.js.map +1 -1
  589. package/Misc/fileTools.js +3 -3
  590. package/Misc/fileTools.js.map +1 -1
  591. package/Misc/khronosTextureContainer2.js +4 -3
  592. package/Misc/khronosTextureContainer2.js.map +1 -1
  593. package/Misc/reflector.js +6 -6
  594. package/Misc/reflector.js.map +1 -1
  595. package/Misc/tools.js +15 -13
  596. package/Misc/tools.js.map +1 -1
  597. package/Misc/uniqueIdGenerator.js +1 -1
  598. package/Misc/uniqueIdGenerator.js.map +1 -1
  599. package/Offline/database.js +1 -1
  600. package/Offline/database.js.map +1 -1
  601. package/Particles/baseParticleSystem.d.ts +4 -1
  602. package/Particles/baseParticleSystem.js +20 -5
  603. package/Particles/baseParticleSystem.js.map +1 -1
  604. package/Particles/particleHelper.js +2 -2
  605. package/Particles/particleHelper.js.map +1 -1
  606. package/Physics/Plugins/ammoJSPlugin.js +4 -4
  607. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  608. package/Physics/physicsImpostor.d.ts +2 -2
  609. package/Physics/physicsImpostor.js.map +1 -1
  610. package/PostProcesses/blurPostProcess.js +5 -5
  611. package/PostProcesses/blurPostProcess.js.map +1 -1
  612. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  613. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  614. package/PostProcesses/postProcess.js +1 -1
  615. package/PostProcesses/postProcess.js.map +1 -1
  616. package/PostProcesses/postProcessManager.js +2 -2
  617. package/PostProcesses/postProcessManager.js.map +1 -1
  618. package/Probes/reflectionProbe.js +2 -2
  619. package/Probes/reflectionProbe.js.map +1 -1
  620. package/Rendering/depthPeelingRenderer.js +3 -3
  621. package/Rendering/depthPeelingRenderer.js.map +1 -1
  622. package/Rendering/geometryBufferRenderer.js +8 -8
  623. package/Rendering/geometryBufferRenderer.js.map +1 -1
  624. package/Rendering/outlineRenderer.js +1 -1
  625. package/Rendering/outlineRenderer.js.map +1 -1
  626. package/Rendering/utilityLayerRenderer.js +4 -0
  627. package/Rendering/utilityLayerRenderer.js.map +1 -1
  628. package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
  629. package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
  630. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
  631. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  632. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +1 -1
  633. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  634. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  635. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  636. package/Shaders/color.fragment.js +1 -1
  637. package/Shaders/color.fragment.js.map +1 -1
  638. package/Shaders/color.vertex.js +1 -1
  639. package/Shaders/color.vertex.js.map +1 -1
  640. package/Shaders/default.fragment.js +1 -1
  641. package/Shaders/default.fragment.js.map +1 -1
  642. package/Shaders/default.vertex.js +1 -1
  643. package/Shaders/default.vertex.js.map +1 -1
  644. package/Shaders/geometry.vertex.js +1 -1
  645. package/Shaders/geometry.vertex.js.map +1 -1
  646. package/Shaders/pbr.vertex.js +1 -1
  647. package/Shaders/pbr.vertex.js.map +1 -1
  648. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
  649. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
  650. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  651. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  652. package/Sprites/spriteManager.js +9 -10
  653. package/Sprites/spriteManager.js.map +1 -1
  654. package/Sprites/spriteMap.js +2 -2
  655. package/Sprites/spriteMap.js.map +1 -1
  656. package/Sprites/spriteRenderer.js +1 -1
  657. package/Sprites/spriteRenderer.js.map +1 -1
  658. package/XR/features/WebXRDOMOverlay.js +1 -1
  659. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  660. package/XR/features/WebXRHandTracking.js +30 -30
  661. package/XR/features/WebXRHandTracking.js.map +1 -1
  662. package/XR/features/WebXRImageTracking.js +2 -2
  663. package/XR/features/WebXRImageTracking.js.map +1 -1
  664. package/XR/features/WebXRLayers.d.ts +28 -5
  665. package/XR/features/WebXRLayers.js +54 -20
  666. package/XR/features/WebXRLayers.js.map +1 -1
  667. package/XR/features/WebXRNearInteraction.d.ts +35 -3
  668. package/XR/features/WebXRNearInteraction.js +201 -40
  669. package/XR/features/WebXRNearInteraction.js.map +1 -1
  670. package/XR/motionController/webXRAbstractMotionController.js +1 -1
  671. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  672. package/XR/motionController/webXRMotionControllerManager.js +2 -2
  673. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  674. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  675. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  676. package/XR/webXRCamera.js +17 -4
  677. package/XR/webXRCamera.js.map +1 -1
  678. package/XR/webXRDefaultExperience.js +3 -0
  679. package/XR/webXRDefaultExperience.js.map +1 -1
  680. package/XR/webXREnterExitUI.js +2 -2
  681. package/XR/webXREnterExitUI.js.map +1 -1
  682. package/XR/webXRExperienceHelper.js +3 -2
  683. package/XR/webXRExperienceHelper.js.map +1 -1
  684. package/XR/webXRFeaturesManager.js +6 -6
  685. package/XR/webXRFeaturesManager.js.map +1 -1
  686. package/XR/webXRInputSource.js +3 -3
  687. package/XR/webXRInputSource.js.map +1 -1
  688. package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
  689. package/XR/webXRRenderTargetTextureProvider.js +37 -18
  690. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  691. package/XR/webXRSessionManager.d.ts +1 -0
  692. package/XR/webXRSessionManager.js +6 -1
  693. package/XR/webXRSessionManager.js.map +1 -1
  694. package/assetContainer.d.ts +1 -1
  695. package/assetContainer.js +5 -4
  696. package/assetContainer.js.map +1 -1
  697. package/index.d.ts +1 -0
  698. package/index.js +1 -0
  699. package/index.js.map +1 -1
  700. package/node.d.ts +1 -1
  701. package/node.js.map +1 -1
  702. package/package.json +13 -1
  703. package/scene.d.ts +3 -1
  704. package/scene.js +38 -13
  705. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"engine.multiview.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.multiview.ts"],"names":[],"mappings":"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","sourcesContent":["import { Camera } from \"../../Cameras/camera\";\r\nimport { Engine } from \"../../Engines/engine\";\r\nimport { Scene } from \"../../scene\";\r\nimport { InternalTexture, InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Nullable } from '../../types';\r\nimport { RenderTargetTexture } from '../../Materials/Textures/renderTargetTexture';\r\nimport { Matrix, TmpVectors } from '../../Maths/math.vector';\r\nimport { UniformBuffer } from '../../Materials/uniformBuffer';\r\nimport { MultiviewRenderTarget } from '../../Materials/Textures/MultiviewRenderTarget';\r\nimport { Frustum } from '../../Maths/math.frustum';\r\nimport { WebGLRenderTargetWrapper } from \"../WebGL/webGLRenderTargetWrapper\";\r\nimport { RenderTargetWrapper } from \"../renderTargetWrapper\";\r\n\r\ndeclare module \"../../Engines/engine\" {\r\n export interface Engine {\r\n /**\r\n * Creates a new multiview render target\r\n * @param width defines the width of the texture\r\n * @param height defines the height of the texture\r\n * @returns the created multiview render target wrapper\r\n */\r\n createMultiviewRenderTargetTexture(width: number, height: number): RenderTargetWrapper;\r\n\r\n /**\r\n * Binds a multiview render target wrapper to be drawn to\r\n * @param multiviewTexture render target wrapper to bind\r\n */\r\n bindMultiviewFramebuffer(multiviewTexture: RenderTargetWrapper): void;\r\n }\r\n}\r\n\r\nEngine.prototype.createMultiviewRenderTargetTexture = function (width: number, height: number) {\r\n var gl = this._gl;\r\n\r\n if (!this.getCaps().multiview) {\r\n throw \"Multiview is not supported\";\r\n }\r\n\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, { width, height }) as WebGLRenderTargetWrapper;\r\n\r\n rtWrapper._framebuffer = gl.createFramebuffer();\r\n\r\n var internalTexture = new InternalTexture(this, InternalTextureSource.Unknown, true);\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n\r\n rtWrapper._colorTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._colorTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, gl.RGBA8, width, height, 2);\r\n\r\n rtWrapper._depthStencilTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._depthStencilTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, (gl as any).DEPTH32F_STENCIL8, width, height, 2);\r\n\r\n internalTexture.isReady = true;\r\n\r\n rtWrapper.setTextures(internalTexture);\r\n\r\n return rtWrapper;\r\n};\r\n\r\nEngine.prototype.bindMultiviewFramebuffer = function (_multiviewTexture: RenderTargetWrapper) {\r\n const multiviewTexture = _multiviewTexture as WebGLRenderTargetWrapper;\r\n\r\n var gl: any = this._gl;\r\n var ext = this.getCaps().oculusMultiview || this.getCaps().multiview;\r\n\r\n this.bindFramebuffer(multiviewTexture, undefined, undefined, undefined, true);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, multiviewTexture._framebuffer);\r\n if (multiviewTexture._colorTextureArray && multiviewTexture._depthStencilTextureArray) {\r\n if (this.getCaps().oculusMultiview) {\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n } else {\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, 0, 2);\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, 0, 2);\r\n }\r\n } else {\r\n throw \"Invalid multiview frame buffer\";\r\n }\r\n};\r\n\r\ndeclare module \"../../Cameras/camera\" {\r\n export interface Camera {\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _useMultiviewToSingleView: boolean;\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _multiviewTexture: Nullable<RenderTargetTexture>;\r\n\r\n /**\r\n * @hidden\r\n * ensures the multiview texture of the camera exists and has the specified width/height\r\n * @param width height to set on the multiview texture\r\n * @param height width to set on the multiview texture\r\n */\r\n _resizeOrCreateMultiviewTexture(width: number, height: number): void;\r\n }\r\n}\r\n\r\nCamera.prototype._useMultiviewToSingleView = false;\r\n\r\nCamera.prototype._multiviewTexture = null;\r\n\r\nCamera.prototype._resizeOrCreateMultiviewTexture = function (width: number, height: number) {\r\n if (!this._multiviewTexture) {\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n } else if (this._multiviewTexture.getRenderWidth() != width || this._multiviewTexture.getRenderHeight() != height) {\r\n this._multiviewTexture.dispose();\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n }\r\n};\r\n\r\ndeclare module \"../../scene\" {\r\n export interface Scene {\r\n /** @hidden */\r\n _transformMatrixR: Matrix;\r\n /** @hidden */\r\n _multiviewSceneUbo: Nullable<UniformBuffer>;\r\n /** @hidden */\r\n _createMultiviewUbo(): void;\r\n /** @hidden */\r\n _updateMultiviewUbo(viewR?: Matrix, projectionR?: Matrix): void;\r\n /** @hidden */\r\n _renderMultiviewToSingleView(camera: Camera): void;\r\n }\r\n}\r\n\r\nfunction createMultiviewUbo(engine: Engine, name?: string) {\r\n const ubo = new UniformBuffer(engine, undefined, true, name);\r\n ubo.addUniform(\"viewProjection\", 16);\r\n ubo.addUniform(\"viewProjectionR\", 16);\r\n ubo.addUniform(\"view\", 16);\r\n ubo.addUniform(\"projection\", 16);\r\n ubo.addUniform(\"viewPosition\", 4);\r\n return ubo;\r\n}\r\n\r\nconst currentCreateSceneUniformBuffer = Scene.prototype.createSceneUniformBuffer;\r\n\r\nScene.prototype._transformMatrixR = Matrix.Zero();\r\nScene.prototype._multiviewSceneUbo = null;\r\nScene.prototype._createMultiviewUbo = function () {\r\n this._multiviewSceneUbo = createMultiviewUbo(this.getEngine(), \"scene_multiview\");\r\n};\r\nScene.prototype.createSceneUniformBuffer = function (name?: string): UniformBuffer {\r\n if (this._multiviewSceneUbo) {\r\n return createMultiviewUbo(this.getEngine(), name);\r\n }\r\n return currentCreateSceneUniformBuffer.bind(this)(name);\r\n};\r\nScene.prototype._updateMultiviewUbo = function (viewR?: Matrix, projectionR?: Matrix) {\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, this._transformMatrixR);\r\n }\r\n\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, TmpVectors.Matrix[0]);\r\n Frustum.GetRightPlaneToRef(TmpVectors.Matrix[0], this._frustumPlanes[3]); // Replace right plane by second camera right plane\r\n }\r\n\r\n if (this._multiviewSceneUbo) {\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjection\", this.getTransformMatrix());\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjectionR\", this._transformMatrixR);\r\n this._multiviewSceneUbo.updateMatrix(\"view\", this._viewMatrix);\r\n this._multiviewSceneUbo.updateMatrix(\"projection\", this._projectionMatrix);\r\n }\r\n};\r\nScene.prototype._renderMultiviewToSingleView = function (camera: Camera) {\r\n // Multiview is only able to be displayed directly for API's such as webXR\r\n // This displays a multiview image by rendering to the multiview image and then\r\n // copying the result into the sub cameras instead of rendering them and proceeding as normal from there\r\n\r\n // Render to a multiview texture\r\n camera._resizeOrCreateMultiviewTexture(\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.width > 0) ? camera._rigPostProcess.width : this.getEngine().getRenderWidth(true),\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.height > 0) ? camera._rigPostProcess.height : this.getEngine().getRenderHeight(true)\r\n );\r\n if (!this._multiviewSceneUbo) {\r\n this._createMultiviewUbo();\r\n }\r\n camera.outputRenderTarget = camera._multiviewTexture;\r\n this._renderForCamera(camera);\r\n camera.outputRenderTarget = null;\r\n\r\n // Consume the multiview texture through a shader for each eye\r\n for (var index = 0; index < camera._rigCameras.length; index++) {\r\n var engine = this.getEngine();\r\n this._activeCamera = camera._rigCameras[index];\r\n engine.setViewport(this._activeCamera.viewport);\r\n if (this.postProcessManager) {\r\n this.postProcessManager._prepareFrame();\r\n this.postProcessManager._finalizeFrame(this._activeCamera.isIntermediate);\r\n }\r\n }\r\n};"]}
1
+ {"version":3,"file":"engine.multiview.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.multiview.ts"],"names":[],"mappings":"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","sourcesContent":["import { Camera } from \"../../Cameras/camera\";\r\nimport { Engine } from \"../../Engines/engine\";\r\nimport { Scene } from \"../../scene\";\r\nimport { InternalTexture, InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Nullable } from '../../types';\r\nimport { RenderTargetTexture } from '../../Materials/Textures/renderTargetTexture';\r\nimport { Matrix, TmpVectors } from '../../Maths/math.vector';\r\nimport { UniformBuffer } from '../../Materials/uniformBuffer';\r\nimport { MultiviewRenderTarget } from '../../Materials/Textures/MultiviewRenderTarget';\r\nimport { Frustum } from '../../Maths/math.frustum';\r\nimport { WebGLRenderTargetWrapper } from \"../WebGL/webGLRenderTargetWrapper\";\r\nimport { RenderTargetWrapper } from \"../renderTargetWrapper\";\r\n\r\ndeclare module \"../../Engines/engine\" {\r\n export interface Engine {\r\n /**\r\n * Creates a new multiview render target\r\n * @param width defines the width of the texture\r\n * @param height defines the height of the texture\r\n * @returns the created multiview render target wrapper\r\n */\r\n createMultiviewRenderTargetTexture(width: number, height: number): RenderTargetWrapper;\r\n\r\n /**\r\n * Binds a multiview render target wrapper to be drawn to\r\n * @param multiviewTexture render target wrapper to bind\r\n */\r\n bindMultiviewFramebuffer(multiviewTexture: RenderTargetWrapper): void;\r\n }\r\n}\r\n\r\nEngine.prototype.createMultiviewRenderTargetTexture = function (width: number, height: number) {\r\n var gl = this._gl;\r\n\r\n if (!this.getCaps().multiview) {\r\n throw \"Multiview is not supported\";\r\n }\r\n\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, { width, height }) as WebGLRenderTargetWrapper;\r\n\r\n rtWrapper._framebuffer = gl.createFramebuffer();\r\n\r\n var internalTexture = new InternalTexture(this, InternalTextureSource.Unknown, true);\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n internalTexture.isMultiview = true;\r\n\r\n rtWrapper._colorTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._colorTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, gl.RGBA8, width, height, 2);\r\n\r\n rtWrapper._depthStencilTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._depthStencilTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, (gl as any).DEPTH24_STENCIL8, width, height, 2);\r\n\r\n internalTexture.isReady = true;\r\n\r\n rtWrapper.setTextures(internalTexture);\r\n rtWrapper._depthStencilTexture = internalTexture;\r\n\r\n return rtWrapper;\r\n};\r\n\r\nEngine.prototype.bindMultiviewFramebuffer = function (_multiviewTexture: RenderTargetWrapper) {\r\n const multiviewTexture = _multiviewTexture as WebGLRenderTargetWrapper;\r\n\r\n var gl: any = this._gl;\r\n var ext = this.getCaps().oculusMultiview || this.getCaps().multiview;\r\n\r\n this.bindFramebuffer(multiviewTexture, undefined, undefined, undefined, true);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, multiviewTexture._framebuffer);\r\n if (multiviewTexture._colorTextureArray && multiviewTexture._depthStencilTextureArray) {\r\n if (this.getCaps().oculusMultiview) {\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n } else {\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, 0, 2);\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, 0, 2);\r\n }\r\n } else {\r\n throw \"Invalid multiview frame buffer\";\r\n }\r\n};\r\n\r\ndeclare module \"../../Cameras/camera\" {\r\n export interface Camera {\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _useMultiviewToSingleView: boolean;\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _multiviewTexture: Nullable<RenderTargetTexture>;\r\n\r\n /**\r\n * @hidden\r\n * For WebXR cameras that are rendering to multiview texture arrays.\r\n */\r\n _renderingMultiview: boolean;\r\n\r\n /**\r\n * @hidden\r\n * ensures the multiview texture of the camera exists and has the specified width/height\r\n * @param width height to set on the multiview texture\r\n * @param height width to set on the multiview texture\r\n */\r\n _resizeOrCreateMultiviewTexture(width: number, height: number): void;\r\n }\r\n}\r\n\r\nCamera.prototype._useMultiviewToSingleView = false;\r\n\r\nCamera.prototype._multiviewTexture = null;\r\n\r\nCamera.prototype._resizeOrCreateMultiviewTexture = function (width: number, height: number) {\r\n if (!this._multiviewTexture) {\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n } else if (this._multiviewTexture.getRenderWidth() != width || this._multiviewTexture.getRenderHeight() != height) {\r\n this._multiviewTexture.dispose();\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n }\r\n};\r\n\r\ndeclare module \"../../scene\" {\r\n export interface Scene {\r\n /** @hidden */\r\n _transformMatrixR: Matrix;\r\n /** @hidden */\r\n _multiviewSceneUbo: Nullable<UniformBuffer>;\r\n /** @hidden */\r\n _createMultiviewUbo(): void;\r\n /** @hidden */\r\n _updateMultiviewUbo(viewR?: Matrix, projectionR?: Matrix): void;\r\n /** @hidden */\r\n _renderMultiviewToSingleView(camera: Camera): void;\r\n }\r\n}\r\n\r\nfunction createMultiviewUbo(engine: Engine, name?: string) {\r\n const ubo = new UniformBuffer(engine, undefined, true, name);\r\n ubo.addUniform(\"viewProjection\", 16);\r\n ubo.addUniform(\"viewProjectionR\", 16);\r\n ubo.addUniform(\"view\", 16);\r\n ubo.addUniform(\"projection\", 16);\r\n ubo.addUniform(\"vEyePosition\", 4);\r\n return ubo;\r\n}\r\n\r\nconst currentCreateSceneUniformBuffer = Scene.prototype.createSceneUniformBuffer;\r\n\r\nScene.prototype._transformMatrixR = Matrix.Zero();\r\nScene.prototype._multiviewSceneUbo = null;\r\nScene.prototype._createMultiviewUbo = function () {\r\n this._multiviewSceneUbo = createMultiviewUbo(this.getEngine(), \"scene_multiview\");\r\n};\r\nScene.prototype.createSceneUniformBuffer = function (name?: string): UniformBuffer {\r\n if (this._multiviewSceneUbo) {\r\n return createMultiviewUbo(this.getEngine(), name);\r\n }\r\n return currentCreateSceneUniformBuffer.bind(this)(name);\r\n};\r\nScene.prototype._updateMultiviewUbo = function (viewR?: Matrix, projectionR?: Matrix) {\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, this._transformMatrixR);\r\n }\r\n\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, TmpVectors.Matrix[0]);\r\n Frustum.GetRightPlaneToRef(TmpVectors.Matrix[0], this._frustumPlanes[3]); // Replace right plane by second camera right plane\r\n }\r\n\r\n if (this._multiviewSceneUbo) {\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjection\", this.getTransformMatrix());\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjectionR\", this._transformMatrixR);\r\n this._multiviewSceneUbo.updateMatrix(\"view\", this._viewMatrix);\r\n this._multiviewSceneUbo.updateMatrix(\"projection\", this._projectionMatrix);\r\n }\r\n};\r\nScene.prototype._renderMultiviewToSingleView = function (camera: Camera) {\r\n // Multiview is only able to be displayed directly for API's such as webXR\r\n // This displays a multiview image by rendering to the multiview image and then\r\n // copying the result into the sub cameras instead of rendering them and proceeding as normal from there\r\n\r\n // Render to a multiview texture\r\n camera._resizeOrCreateMultiviewTexture(\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.width > 0) ? camera._rigPostProcess.width : this.getEngine().getRenderWidth(true),\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.height > 0) ? camera._rigPostProcess.height : this.getEngine().getRenderHeight(true)\r\n );\r\n if (!this._multiviewSceneUbo) {\r\n this._createMultiviewUbo();\r\n }\r\n camera.outputRenderTarget = camera._multiviewTexture;\r\n this._renderForCamera(camera);\r\n camera.outputRenderTarget = null;\r\n\r\n // Consume the multiview texture through a shader for each eye\r\n for (var index = 0; index < camera._rigCameras.length; index++) {\r\n var engine = this.getEngine();\r\n this._activeCamera = camera._rigCameras[index];\r\n engine.setViewport(this._activeCamera.viewport);\r\n if (this.postProcessManager) {\r\n this.postProcessManager._prepareFrame();\r\n this.postProcessManager._finalizeFrame(this._activeCamera.isIntermediate);\r\n }\r\n }\r\n};"]}
@@ -12,7 +12,7 @@ export interface INativeEngine {
12
12
  recordIndexBuffer(vertexArray: NativeData, indexBuffer: NativeData): void;
13
13
  updateDynamicIndexBuffer(buffer: NativeData, bytes: ArrayBuffer, byteOffset: number, byteLength: number, startIndex: number): void;
14
14
  createVertexBuffer(bytes: ArrayBuffer, byteOffset: number, byteLength: number, dynamic: boolean): NativeData;
15
- recordVertexBuffer(vertexArray: NativeData, vertexBuffer: NativeData, location: number, byteOffset: number, byteStride: number, numElements: number, type: number, normalized: boolean): void;
15
+ recordVertexBuffer(vertexArray: NativeData, vertexBuffer: NativeData, location: number, byteOffset: number, byteStride: number, numElements: number, type: number, normalized: boolean, instanceDivisor: number): void;
16
16
  updateDynamicVertexBuffer(vertexBuffer: NativeData, bytes: ArrayBuffer, byteOffset: number, byteLength: number): void;
17
17
  createProgram(vertexShader: string, fragmentShader: string): any;
18
18
  getUniforms(shaderProgram: any, uniformsNames: string[]): WebGLUniformLocation[];
@@ -20,6 +20,7 @@ export interface INativeEngine {
20
20
  createTexture(): WebGLTexture;
21
21
  loadTexture(texture: WebGLTexture, data: ArrayBufferView, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;
22
22
  loadRawTexture(texture: WebGLTexture, data: ArrayBufferView, width: number, height: number, format: number, generateMips: boolean, invertY: boolean): void;
23
+ loadRawTexture2DArray(texture: WebGLTexture, data: Nullable<ArrayBufferView>, width: number, height: number, depth: number, format: number, generateMipMaps: boolean, invertY: boolean): void;
23
24
  loadCubeTexture(texture: WebGLTexture, data: Array<ArrayBufferView>, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;
24
25
  loadCubeTextureWithMips(texture: WebGLTexture, data: Array<Array<ArrayBufferView>>, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;
25
26
  getTextureWidth(texture: WebGLTexture): number;
@@ -1 +1 @@
1
- {"version":3,"file":"nativeInterfaces.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Native/nativeInterfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { INativeInput } from \"../../DeviceInput/InputDevices/inputInterfaces\";\r\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { Nullable } from \"../../types\";\r\nimport { ICanvas, IImage } from \"../ICanvas\";\r\nimport { NativeData, NativeDataStream } from \"./nativeDataStream\";\r\n\r\n/** @hidden */\r\nexport interface INativeEngine {\r\n dispose(): void;\r\n\r\n requestAnimationFrame(callback: () => void): void;\r\n\r\n createVertexArray(): NativeData;\r\n\r\n createIndexBuffer(bytes: ArrayBuffer, byteOffset: number, byteLength: number, is32Bits: boolean, dynamic: boolean): NativeData;\r\n recordIndexBuffer(vertexArray: NativeData, indexBuffer: NativeData): void;\r\n updateDynamicIndexBuffer(buffer: NativeData, bytes: ArrayBuffer, byteOffset: number, byteLength: number, startIndex: number): void;\r\n\r\n createVertexBuffer(bytes: ArrayBuffer, byteOffset: number, byteLength: number, dynamic: boolean): NativeData;\r\n recordVertexBuffer(vertexArray: NativeData, vertexBuffer: NativeData, location: number, byteOffset: number, byteStride: number, numElements: number, type: number, normalized: boolean): void;\r\n updateDynamicVertexBuffer(vertexBuffer: NativeData, bytes: ArrayBuffer, byteOffset: number, byteLength: number): void;\r\n\r\n createProgram(vertexShader: string, fragmentShader: string): any;\r\n getUniforms(shaderProgram: any, uniformsNames: string[]): WebGLUniformLocation[];\r\n getAttributes(shaderProgram: any, attributeNames: string[]): number[];\r\n\r\n createTexture(): WebGLTexture;\r\n loadTexture(texture: WebGLTexture, data: ArrayBufferView, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;\r\n loadRawTexture(texture: WebGLTexture, data: ArrayBufferView, width: number, height: number, format: number, generateMips: boolean, invertY: boolean): void;\r\n loadCubeTexture(texture: WebGLTexture, data: Array<ArrayBufferView>, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;\r\n loadCubeTextureWithMips(texture: WebGLTexture, data: Array<Array<ArrayBufferView>>, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;\r\n getTextureWidth(texture: WebGLTexture): number;\r\n getTextureHeight(texture: WebGLTexture): number;\r\n copyTexture(desination: Nullable<WebGLTexture>, source: Nullable<WebGLTexture>): void;\r\n deleteTexture(texture: Nullable<WebGLTexture>): void;\r\n\r\n createImageBitmap(data: ArrayBufferView): ImageBitmap;\r\n resizeImageBitmap(image: ImageBitmap, bufferWidth: number, bufferHeight: number): Uint8Array;\r\n\r\n createFrameBuffer(texture: WebGLTexture, width: number, height: number, format: number, generateStencilBuffer: boolean, generateDepthBuffer: boolean, generateMips: boolean): WebGLFramebuffer;\r\n\r\n getRenderWidth(): number;\r\n getRenderHeight(): number;\r\n getHardwareScalingLevel(): number;\r\n setHardwareScalingLevel(level: number): void;\r\n\r\n setViewPort(x: number, y: number, width: number, height: number): void;\r\n\r\n setCommandDataStream(dataStream: NativeDataStream): void;\r\n submitCommands(): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeEngineConstructor {\r\n prototype: INativeEngine;\r\n new(): INativeEngine;\r\n\r\n readonly PROTOCOL_VERSION: number;\r\n\r\n readonly TEXTURE_NEAREST_NEAREST: number;\r\n readonly TEXTURE_LINEAR_LINEAR: number;\r\n readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;\r\n readonly TEXTURE_NEAREST_NEAREST_MIPNEAREST: number;\r\n readonly TEXTURE_NEAREST_LINEAR_MIPNEAREST: number;\r\n readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;\r\n readonly TEXTURE_NEAREST_LINEAR: number;\r\n readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;\r\n readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;\r\n readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;\r\n readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;\r\n readonly TEXTURE_LINEAR_NEAREST: number;\r\n\r\n readonly DEPTH_TEST_LESS: number;\r\n readonly DEPTH_TEST_LEQUAL: number;\r\n readonly DEPTH_TEST_EQUAL: number;\r\n readonly DEPTH_TEST_GEQUAL: number;\r\n readonly DEPTH_TEST_GREATER: number;\r\n readonly DEPTH_TEST_NOTEQUAL: number;\r\n readonly DEPTH_TEST_NEVER: number;\r\n readonly DEPTH_TEST_ALWAYS: number;\r\n\r\n readonly ADDRESS_MODE_WRAP: number;\r\n readonly ADDRESS_MODE_MIRROR: number;\r\n readonly ADDRESS_MODE_CLAMP: number;\r\n readonly ADDRESS_MODE_BORDER: number;\r\n readonly ADDRESS_MODE_MIRROR_ONCE: number;\r\n\r\n readonly TEXTURE_FORMAT_RGB8: number;\r\n readonly TEXTURE_FORMAT_RGBA8: number;\r\n readonly TEXTURE_FORMAT_RGBA32F: number;\r\n\r\n readonly ATTRIB_TYPE_INT8: number;\r\n readonly ATTRIB_TYPE_UINT8: number;\r\n readonly ATTRIB_TYPE_INT16: number;\r\n readonly ATTRIB_TYPE_UINT16: number;\r\n readonly ATTRIB_TYPE_FLOAT: number;\r\n\r\n readonly ALPHA_DISABLE: number;\r\n readonly ALPHA_ADD: number;\r\n readonly ALPHA_COMBINE: number;\r\n readonly ALPHA_SUBTRACT: number;\r\n readonly ALPHA_MULTIPLY: number;\r\n readonly ALPHA_MAXIMIZED: number;\r\n readonly ALPHA_ONEONE: number;\r\n readonly ALPHA_PREMULTIPLIED: number;\r\n readonly ALPHA_PREMULTIPLIED_PORTERDUFF: number;\r\n readonly ALPHA_INTERPOLATE: number;\r\n readonly ALPHA_SCREENMODE: number;\r\n\r\n readonly STENCIL_TEST_LESS: number;\r\n readonly STENCIL_TEST_LEQUAL: number;\r\n readonly STENCIL_TEST_EQUAL: number;\r\n readonly STENCIL_TEST_GEQUAL: number;\r\n readonly STENCIL_TEST_GREATER: number;\r\n readonly STENCIL_TEST_NOTEQUAL: number;\r\n readonly STENCIL_TEST_NEVER: number;\r\n readonly STENCIL_TEST_ALWAYS: number;\r\n\r\n readonly STENCIL_OP_FAIL_S_ZERO: number;\r\n readonly STENCIL_OP_FAIL_S_KEEP: number;\r\n readonly STENCIL_OP_FAIL_S_REPLACE: number;\r\n readonly STENCIL_OP_FAIL_S_INCR: number;\r\n readonly STENCIL_OP_FAIL_S_INCRSAT: number;\r\n readonly STENCIL_OP_FAIL_S_DECR: number;\r\n readonly STENCIL_OP_FAIL_S_DECRSAT: number;\r\n readonly STENCIL_OP_FAIL_S_INVERT: number;\r\n\r\n readonly STENCIL_OP_FAIL_Z_ZERO: number;\r\n readonly STENCIL_OP_FAIL_Z_KEEP: number;\r\n readonly STENCIL_OP_FAIL_Z_REPLACE: number;\r\n readonly STENCIL_OP_FAIL_Z_INCR: number;\r\n readonly STENCIL_OP_FAIL_Z_INCRSAT: number;\r\n readonly STENCIL_OP_FAIL_Z_DECR: number;\r\n readonly STENCIL_OP_FAIL_Z_DECRSAT: number;\r\n readonly STENCIL_OP_FAIL_Z_INVERT: number;\r\n\r\n readonly STENCIL_OP_PASS_Z_ZERO: number;\r\n readonly STENCIL_OP_PASS_Z_KEEP: number;\r\n readonly STENCIL_OP_PASS_Z_REPLACE: number;\r\n readonly STENCIL_OP_PASS_Z_INCR: number;\r\n readonly STENCIL_OP_PASS_Z_INCRSAT: number;\r\n readonly STENCIL_OP_PASS_Z_DECR: number;\r\n readonly STENCIL_OP_PASS_Z_DECRSAT: number;\r\n readonly STENCIL_OP_PASS_Z_INVERT: number;\r\n\r\n readonly COMMAND_DELETEVERTEXARRAY: NativeData;\r\n readonly COMMAND_DELETEINDEXBUFFER: NativeData;\r\n readonly COMMAND_DELETEVERTEXBUFFER: NativeData;\r\n readonly COMMAND_SETPROGRAM: NativeData;\r\n readonly COMMAND_SETMATRIX: NativeData;\r\n readonly COMMAND_SETMATRIX3X3: NativeData;\r\n readonly COMMAND_SETMATRIX2X2: NativeData;\r\n readonly COMMAND_SETMATRICES: NativeData;\r\n readonly COMMAND_SETINT: NativeData;\r\n readonly COMMAND_SETINTARRAY: NativeData;\r\n readonly COMMAND_SETINTARRAY2: NativeData;\r\n readonly COMMAND_SETINTARRAY3: NativeData;\r\n readonly COMMAND_SETINTARRAY4: NativeData;\r\n readonly COMMAND_SETFLOATARRAY: NativeData;\r\n readonly COMMAND_SETFLOATARRAY2: NativeData;\r\n readonly COMMAND_SETFLOATARRAY3: NativeData;\r\n readonly COMMAND_SETFLOATARRAY4: NativeData;\r\n readonly COMMAND_SETTEXTURESAMPLING: NativeData;\r\n readonly COMMAND_SETTEXTUREWRAPMODE: NativeData;\r\n readonly COMMAND_SETTEXTUREANISOTROPICLEVEL: NativeData;\r\n readonly COMMAND_SETTEXTURE: NativeData;\r\n readonly COMMAND_BINDVERTEXARRAY: NativeData;\r\n readonly COMMAND_SETSTATE: NativeData;\r\n readonly COMMAND_DELETEPROGRAM: NativeData;\r\n readonly COMMAND_SETZOFFSET: NativeData;\r\n readonly COMMAND_SETZOFFSETUNITS: NativeData;\r\n readonly COMMAND_SETDEPTHTEST: NativeData;\r\n readonly COMMAND_SETDEPTHWRITE: NativeData;\r\n readonly COMMAND_SETCOLORWRITE: NativeData;\r\n readonly COMMAND_SETBLENDMODE: NativeData;\r\n readonly COMMAND_SETFLOAT: NativeData;\r\n readonly COMMAND_SETFLOAT2: NativeData;\r\n readonly COMMAND_SETFLOAT3: NativeData;\r\n readonly COMMAND_SETFLOAT4: NativeData;\r\n readonly COMMAND_BINDFRAMEBUFFER: NativeData;\r\n readonly COMMAND_UNBINDFRAMEBUFFER: NativeData;\r\n readonly COMMAND_DELETEFRAMEBUFFER: NativeData;\r\n readonly COMMAND_DRAWINDEXED: NativeData;\r\n readonly COMMAND_DRAW: NativeData;\r\n readonly COMMAND_CLEAR: NativeData;\r\n readonly COMMAND_SETSTENCIL: NativeData;\r\n}\r\n\r\n/** @hidden */\r\nexport interface INativeCamera {\r\n createVideo(constraints: MediaTrackConstraints): any;\r\n updateVideoTexture(texture: Nullable<InternalTexture>, video: HTMLVideoElement, invertY: boolean): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeCameraConstructor {\r\n prototype: INativeCamera;\r\n new(): INativeCamera;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeCanvasConstructor {\r\n prototype: ICanvas;\r\n new(): ICanvas;\r\n\r\n loadTTFAsync(fontName: string, buffer: ArrayBuffer): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeImageConstructor {\r\n prototype: IImage;\r\n new(): IImage;\r\n}\r\n\r\n/** @hidden */\r\ninterface IDeviceInputSystemConstructor {\r\n prototype: INativeInput;\r\n new(): INativeInput;\r\n}\r\n\r\n/** @hidden */\r\nexport interface INativeDataStream {\r\n writeBuffer(buffer: ArrayBuffer, length: number): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeDataStreamConstructor {\r\n prototype: INativeDataStream;\r\n new(requestFlushCallback: () => void): INativeDataStream;\r\n\r\n readonly VALIDATION_ENABLED: boolean;\r\n readonly VALIDATION_UINT_32: number;\r\n readonly VALIDATION_INT_32: number;\r\n readonly VALIDATION_FLOAT_32: number;\r\n readonly VALIDATION_UINT_32_ARRAY: number;\r\n readonly VALIDATION_INT_32_ARRAY: number;\r\n readonly VALIDATION_FLOAT_32_ARRAY: number;\r\n readonly VALIDATION_NATIVE_DATA: number;\r\n readonly VALIDATION_BOOLEAN: number;\r\n}\r\n\r\n/** @hidden */\r\nexport interface INative {\r\n Engine: INativeEngineConstructor;\r\n Camera: INativeCameraConstructor;\r\n Canvas: INativeCanvasConstructor;\r\n Image: INativeImageConstructor;\r\n XMLHttpRequest: any; // TODO: how to do this?\r\n DeviceInputSystem: IDeviceInputSystemConstructor;\r\n NativeDataStream: INativeDataStreamConstructor;\r\n}\r\n"]}
1
+ {"version":3,"file":"nativeInterfaces.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Native/nativeInterfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { INativeInput } from \"../../DeviceInput/InputDevices/inputInterfaces\";\r\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { Nullable } from \"../../types\";\r\nimport { ICanvas, IImage } from \"../ICanvas\";\r\nimport { NativeData, NativeDataStream } from \"./nativeDataStream\";\r\n\r\n/** @hidden */\r\nexport interface INativeEngine {\r\n dispose(): void;\r\n\r\n requestAnimationFrame(callback: () => void): void;\r\n\r\n createVertexArray(): NativeData;\r\n\r\n createIndexBuffer(bytes: ArrayBuffer, byteOffset: number, byteLength: number, is32Bits: boolean, dynamic: boolean): NativeData;\r\n recordIndexBuffer(vertexArray: NativeData, indexBuffer: NativeData): void;\r\n updateDynamicIndexBuffer(buffer: NativeData, bytes: ArrayBuffer, byteOffset: number, byteLength: number, startIndex: number): void;\r\n\r\n createVertexBuffer(bytes: ArrayBuffer, byteOffset: number, byteLength: number, dynamic: boolean): NativeData;\r\n recordVertexBuffer(vertexArray: NativeData, vertexBuffer: NativeData, location: number, byteOffset: number, byteStride: number, numElements: number, type: number, normalized: boolean, instanceDivisor: number): void;\r\n updateDynamicVertexBuffer(vertexBuffer: NativeData, bytes: ArrayBuffer, byteOffset: number, byteLength: number): void;\r\n\r\n createProgram(vertexShader: string, fragmentShader: string): any;\r\n getUniforms(shaderProgram: any, uniformsNames: string[]): WebGLUniformLocation[];\r\n getAttributes(shaderProgram: any, attributeNames: string[]): number[];\r\n\r\n createTexture(): WebGLTexture;\r\n loadTexture(texture: WebGLTexture, data: ArrayBufferView, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;\r\n loadRawTexture(texture: WebGLTexture, data: ArrayBufferView, width: number, height: number, format: number, generateMips: boolean, invertY: boolean): void;\r\n loadRawTexture2DArray(texture: WebGLTexture, data: Nullable<ArrayBufferView>, width: number, height: number, depth: number, format: number, generateMipMaps: boolean, invertY: boolean): void;\r\n loadCubeTexture(texture: WebGLTexture, data: Array<ArrayBufferView>, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;\r\n loadCubeTextureWithMips(texture: WebGLTexture, data: Array<Array<ArrayBufferView>>, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;\r\n getTextureWidth(texture: WebGLTexture): number;\r\n getTextureHeight(texture: WebGLTexture): number;\r\n copyTexture(desination: Nullable<WebGLTexture>, source: Nullable<WebGLTexture>): void;\r\n deleteTexture(texture: Nullable<WebGLTexture>): void;\r\n\r\n createImageBitmap(data: ArrayBufferView): ImageBitmap;\r\n resizeImageBitmap(image: ImageBitmap, bufferWidth: number, bufferHeight: number): Uint8Array;\r\n\r\n createFrameBuffer(texture: WebGLTexture, width: number, height: number, format: number, generateStencilBuffer: boolean, generateDepthBuffer: boolean, generateMips: boolean): WebGLFramebuffer;\r\n\r\n getRenderWidth(): number;\r\n getRenderHeight(): number;\r\n getHardwareScalingLevel(): number;\r\n setHardwareScalingLevel(level: number): void;\r\n\r\n setViewPort(x: number, y: number, width: number, height: number): void;\r\n\r\n setCommandDataStream(dataStream: NativeDataStream): void;\r\n submitCommands(): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeEngineConstructor {\r\n prototype: INativeEngine;\r\n new(): INativeEngine;\r\n\r\n readonly PROTOCOL_VERSION: number;\r\n\r\n readonly TEXTURE_NEAREST_NEAREST: number;\r\n readonly TEXTURE_LINEAR_LINEAR: number;\r\n readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;\r\n readonly TEXTURE_NEAREST_NEAREST_MIPNEAREST: number;\r\n readonly TEXTURE_NEAREST_LINEAR_MIPNEAREST: number;\r\n readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;\r\n readonly TEXTURE_NEAREST_LINEAR: number;\r\n readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;\r\n readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;\r\n readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;\r\n readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;\r\n readonly TEXTURE_LINEAR_NEAREST: number;\r\n\r\n readonly DEPTH_TEST_LESS: number;\r\n readonly DEPTH_TEST_LEQUAL: number;\r\n readonly DEPTH_TEST_EQUAL: number;\r\n readonly DEPTH_TEST_GEQUAL: number;\r\n readonly DEPTH_TEST_GREATER: number;\r\n readonly DEPTH_TEST_NOTEQUAL: number;\r\n readonly DEPTH_TEST_NEVER: number;\r\n readonly DEPTH_TEST_ALWAYS: number;\r\n\r\n readonly ADDRESS_MODE_WRAP: number;\r\n readonly ADDRESS_MODE_MIRROR: number;\r\n readonly ADDRESS_MODE_CLAMP: number;\r\n readonly ADDRESS_MODE_BORDER: number;\r\n readonly ADDRESS_MODE_MIRROR_ONCE: number;\r\n\r\n readonly TEXTURE_FORMAT_RGB8: number;\r\n readonly TEXTURE_FORMAT_RGBA8: number;\r\n readonly TEXTURE_FORMAT_RGBA32F: number;\r\n\r\n readonly ATTRIB_TYPE_INT8: number;\r\n readonly ATTRIB_TYPE_UINT8: number;\r\n readonly ATTRIB_TYPE_INT16: number;\r\n readonly ATTRIB_TYPE_UINT16: number;\r\n readonly ATTRIB_TYPE_FLOAT: number;\r\n\r\n readonly ALPHA_DISABLE: number;\r\n readonly ALPHA_ADD: number;\r\n readonly ALPHA_COMBINE: number;\r\n readonly ALPHA_SUBTRACT: number;\r\n readonly ALPHA_MULTIPLY: number;\r\n readonly ALPHA_MAXIMIZED: number;\r\n readonly ALPHA_ONEONE: number;\r\n readonly ALPHA_PREMULTIPLIED: number;\r\n readonly ALPHA_PREMULTIPLIED_PORTERDUFF: number;\r\n readonly ALPHA_INTERPOLATE: number;\r\n readonly ALPHA_SCREENMODE: number;\r\n\r\n readonly STENCIL_TEST_LESS: number;\r\n readonly STENCIL_TEST_LEQUAL: number;\r\n readonly STENCIL_TEST_EQUAL: number;\r\n readonly STENCIL_TEST_GEQUAL: number;\r\n readonly STENCIL_TEST_GREATER: number;\r\n readonly STENCIL_TEST_NOTEQUAL: number;\r\n readonly STENCIL_TEST_NEVER: number;\r\n readonly STENCIL_TEST_ALWAYS: number;\r\n\r\n readonly STENCIL_OP_FAIL_S_ZERO: number;\r\n readonly STENCIL_OP_FAIL_S_KEEP: number;\r\n readonly STENCIL_OP_FAIL_S_REPLACE: number;\r\n readonly STENCIL_OP_FAIL_S_INCR: number;\r\n readonly STENCIL_OP_FAIL_S_INCRSAT: number;\r\n readonly STENCIL_OP_FAIL_S_DECR: number;\r\n readonly STENCIL_OP_FAIL_S_DECRSAT: number;\r\n readonly STENCIL_OP_FAIL_S_INVERT: number;\r\n\r\n readonly STENCIL_OP_FAIL_Z_ZERO: number;\r\n readonly STENCIL_OP_FAIL_Z_KEEP: number;\r\n readonly STENCIL_OP_FAIL_Z_REPLACE: number;\r\n readonly STENCIL_OP_FAIL_Z_INCR: number;\r\n readonly STENCIL_OP_FAIL_Z_INCRSAT: number;\r\n readonly STENCIL_OP_FAIL_Z_DECR: number;\r\n readonly STENCIL_OP_FAIL_Z_DECRSAT: number;\r\n readonly STENCIL_OP_FAIL_Z_INVERT: number;\r\n\r\n readonly STENCIL_OP_PASS_Z_ZERO: number;\r\n readonly STENCIL_OP_PASS_Z_KEEP: number;\r\n readonly STENCIL_OP_PASS_Z_REPLACE: number;\r\n readonly STENCIL_OP_PASS_Z_INCR: number;\r\n readonly STENCIL_OP_PASS_Z_INCRSAT: number;\r\n readonly STENCIL_OP_PASS_Z_DECR: number;\r\n readonly STENCIL_OP_PASS_Z_DECRSAT: number;\r\n readonly STENCIL_OP_PASS_Z_INVERT: number;\r\n\r\n readonly COMMAND_DELETEVERTEXARRAY: NativeData;\r\n readonly COMMAND_DELETEINDEXBUFFER: NativeData;\r\n readonly COMMAND_DELETEVERTEXBUFFER: NativeData;\r\n readonly COMMAND_SETPROGRAM: NativeData;\r\n readonly COMMAND_SETMATRIX: NativeData;\r\n readonly COMMAND_SETMATRIX3X3: NativeData;\r\n readonly COMMAND_SETMATRIX2X2: NativeData;\r\n readonly COMMAND_SETMATRICES: NativeData;\r\n readonly COMMAND_SETINT: NativeData;\r\n readonly COMMAND_SETINTARRAY: NativeData;\r\n readonly COMMAND_SETINTARRAY2: NativeData;\r\n readonly COMMAND_SETINTARRAY3: NativeData;\r\n readonly COMMAND_SETINTARRAY4: NativeData;\r\n readonly COMMAND_SETFLOATARRAY: NativeData;\r\n readonly COMMAND_SETFLOATARRAY2: NativeData;\r\n readonly COMMAND_SETFLOATARRAY3: NativeData;\r\n readonly COMMAND_SETFLOATARRAY4: NativeData;\r\n readonly COMMAND_SETTEXTURESAMPLING: NativeData;\r\n readonly COMMAND_SETTEXTUREWRAPMODE: NativeData;\r\n readonly COMMAND_SETTEXTUREANISOTROPICLEVEL: NativeData;\r\n readonly COMMAND_SETTEXTURE: NativeData;\r\n readonly COMMAND_BINDVERTEXARRAY: NativeData;\r\n readonly COMMAND_SETSTATE: NativeData;\r\n readonly COMMAND_DELETEPROGRAM: NativeData;\r\n readonly COMMAND_SETZOFFSET: NativeData;\r\n readonly COMMAND_SETZOFFSETUNITS: NativeData;\r\n readonly COMMAND_SETDEPTHTEST: NativeData;\r\n readonly COMMAND_SETDEPTHWRITE: NativeData;\r\n readonly COMMAND_SETCOLORWRITE: NativeData;\r\n readonly COMMAND_SETBLENDMODE: NativeData;\r\n readonly COMMAND_SETFLOAT: NativeData;\r\n readonly COMMAND_SETFLOAT2: NativeData;\r\n readonly COMMAND_SETFLOAT3: NativeData;\r\n readonly COMMAND_SETFLOAT4: NativeData;\r\n readonly COMMAND_BINDFRAMEBUFFER: NativeData;\r\n readonly COMMAND_UNBINDFRAMEBUFFER: NativeData;\r\n readonly COMMAND_DELETEFRAMEBUFFER: NativeData;\r\n readonly COMMAND_DRAWINDEXED: NativeData;\r\n readonly COMMAND_DRAW: NativeData;\r\n readonly COMMAND_CLEAR: NativeData;\r\n readonly COMMAND_SETSTENCIL: NativeData;\r\n}\r\n\r\n/** @hidden */\r\nexport interface INativeCamera {\r\n createVideo(constraints: MediaTrackConstraints): any;\r\n updateVideoTexture(texture: Nullable<InternalTexture>, video: HTMLVideoElement, invertY: boolean): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeCameraConstructor {\r\n prototype: INativeCamera;\r\n new(): INativeCamera;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeCanvasConstructor {\r\n prototype: ICanvas;\r\n new(): ICanvas;\r\n\r\n loadTTFAsync(fontName: string, buffer: ArrayBuffer): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeImageConstructor {\r\n prototype: IImage;\r\n new(): IImage;\r\n}\r\n\r\n/** @hidden */\r\ninterface IDeviceInputSystemConstructor {\r\n prototype: INativeInput;\r\n new(): INativeInput;\r\n}\r\n\r\n/** @hidden */\r\nexport interface INativeDataStream {\r\n writeBuffer(buffer: ArrayBuffer, length: number): void;\r\n}\r\n\r\n/** @hidden */\r\ninterface INativeDataStreamConstructor {\r\n prototype: INativeDataStream;\r\n new(requestFlushCallback: () => void): INativeDataStream;\r\n\r\n readonly VALIDATION_ENABLED: boolean;\r\n readonly VALIDATION_UINT_32: number;\r\n readonly VALIDATION_INT_32: number;\r\n readonly VALIDATION_FLOAT_32: number;\r\n readonly VALIDATION_UINT_32_ARRAY: number;\r\n readonly VALIDATION_INT_32_ARRAY: number;\r\n readonly VALIDATION_FLOAT_32_ARRAY: number;\r\n readonly VALIDATION_NATIVE_DATA: number;\r\n readonly VALIDATION_BOOLEAN: number;\r\n}\r\n\r\n/** @hidden */\r\nexport interface INative {\r\n Engine: INativeEngineConstructor;\r\n Camera: INativeCameraConstructor;\r\n Canvas: INativeCanvasConstructor;\r\n Image: INativeImageConstructor;\r\n XMLHttpRequest: any; // TODO: how to do this?\r\n DeviceInputSystem: IDeviceInputSystemConstructor;\r\n NativeDataStream: INativeDataStreamConstructor;\r\n}\r\n"]}
@@ -15,7 +15,7 @@ var ShaderDefineExpression = /** @class */ (function () {
15
15
  else {
16
16
  var v1 = stack[stack.length - 1], v2 = stack[stack.length - 2];
17
17
  stack.length -= 2;
18
- stack.push("(" + v2 + c + v1 + ")");
18
+ stack.push("(".concat(v2).concat(c).concat(v1, ")"));
19
19
  }
20
20
  }
21
21
  return stack[stack.length - 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"]}
@@ -60,7 +60,7 @@ WebGPUEngine.prototype.computeDispatch = function (effect, context, bindings, x,
60
60
  computePass.setBindGroup(i, bindGroup);
61
61
  }
62
62
  computePass.dispatch(x, y, z);
63
- computePass.endPass();
63
+ computePass.end();
64
64
  };
65
65
  WebGPUEngine.prototype.releaseComputeEffects = function () {
66
66
  for (var name_1 in this._compiledComputeEffects) {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.computeShader.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Engines/WebGPU/Extensions/engine.computeShader.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComputeEffect, IComputeEffectCreationOptions } from \"../../../Compute/computeEffect\";\r\nimport { IComputeContext } from \"../../../Compute/IComputeContext\";\r\nimport { IComputePipelineContext } from \"../../../Compute/IComputePipelineContext\";\r\nimport { Nullable } from \"../../../types\";\r\nimport { ComputeBindingList, ComputeBindingMapping } from \"../../Extensions/engine.computeShader\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\nimport { WebGPUComputeContext } from \"../webgpuComputeContext\";\r\nimport { WebGPUComputePipelineContext } from \"../webgpuComputePipelineContext\";\r\n\r\ndeclare module \"../../webgpuEngine\" {\r\n export interface WebGPUEngine {\r\n /** @hidden */\r\n _createComputePipelineStageDescriptor(computeShader: string, defines: Nullable<string>, entryPoint: string): GPUProgrammableStage;\r\n }\r\n}\r\n\r\nWebGPUEngine.prototype.createComputeContext = function (): IComputeContext | undefined {\r\n return new WebGPUComputeContext(this._device, this._cacheSampler);\r\n};\r\n\r\nWebGPUEngine.prototype.createComputeEffect = function (baseName: any, options: IComputeEffectCreationOptions): ComputeEffect {\r\n const compute = baseName.computeElement || baseName.compute || baseName.computeToken || baseName.computeSource || baseName;\r\n\r\n const name = compute + \"@\" + options.defines;\r\n if (this._compiledComputeEffects[name]) {\r\n var compiledEffect = <ComputeEffect>this._compiledComputeEffects[name];\r\n if (options.onCompiled && compiledEffect.isReady()) {\r\n options.onCompiled(compiledEffect);\r\n }\r\n\r\n return compiledEffect;\r\n }\r\n const effect = new ComputeEffect(baseName, options, this, name);\r\n this._compiledComputeEffects[name] = effect;\r\n\r\n return effect;\r\n};\r\n\r\nWebGPUEngine.prototype.createComputePipelineContext = function (): IComputePipelineContext {\r\n return new WebGPUComputePipelineContext(this);\r\n};\r\n\r\nWebGPUEngine.prototype.areAllComputeEffectsReady = function (): boolean {\r\n for (const key in this._compiledComputeEffects) {\r\n const effect = this._compiledComputeEffects[key];\r\n\r\n if (!effect.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nWebGPUEngine.prototype.computeDispatch = function (effect: ComputeEffect, context: IComputeContext, bindings: ComputeBindingList, x: number, y?: number, z?: number, bindingsMapping?: ComputeBindingMapping): void {\r\n if (this._currentRenderTarget) {\r\n // A render target pass is currently in effect (meaning beingRenderPass has been called on the command encoder this._renderTargetEncoder): we are not allowed to open\r\n // another pass on this command encoder (even if it's a compute pass) until endPass has been called, so we need to defer the compute pass for after the current render target pass is closed\r\n this._onAfterUnbindFrameBufferObservable.addOnce(() => {\r\n this.computeDispatch(effect, context, bindings, x, y, z, bindingsMapping);\r\n });\r\n return;\r\n }\r\n\r\n const contextPipeline = effect._pipelineContext as WebGPUComputePipelineContext;\r\n const computeContext = context as WebGPUComputeContext;\r\n\r\n if (!contextPipeline.computePipeline) {\r\n contextPipeline.computePipeline = this._device.createComputePipeline({\r\n compute: contextPipeline.stage!\r\n });\r\n }\r\n\r\n const commandEncoder = this._renderTargetEncoder;\r\n const computePass = commandEncoder.beginComputePass();\r\n\r\n computePass.setPipeline(contextPipeline.computePipeline);\r\n\r\n const bindGroups = computeContext.getBindGroups(bindings, contextPipeline.computePipeline, bindingsMapping);\r\n for (let i = 0; i < bindGroups.length; ++i) {\r\n const bindGroup = bindGroups[i];\r\n if (!bindGroup) {\r\n continue;\r\n }\r\n computePass.setBindGroup(i, bindGroup);\r\n }\r\n\r\n computePass.dispatch(x, y, z);\r\n computePass.endPass();\r\n};\r\n\r\nWebGPUEngine.prototype.releaseComputeEffects = function () {\r\n for (const name in this._compiledComputeEffects) {\r\n const webGPUPipelineContextCompute = this._compiledComputeEffects[name].getPipelineContext() as WebGPUComputePipelineContext;\r\n this._deleteComputePipelineContext(webGPUPipelineContextCompute);\r\n }\r\n\r\n this._compiledComputeEffects = {};\r\n};\r\n\r\nWebGPUEngine.prototype._prepareComputePipelineContext = function (pipelineContext: IComputePipelineContext, computeSourceCode: string, rawComputeSourceCode: string, defines: Nullable<string>, entryPoint: string): void {\r\n const webGpuContext = pipelineContext as WebGPUComputePipelineContext;\r\n\r\n if (this.dbgShowShaderCode) {\r\n console.log(defines);\r\n console.log(computeSourceCode);\r\n }\r\n\r\n webGpuContext.sources = {\r\n compute: computeSourceCode,\r\n rawCompute: rawComputeSourceCode,\r\n };\r\n\r\n webGpuContext.stage = this._createComputePipelineStageDescriptor(computeSourceCode, defines, entryPoint);\r\n};\r\n\r\nWebGPUEngine.prototype._releaseComputeEffect = function (effect: ComputeEffect): void {\r\n if (this._compiledComputeEffects[effect._key]) {\r\n delete this._compiledComputeEffects[effect._key];\r\n\r\n this._deleteComputePipelineContext(effect.getPipelineContext() as WebGPUComputePipelineContext);\r\n }\r\n};\r\n\r\nWebGPUEngine.prototype._rebuildComputeEffects = function (): void {\r\n for (const key in this._compiledComputeEffects) {\r\n const effect = this._compiledComputeEffects[key];\r\n\r\n effect._pipelineContext = null;\r\n effect._wasPreviouslyReady = false;\r\n effect._prepareEffect();\r\n }\r\n};\r\n\r\nWebGPUEngine.prototype._deleteComputePipelineContext = function (pipelineContext: IComputePipelineContext): void {\r\n const webgpuPipelineContext = pipelineContext as WebGPUComputePipelineContext;\r\n if (webgpuPipelineContext) {\r\n pipelineContext.dispose();\r\n }\r\n};\r\n\r\nWebGPUEngine.prototype._createComputePipelineStageDescriptor = function (computeShader: string, defines: Nullable<string>, entryPoint: string): GPUProgrammableStage {\r\n if (defines) {\r\n defines = \"//\" + defines.split(\"\\n\").join(\"\\n//\") + \"\\n\";\r\n } else {\r\n defines = \"\";\r\n }\r\n return {\r\n module: this._device.createShaderModule({\r\n code: defines + computeShader,\r\n }),\r\n entryPoint\r\n };\r\n};\r\n"]}
1
+ {"version":3,"file":"engine.computeShader.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Engines/WebGPU/Extensions/engine.computeShader.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComputeEffect, IComputeEffectCreationOptions } from \"../../../Compute/computeEffect\";\r\nimport { IComputeContext } from \"../../../Compute/IComputeContext\";\r\nimport { IComputePipelineContext } from \"../../../Compute/IComputePipelineContext\";\r\nimport { Nullable } from \"../../../types\";\r\nimport { ComputeBindingList, ComputeBindingMapping } from \"../../Extensions/engine.computeShader\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\nimport { WebGPUComputeContext } from \"../webgpuComputeContext\";\r\nimport { WebGPUComputePipelineContext } from \"../webgpuComputePipelineContext\";\r\n\r\ndeclare module \"../../webgpuEngine\" {\r\n export interface WebGPUEngine {\r\n /** @hidden */\r\n _createComputePipelineStageDescriptor(computeShader: string, defines: Nullable<string>, entryPoint: string): GPUProgrammableStage;\r\n }\r\n}\r\n\r\nWebGPUEngine.prototype.createComputeContext = function (): IComputeContext | undefined {\r\n return new WebGPUComputeContext(this._device, this._cacheSampler);\r\n};\r\n\r\nWebGPUEngine.prototype.createComputeEffect = function (baseName: any, options: IComputeEffectCreationOptions): ComputeEffect {\r\n const compute = baseName.computeElement || baseName.compute || baseName.computeToken || baseName.computeSource || baseName;\r\n\r\n const name = compute + \"@\" + options.defines;\r\n if (this._compiledComputeEffects[name]) {\r\n var compiledEffect = <ComputeEffect>this._compiledComputeEffects[name];\r\n if (options.onCompiled && compiledEffect.isReady()) {\r\n options.onCompiled(compiledEffect);\r\n }\r\n\r\n return compiledEffect;\r\n }\r\n const effect = new ComputeEffect(baseName, options, this, name);\r\n this._compiledComputeEffects[name] = effect;\r\n\r\n return effect;\r\n};\r\n\r\nWebGPUEngine.prototype.createComputePipelineContext = function (): IComputePipelineContext {\r\n return new WebGPUComputePipelineContext(this);\r\n};\r\n\r\nWebGPUEngine.prototype.areAllComputeEffectsReady = function (): boolean {\r\n for (const key in this._compiledComputeEffects) {\r\n const effect = this._compiledComputeEffects[key];\r\n\r\n if (!effect.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nWebGPUEngine.prototype.computeDispatch = function (effect: ComputeEffect, context: IComputeContext, bindings: ComputeBindingList, x: number, y?: number, z?: number, bindingsMapping?: ComputeBindingMapping): void {\r\n if (this._currentRenderTarget) {\r\n // A render target pass is currently in effect (meaning beingRenderPass has been called on the command encoder this._renderTargetEncoder): we are not allowed to open\r\n // another pass on this command encoder (even if it's a compute pass) until endPass has been called, so we need to defer the compute pass for after the current render target pass is closed\r\n this._onAfterUnbindFrameBufferObservable.addOnce(() => {\r\n this.computeDispatch(effect, context, bindings, x, y, z, bindingsMapping);\r\n });\r\n return;\r\n }\r\n\r\n const contextPipeline = effect._pipelineContext as WebGPUComputePipelineContext;\r\n const computeContext = context as WebGPUComputeContext;\r\n\r\n if (!contextPipeline.computePipeline) {\r\n contextPipeline.computePipeline = this._device.createComputePipeline({\r\n compute: contextPipeline.stage!\r\n });\r\n }\r\n\r\n const commandEncoder = this._renderTargetEncoder;\r\n const computePass = commandEncoder.beginComputePass();\r\n\r\n computePass.setPipeline(contextPipeline.computePipeline);\r\n\r\n const bindGroups = computeContext.getBindGroups(bindings, contextPipeline.computePipeline, bindingsMapping);\r\n for (let i = 0; i < bindGroups.length; ++i) {\r\n const bindGroup = bindGroups[i];\r\n if (!bindGroup) {\r\n continue;\r\n }\r\n computePass.setBindGroup(i, bindGroup);\r\n }\r\n\r\n computePass.dispatch(x, y, z);\r\n computePass.end();\r\n};\r\n\r\nWebGPUEngine.prototype.releaseComputeEffects = function () {\r\n for (const name in this._compiledComputeEffects) {\r\n const webGPUPipelineContextCompute = this._compiledComputeEffects[name].getPipelineContext() as WebGPUComputePipelineContext;\r\n this._deleteComputePipelineContext(webGPUPipelineContextCompute);\r\n }\r\n\r\n this._compiledComputeEffects = {};\r\n};\r\n\r\nWebGPUEngine.prototype._prepareComputePipelineContext = function (pipelineContext: IComputePipelineContext, computeSourceCode: string, rawComputeSourceCode: string, defines: Nullable<string>, entryPoint: string): void {\r\n const webGpuContext = pipelineContext as WebGPUComputePipelineContext;\r\n\r\n if (this.dbgShowShaderCode) {\r\n console.log(defines);\r\n console.log(computeSourceCode);\r\n }\r\n\r\n webGpuContext.sources = {\r\n compute: computeSourceCode,\r\n rawCompute: rawComputeSourceCode,\r\n };\r\n\r\n webGpuContext.stage = this._createComputePipelineStageDescriptor(computeSourceCode, defines, entryPoint);\r\n};\r\n\r\nWebGPUEngine.prototype._releaseComputeEffect = function (effect: ComputeEffect): void {\r\n if (this._compiledComputeEffects[effect._key]) {\r\n delete this._compiledComputeEffects[effect._key];\r\n\r\n this._deleteComputePipelineContext(effect.getPipelineContext() as WebGPUComputePipelineContext);\r\n }\r\n};\r\n\r\nWebGPUEngine.prototype._rebuildComputeEffects = function (): void {\r\n for (const key in this._compiledComputeEffects) {\r\n const effect = this._compiledComputeEffects[key];\r\n\r\n effect._pipelineContext = null;\r\n effect._wasPreviouslyReady = false;\r\n effect._prepareEffect();\r\n }\r\n};\r\n\r\nWebGPUEngine.prototype._deleteComputePipelineContext = function (pipelineContext: IComputePipelineContext): void {\r\n const webgpuPipelineContext = pipelineContext as WebGPUComputePipelineContext;\r\n if (webgpuPipelineContext) {\r\n pipelineContext.dispose();\r\n }\r\n};\r\n\r\nWebGPUEngine.prototype._createComputePipelineStageDescriptor = function (computeShader: string, defines: Nullable<string>, entryPoint: string): GPUProgrammableStage {\r\n if (defines) {\r\n defines = \"//\" + defines.split(\"\\n\").join(\"\\n//\") + \"\\n\";\r\n } else {\r\n defines = \"\";\r\n }\r\n return {\r\n module: this._device.createShaderModule({\r\n code: defines + computeShader,\r\n }),\r\n entryPoint\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"]}