@babylonjs/core 6.39.0 → 6.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (692) hide show
  1. package/Actions/action.js +3 -1
  2. package/Actions/action.js.map +1 -1
  3. package/Actions/condition.js +1 -0
  4. package/Actions/condition.js.map +1 -1
  5. package/Actions/directActions.d.ts +2 -2
  6. package/Actions/directActions.js +2 -2
  7. package/Actions/directActions.js.map +1 -1
  8. package/Animations/pathCursor.js +1 -0
  9. package/Animations/pathCursor.js.map +1 -1
  10. package/Animations/runtimeAnimation.js +3 -3
  11. package/Animations/runtimeAnimation.js.map +1 -1
  12. package/Audio/audioEngine.js +5 -0
  13. package/Audio/audioEngine.js.map +1 -1
  14. package/Behaviors/Cameras/autoRotationBehavior.d.ts +3 -0
  15. package/Behaviors/Cameras/autoRotationBehavior.js +3 -0
  16. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  17. package/Behaviors/Meshes/pointerDragBehavior.d.ts +1 -0
  18. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  19. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  20. package/Bones/bone.d.ts +2 -0
  21. package/Bones/bone.js +2 -0
  22. package/Bones/bone.js.map +1 -1
  23. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -2
  24. package/Cameras/Inputs/BaseCameraPointersInput.js +2 -2
  25. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  26. package/Cameras/Inputs/arcRotateCameraPointersInput.d.ts +9 -9
  27. package/Cameras/Inputs/arcRotateCameraPointersInput.js +9 -9
  28. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  29. package/Cameras/Inputs/followCameraKeyboardMoveInput.d.ts +3 -0
  30. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +3 -0
  31. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  32. package/Cameras/arcRotateCamera.d.ts +2 -0
  33. package/Cameras/arcRotateCamera.js +2 -0
  34. package/Cameras/arcRotateCamera.js.map +1 -1
  35. package/Cameras/camera.d.ts +2 -0
  36. package/Cameras/camera.js +4 -0
  37. package/Cameras/camera.js.map +1 -1
  38. package/Cameras/followCamera.d.ts +1 -0
  39. package/Cameras/followCamera.js +1 -0
  40. package/Cameras/followCamera.js.map +1 -1
  41. package/Debug/debugLayer.d.ts +4 -1
  42. package/Debug/debugLayer.js +4 -1
  43. package/Debug/debugLayer.js.map +1 -1
  44. package/Debug/physicsViewer.d.ts +1 -0
  45. package/Debug/physicsViewer.js +3 -2
  46. package/Debug/physicsViewer.js.map +1 -1
  47. package/Decorators/nodeDecorator.d.ts +5 -4
  48. package/Decorators/nodeDecorator.js +5 -4
  49. package/Decorators/nodeDecorator.js.map +1 -1
  50. package/DeviceInput/eventFactory.d.ts +2 -0
  51. package/DeviceInput/eventFactory.js +3 -0
  52. package/DeviceInput/eventFactory.js.map +1 -1
  53. package/DeviceInput/webDeviceInputSystem.js +3 -0
  54. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  55. package/Engines/Extensions/engine.multiview.js +2 -0
  56. package/Engines/Extensions/engine.multiview.js.map +1 -1
  57. package/Engines/Native/nativeDataStream.d.ts +32 -0
  58. package/Engines/Native/nativeDataStream.js +32 -0
  59. package/Engines/Native/nativeDataStream.js.map +1 -1
  60. package/Engines/Native/nativePipelineContext.d.ts +0 -3
  61. package/Engines/Native/nativePipelineContext.js +0 -3
  62. package/Engines/Native/nativePipelineContext.js.map +1 -1
  63. package/Engines/WebGL/webGLPipelineContext.d.ts +0 -3
  64. package/Engines/WebGL/webGLPipelineContext.js +0 -3
  65. package/Engines/WebGL/webGLPipelineContext.js.map +1 -1
  66. package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -0
  67. package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
  68. package/Engines/WebGPU/webgpuCacheBindGroups.d.ts +1 -0
  69. package/Engines/WebGPU/webgpuCacheBindGroups.js +1 -0
  70. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  71. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -0
  72. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  73. package/Engines/WebGPU/webgpuPipelineContext.d.ts +0 -3
  74. package/Engines/WebGPU/webgpuPipelineContext.js +0 -3
  75. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  76. package/Engines/WebGPU/webgpuShaderProcessingContext.js +1 -0
  77. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  78. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +1 -1
  79. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +11 -2
  80. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  81. package/Engines/WebGPU/webgpuTextureHelper.js +22 -0
  82. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  83. package/Engines/WebGPU/webgpuTextureManager.js +2 -1
  84. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  85. package/Engines/engine.js +1 -0
  86. package/Engines/engine.js.map +1 -1
  87. package/Engines/nativeEngine.d.ts +4 -0
  88. package/Engines/nativeEngine.js +5 -0
  89. package/Engines/nativeEngine.js.map +1 -1
  90. package/Engines/thinEngine.js +7 -3
  91. package/Engines/thinEngine.js.map +1 -1
  92. package/Engines/webgpuEngine.d.ts +1 -1
  93. package/Engines/webgpuEngine.js +17 -1
  94. package/Engines/webgpuEngine.js.map +1 -1
  95. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.d.ts +207 -2
  96. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js +207 -6
  97. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js.map +1 -1
  98. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.d.ts +15 -0
  99. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js +9 -0
  100. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  101. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.d.ts +4 -0
  102. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js +4 -0
  103. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js.map +1 -1
  104. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.d.ts +17 -1
  105. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js +14 -1
  106. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  107. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.d.ts +9 -0
  108. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js +9 -0
  109. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  110. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.d.ts +5 -0
  111. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js +5 -0
  112. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js.map +1 -1
  113. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.d.ts +16 -1
  114. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js +13 -1
  115. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -1
  116. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.d.ts +12 -1
  117. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js +12 -1
  118. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  119. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.d.ts +18 -0
  120. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js +9 -0
  121. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -1
  122. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.d.ts +12 -0
  123. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js +9 -0
  124. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  125. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.d.ts +15 -1
  126. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js +12 -1
  127. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -1
  128. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.d.ts +18 -2
  129. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +15 -4
  130. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  131. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +6 -0
  132. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +6 -0
  133. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  134. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.d.ts +6 -0
  135. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js +6 -0
  136. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  137. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.d.ts +5 -2
  138. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js +4 -1
  139. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  140. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +15 -1
  141. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +12 -1
  142. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  143. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.d.ts +4 -1
  144. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js +3 -0
  145. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  146. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.d.ts +3 -0
  147. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js +3 -0
  148. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js.map +1 -1
  149. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.d.ts +3 -0
  150. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js +3 -0
  151. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  152. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.d.ts +3 -0
  153. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js +3 -0
  154. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  155. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +14 -1
  156. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +11 -1
  157. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  158. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.d.ts +3 -0
  159. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js +3 -0
  160. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js.map +1 -1
  161. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.d.ts +3 -0
  162. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js +3 -0
  163. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  164. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.d.ts +15 -2
  165. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js +12 -4
  166. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js.map +1 -1
  167. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.d.ts +14 -2
  168. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js +11 -4
  169. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -1
  170. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.d.ts +15 -2
  171. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js +12 -4
  172. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js.map +1 -1
  173. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.d.ts +3 -0
  174. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +3 -0
  175. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  176. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.d.ts +6 -0
  177. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js +6 -0
  178. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  179. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.d.ts +15 -2
  180. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js +12 -3
  181. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  182. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.d.ts +18 -1
  183. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js +15 -1
  184. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  185. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.d.ts +6 -0
  186. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +6 -0
  187. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  188. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.d.ts +14 -2
  189. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js +11 -4
  190. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  191. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.d.ts +15 -1
  192. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +12 -1
  193. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  194. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +14 -1
  195. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +11 -1
  196. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  197. package/FlowGraph/flowGraph.d.ts +16 -8
  198. package/FlowGraph/flowGraph.js +13 -8
  199. package/FlowGraph/flowGraph.js.map +1 -1
  200. package/FlowGraph/flowGraphBlock.d.ts +54 -5
  201. package/FlowGraph/flowGraphBlock.js +50 -11
  202. package/FlowGraph/flowGraphBlock.js.map +1 -1
  203. package/FlowGraph/flowGraphConnection.d.ts +10 -6
  204. package/FlowGraph/flowGraphConnection.js +10 -6
  205. package/FlowGraph/flowGraphConnection.js.map +1 -1
  206. package/FlowGraph/flowGraphContext.d.ts +10 -8
  207. package/FlowGraph/flowGraphContext.js +10 -8
  208. package/FlowGraph/flowGraphContext.js.map +1 -1
  209. package/FlowGraph/flowGraphCoordinator.d.ts +27 -1
  210. package/FlowGraph/flowGraphCoordinator.js +18 -2
  211. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  212. package/FlowGraph/flowGraphDataConnection.d.ts +26 -1
  213. package/FlowGraph/flowGraphDataConnection.js +23 -1
  214. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  215. package/FlowGraph/flowGraphExecutionBlock.d.ts +27 -1
  216. package/FlowGraph/flowGraphExecutionBlock.js +22 -4
  217. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  218. package/FlowGraph/flowGraphRichTypes.d.ts +24 -1
  219. package/FlowGraph/flowGraphRichTypes.js +18 -1
  220. package/FlowGraph/flowGraphRichTypes.js.map +1 -1
  221. package/FlowGraph/flowGraphSignalConnection.d.ts +2 -0
  222. package/FlowGraph/flowGraphSignalConnection.js +2 -0
  223. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  224. package/Gamepads/gamepad.d.ts +2 -2
  225. package/Gamepads/gamepad.js +2 -2
  226. package/Gamepads/gamepad.js.map +1 -1
  227. package/Gamepads/gamepadSceneComponent.js +2 -0
  228. package/Gamepads/gamepadSceneComponent.js.map +1 -1
  229. package/Gizmos/axisScaleGizmo.d.ts +2 -0
  230. package/Gizmos/axisScaleGizmo.js +2 -0
  231. package/Gizmos/axisScaleGizmo.js.map +1 -1
  232. package/Gizmos/boundingBoxGizmo.d.ts +19 -0
  233. package/Gizmos/boundingBoxGizmo.js +36 -15
  234. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  235. package/Gizmos/cameraGizmo.js +1 -0
  236. package/Gizmos/cameraGizmo.js.map +1 -1
  237. package/Gizmos/gizmo.js +1 -0
  238. package/Gizmos/gizmo.js.map +1 -1
  239. package/Gizmos/gizmoManager.d.ts +18 -0
  240. package/Gizmos/gizmoManager.js +34 -0
  241. package/Gizmos/gizmoManager.js.map +1 -1
  242. package/Gizmos/lightGizmo.d.ts +1 -0
  243. package/Gizmos/lightGizmo.js +1 -0
  244. package/Gizmos/lightGizmo.js.map +1 -1
  245. package/Gizmos/planeRotationGizmo.d.ts +2 -0
  246. package/Gizmos/planeRotationGizmo.js +2 -0
  247. package/Gizmos/planeRotationGizmo.js.map +1 -1
  248. package/Gizmos/positionGizmo.d.ts +11 -0
  249. package/Gizmos/positionGizmo.js +19 -0
  250. package/Gizmos/positionGizmo.js.map +1 -1
  251. package/Gizmos/rotationGizmo.d.ts +14 -0
  252. package/Gizmos/rotationGizmo.js +14 -0
  253. package/Gizmos/rotationGizmo.js.map +1 -1
  254. package/Gizmos/scaleGizmo.d.ts +18 -1
  255. package/Gizmos/scaleGizmo.js +19 -1
  256. package/Gizmos/scaleGizmo.js.map +1 -1
  257. package/Helpers/environmentHelper.d.ts +4 -2
  258. package/Helpers/environmentHelper.js +4 -2
  259. package/Helpers/environmentHelper.js.map +1 -1
  260. package/Layers/effectLayer.d.ts +1 -0
  261. package/Layers/effectLayer.js +1 -0
  262. package/Layers/effectLayer.js.map +1 -1
  263. package/Layers/glowLayer.d.ts +3 -1
  264. package/Layers/glowLayer.js +3 -1
  265. package/Layers/glowLayer.js.map +1 -1
  266. package/Layers/highlightLayer.d.ts +3 -2
  267. package/Layers/highlightLayer.js +3 -2
  268. package/Layers/highlightLayer.js.map +1 -1
  269. package/Lights/light.d.ts +1 -1
  270. package/Lights/light.js +1 -1
  271. package/Lights/light.js.map +1 -1
  272. package/Loading/sceneLoader.js +4 -0
  273. package/Loading/sceneLoader.js.map +1 -1
  274. package/Materials/Background/backgroundMaterial.d.ts +2 -2
  275. package/Materials/Background/backgroundMaterial.js +10 -9
  276. package/Materials/Background/backgroundMaterial.js.map +1 -1
  277. package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +72 -0
  278. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +231 -0
  279. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -0
  280. package/Materials/GreasedLine/greasedLinePluginMaterial.d.ts +0 -1
  281. package/Materials/GreasedLine/greasedLinePluginMaterial.js +0 -1
  282. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  283. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +0 -1
  284. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +0 -1
  285. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  286. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +2 -1
  287. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +1 -1
  288. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -0
  290. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -0
  292. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -0
  294. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +3 -1
  296. package/Materials/Node/Blocks/Teleport/teleportInBlock.js +3 -1
  297. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  298. package/Materials/Node/Blocks/triPlanarBlock.d.ts +1 -0
  299. package/Materials/Node/Blocks/triPlanarBlock.js +1 -0
  300. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +2 -0
  302. package/Materials/Node/Blocks/worleyNoise3DBlock.js +2 -0
  303. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  304. package/Materials/Node/nodeMaterial.d.ts +10 -3
  305. package/Materials/Node/nodeMaterial.js +23 -15
  306. package/Materials/Node/nodeMaterial.js.map +1 -1
  307. package/Materials/Node/nodeMaterialBlock.d.ts +3 -1
  308. package/Materials/Node/nodeMaterialBlock.js +4 -1
  309. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  310. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -0
  311. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  312. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -0
  313. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  314. package/Materials/PBR/pbrBaseMaterial.d.ts +7 -6
  315. package/Materials/PBR/pbrBaseMaterial.js +15 -13
  316. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  317. package/Materials/PBR/pbrMaterial.d.ts +2 -1
  318. package/Materials/PBR/pbrMaterial.js +2 -1
  319. package/Materials/PBR/pbrMaterial.js.map +1 -1
  320. package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +4 -1
  321. package/Materials/PBR/pbrMetallicRoughnessMaterial.js +4 -1
  322. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  323. package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +4 -1
  324. package/Materials/PBR/pbrSpecularGlossinessMaterial.js +4 -1
  325. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  326. package/Materials/Textures/Loaders/envTextureLoader.js +1 -0
  327. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  328. package/Materials/Textures/Loaders/hdrTextureLoader.js +1 -0
  329. package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
  330. package/Materials/Textures/Loaders/tgaTextureLoader.js +1 -0
  331. package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
  332. package/Materials/Textures/Packer/packer.d.ts +0 -1
  333. package/Materials/Textures/Packer/packer.js +0 -1
  334. package/Materials/Textures/Packer/packer.js.map +1 -1
  335. package/Materials/Textures/colorGradingTexture.d.ts +4 -1
  336. package/Materials/Textures/colorGradingTexture.js +4 -1
  337. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  338. package/Materials/Textures/equiRectangularCubeTexture.d.ts +1 -0
  339. package/Materials/Textures/equiRectangularCubeTexture.js +1 -0
  340. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  341. package/Materials/Textures/hdrCubeTexture.d.ts +3 -2
  342. package/Materials/Textures/hdrCubeTexture.js +3 -2
  343. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  344. package/Materials/Textures/htmlElementTexture.d.ts +1 -1
  345. package/Materials/Textures/htmlElementTexture.js +1 -1
  346. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  347. package/Materials/drawWrapper.d.ts +15 -0
  348. package/Materials/drawWrapper.js +15 -0
  349. package/Materials/drawWrapper.js.map +1 -1
  350. package/Materials/effect.d.ts +0 -16
  351. package/Materials/effect.js +0 -16
  352. package/Materials/effect.js.map +1 -1
  353. package/Materials/effectRenderer.js +0 -1
  354. package/Materials/effectRenderer.js.map +1 -1
  355. package/Materials/index.d.ts +1 -0
  356. package/Materials/index.js +1 -0
  357. package/Materials/index.js.map +1 -1
  358. package/Materials/material.d.ts +4 -2
  359. package/Materials/material.decalMapConfiguration.d.ts +0 -5
  360. package/Materials/material.decalMapConfiguration.js +5 -5
  361. package/Materials/material.decalMapConfiguration.js.map +1 -1
  362. package/Materials/material.js +15 -12
  363. package/Materials/material.js.map +1 -1
  364. package/Materials/materialHelper.d.ts +1 -1
  365. package/Materials/materialHelper.js +4 -3
  366. package/Materials/materialHelper.js.map +1 -1
  367. package/Materials/materialPluginManager.js +1 -0
  368. package/Materials/materialPluginManager.js.map +1 -1
  369. package/Materials/pushMaterial.d.ts +2 -2
  370. package/Materials/pushMaterial.js +9 -6
  371. package/Materials/pushMaterial.js.map +1 -1
  372. package/Materials/shaderMaterial.js +10 -16
  373. package/Materials/shaderMaterial.js.map +1 -1
  374. package/Materials/standardMaterial.d.ts +2 -2
  375. package/Materials/standardMaterial.js +10 -9
  376. package/Materials/standardMaterial.js.map +1 -1
  377. package/Materials/uniformBuffer.js +2 -1
  378. package/Materials/uniformBuffer.js.map +1 -1
  379. package/Maths/math.path.d.ts +2 -1
  380. package/Maths/math.path.js +2 -1
  381. package/Maths/math.path.js.map +1 -1
  382. package/Maths/math.vector.d.ts +11 -4
  383. package/Maths/math.vector.js +11 -4
  384. package/Maths/math.vector.js.map +1 -1
  385. package/Meshes/Builders/boxBuilder.d.ts +0 -33
  386. package/Meshes/Builders/boxBuilder.js +0 -33
  387. package/Meshes/Builders/boxBuilder.js.map +1 -1
  388. package/Meshes/Builders/cylinderBuilder.d.ts +0 -31
  389. package/Meshes/Builders/cylinderBuilder.js +0 -31
  390. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  391. package/Meshes/Builders/decalBuilder.d.ts +0 -7
  392. package/Meshes/Builders/decalBuilder.js +0 -7
  393. package/Meshes/Builders/decalBuilder.js.map +1 -1
  394. package/Meshes/Builders/discBuilder.d.ts +0 -13
  395. package/Meshes/Builders/discBuilder.js +0 -13
  396. package/Meshes/Builders/discBuilder.js.map +1 -1
  397. package/Meshes/Builders/geodesicBuilder.d.ts +0 -13
  398. package/Meshes/Builders/geodesicBuilder.js +0 -13
  399. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  400. package/Meshes/Builders/hemisphereBuilder.d.ts +0 -3
  401. package/Meshes/Builders/hemisphereBuilder.js +1 -3
  402. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  403. package/Meshes/Builders/icoSphereBuilder.d.ts +0 -19
  404. package/Meshes/Builders/icoSphereBuilder.js +0 -19
  405. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  406. package/Meshes/Builders/latheBuilder.d.ts +0 -12
  407. package/Meshes/Builders/latheBuilder.js +0 -12
  408. package/Meshes/Builders/latheBuilder.js.map +1 -1
  409. package/Meshes/Builders/linesBuilder.d.ts +0 -26
  410. package/Meshes/Builders/linesBuilder.js +0 -26
  411. package/Meshes/Builders/linesBuilder.js.map +1 -1
  412. package/Meshes/Builders/planeBuilder.d.ts +0 -14
  413. package/Meshes/Builders/planeBuilder.js +0 -14
  414. package/Meshes/Builders/planeBuilder.js.map +1 -1
  415. package/Meshes/Builders/polygonBuilder.d.ts +0 -21
  416. package/Meshes/Builders/polygonBuilder.js +0 -21
  417. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  418. package/Meshes/Builders/polyhedronBuilder.d.ts +0 -25
  419. package/Meshes/Builders/polyhedronBuilder.js +0 -25
  420. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  421. package/Meshes/Builders/ribbonBuilder.d.ts +0 -22
  422. package/Meshes/Builders/ribbonBuilder.js +0 -22
  423. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  424. package/Meshes/Builders/shapeBuilder.d.ts +0 -32
  425. package/Meshes/Builders/shapeBuilder.js +0 -32
  426. package/Meshes/Builders/shapeBuilder.js.map +1 -1
  427. package/Meshes/Builders/sphereBuilder.d.ts +0 -22
  428. package/Meshes/Builders/sphereBuilder.js +0 -22
  429. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  430. package/Meshes/Builders/textBuilder.d.ts +26 -5
  431. package/Meshes/Builders/textBuilder.js +26 -5
  432. package/Meshes/Builders/textBuilder.js.map +1 -1
  433. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +84 -0
  434. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +288 -0
  435. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -0
  436. package/Meshes/GreasedLine/greasedLineRibbonMesh.js +7 -0
  437. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  438. package/Meshes/Node/Blocks/geometryCurveBlock.d.ts +92 -0
  439. package/Meshes/Node/Blocks/geometryCurveBlock.js +292 -0
  440. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -0
  441. package/Meshes/Node/Blocks/geometryDesaturateBlock.d.ts +30 -0
  442. package/Meshes/Node/Blocks/geometryDesaturateBlock.js +62 -0
  443. package/Meshes/Node/Blocks/geometryDesaturateBlock.js.map +1 -0
  444. package/Meshes/Node/Blocks/noiseBlock.d.ts +5 -3
  445. package/Meshes/Node/Blocks/noiseBlock.js +5 -3
  446. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -1
  447. package/Meshes/Node/index.d.ts +2 -0
  448. package/Meshes/Node/index.js +2 -0
  449. package/Meshes/Node/index.js.map +1 -1
  450. package/Meshes/Node/nodeGeometry.d.ts +6 -2
  451. package/Meshes/Node/nodeGeometry.js +7 -2
  452. package/Meshes/Node/nodeGeometry.js.map +1 -1
  453. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +1 -0
  454. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -1
  455. package/Meshes/Node/nodeGeometryBuildState.js +1 -0
  456. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  457. package/Meshes/abstractMesh.d.ts +1 -0
  458. package/Meshes/abstractMesh.js +4 -0
  459. package/Meshes/abstractMesh.js.map +1 -1
  460. package/Meshes/csg.d.ts +7 -1
  461. package/Meshes/csg.js +9 -1
  462. package/Meshes/csg.js.map +1 -1
  463. package/Meshes/index.d.ts +1 -0
  464. package/Meshes/index.js +1 -0
  465. package/Meshes/index.js.map +1 -1
  466. package/Meshes/instancedMesh.d.ts +7 -3
  467. package/Meshes/instancedMesh.js +7 -3
  468. package/Meshes/instancedMesh.js.map +1 -1
  469. package/Meshes/linesMesh.d.ts +3 -2
  470. package/Meshes/linesMesh.js +3 -2
  471. package/Meshes/linesMesh.js.map +1 -1
  472. package/Meshes/mesh.d.ts +1 -0
  473. package/Meshes/mesh.js +5 -4
  474. package/Meshes/mesh.js.map +1 -1
  475. package/Meshes/mesh.vertexData.d.ts +0 -145
  476. package/Meshes/mesh.vertexData.js +0 -145
  477. package/Meshes/mesh.vertexData.js.map +1 -1
  478. package/Meshes/transformNode.d.ts +1 -1
  479. package/Meshes/transformNode.js +1 -1
  480. package/Meshes/transformNode.js.map +1 -1
  481. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +1 -0
  482. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +1 -0
  483. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  484. package/Misc/HighDynamicRange/hdr.js +7 -0
  485. package/Misc/HighDynamicRange/hdr.js.map +1 -1
  486. package/Misc/HighDynamicRange/panoramaToCubemap.js +2 -0
  487. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  488. package/Misc/assetsManager.d.ts +3 -0
  489. package/Misc/assetsManager.js +3 -0
  490. package/Misc/assetsManager.js.map +1 -1
  491. package/Misc/basis.js +1 -0
  492. package/Misc/basis.js.map +1 -1
  493. package/Misc/decorators.d.ts +1 -0
  494. package/Misc/decorators.js +2 -1
  495. package/Misc/decorators.js.map +1 -1
  496. package/Misc/fileTools.js +2 -0
  497. package/Misc/fileTools.js.map +1 -1
  498. package/Misc/filesInput.d.ts +7 -2
  499. package/Misc/filesInput.js +7 -2
  500. package/Misc/filesInput.js.map +1 -1
  501. package/Misc/greasedLineTools.d.ts +1 -0
  502. package/Misc/greasedLineTools.js +1 -0
  503. package/Misc/greasedLineTools.js.map +1 -1
  504. package/Misc/textureTools.d.ts +2 -0
  505. package/Misc/textureTools.js +2 -0
  506. package/Misc/textureTools.js.map +1 -1
  507. package/Misc/timer.d.ts +2 -1
  508. package/Misc/timer.js +1 -0
  509. package/Misc/timer.js.map +1 -1
  510. package/Misc/tools.d.ts +2 -2
  511. package/Misc/tools.js +6 -2
  512. package/Misc/tools.js.map +1 -1
  513. package/Misc/videoRecorder.js +4 -0
  514. package/Misc/videoRecorder.js.map +1 -1
  515. package/Misc/webRequest.js +1 -1
  516. package/Misc/webRequest.js.map +1 -1
  517. package/Morph/morphTargetManager.d.ts +11 -0
  518. package/Morph/morphTargetManager.js +22 -2
  519. package/Morph/morphTargetManager.js.map +1 -1
  520. package/Particles/EmitterTypes/customParticleEmitter.js +10 -2
  521. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  522. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +3 -1
  523. package/Particles/EmitterTypes/cylinderParticleEmitter.js +7 -1
  524. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  525. package/Particles/IParticleSystem.d.ts +2 -2
  526. package/Particles/IParticleSystem.js.map +1 -1
  527. package/Particles/gpuParticleSystem.js +1 -0
  528. package/Particles/gpuParticleSystem.js.map +1 -1
  529. package/Particles/particleSystem.d.ts +1 -2
  530. package/Particles/particleSystem.js +5 -1
  531. package/Particles/particleSystem.js.map +1 -1
  532. package/Particles/solidParticleSystem.d.ts +1 -1
  533. package/Particles/solidParticleSystem.js +1 -1
  534. package/Particles/solidParticleSystem.js.map +1 -1
  535. package/Physics/castingResult.d.ts +66 -0
  536. package/Physics/castingResult.js +61 -0
  537. package/Physics/castingResult.js.map +1 -0
  538. package/Physics/index.d.ts +4 -0
  539. package/Physics/index.js +4 -0
  540. package/Physics/index.js.map +1 -1
  541. package/Physics/physicsHelper.d.ts +1 -0
  542. package/Physics/physicsHelper.js +1 -0
  543. package/Physics/physicsHelper.js.map +1 -1
  544. package/Physics/physicsPointProximityQuery.d.ts +28 -0
  545. package/Physics/physicsPointProximityQuery.js +2 -0
  546. package/Physics/physicsPointProximityQuery.js.map +1 -0
  547. package/Physics/physicsRaycastResult.d.ts +2 -44
  548. package/Physics/physicsRaycastResult.js +7 -38
  549. package/Physics/physicsRaycastResult.js.map +1 -1
  550. package/Physics/physicsShapeCastQuery.d.ts +32 -0
  551. package/Physics/physicsShapeCastQuery.js +2 -0
  552. package/Physics/physicsShapeCastQuery.js.map +1 -0
  553. package/Physics/physicsShapeProximityCastQuery.d.ts +32 -0
  554. package/Physics/physicsShapeProximityCastQuery.js +2 -0
  555. package/Physics/physicsShapeProximityCastQuery.js.map +1 -0
  556. package/Physics/proximityCastResult.d.ts +20 -0
  557. package/Physics/proximityCastResult.js +31 -0
  558. package/Physics/proximityCastResult.js.map +1 -0
  559. package/Physics/shapeCastResult.d.ts +16 -0
  560. package/Physics/shapeCastResult.js +24 -0
  561. package/Physics/shapeCastResult.js.map +1 -0
  562. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +5 -0
  563. package/Physics/v1/Plugins/ammoJSPlugin.js +6 -0
  564. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  565. package/Physics/v1/physicsEngine.d.ts +2 -0
  566. package/Physics/v1/physicsEngine.js +2 -0
  567. package/Physics/v1/physicsEngine.js.map +1 -1
  568. package/Physics/v1/physicsImpostor.d.ts +0 -1
  569. package/Physics/v1/physicsImpostor.js +0 -1
  570. package/Physics/v1/physicsImpostor.js.map +1 -1
  571. package/Physics/v2/IPhysicsEnginePlugin.d.ts +1 -0
  572. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  573. package/Physics/v2/Plugins/havokPlugin.d.ts +40 -6
  574. package/Physics/v2/Plugins/havokPlugin.js +118 -17
  575. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  576. package/Physics/v2/physicsBody.d.ts +8 -0
  577. package/Physics/v2/physicsBody.js +18 -4
  578. package/Physics/v2/physicsBody.js.map +1 -1
  579. package/Physics/v2/physicsConstraint.d.ts +0 -2
  580. package/Physics/v2/physicsConstraint.js +0 -2
  581. package/Physics/v2/physicsConstraint.js.map +1 -1
  582. package/Physics/v2/physicsEngine.d.ts +1 -2
  583. package/Physics/v2/physicsEngine.js +2 -2
  584. package/Physics/v2/physicsEngine.js.map +1 -1
  585. package/Physics/v2/physicsShape.d.ts +2 -0
  586. package/Physics/v2/physicsShape.js +5 -0
  587. package/Physics/v2/physicsShape.js.map +1 -1
  588. package/PostProcesses/motionBlurPostProcess.d.ts +1 -0
  589. package/PostProcesses/motionBlurPostProcess.js +1 -0
  590. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  591. package/PostProcesses/postProcess.d.ts +0 -1
  592. package/PostProcesses/postProcess.js +0 -1
  593. package/PostProcesses/postProcess.js.map +1 -1
  594. package/Rendering/depthRendererSceneComponent.js +1 -0
  595. package/Rendering/depthRendererSceneComponent.js.map +1 -1
  596. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  597. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  598. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  599. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  600. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +1 -1
  601. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  602. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +1 -1
  603. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +1 -1
  604. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  605. package/Rendering/geometryBufferRenderer.d.ts +2 -2
  606. package/Rendering/geometryBufferRenderer.js +2 -2
  607. package/Rendering/geometryBufferRenderer.js.map +1 -1
  608. package/Rendering/index.d.ts +0 -1
  609. package/Rendering/index.js +0 -1
  610. package/Rendering/index.js.map +1 -1
  611. package/Rendering/renderingGroup.d.ts +0 -1
  612. package/Rendering/renderingGroup.js +3 -4
  613. package/Rendering/renderingGroup.js.map +1 -1
  614. package/Rendering/renderingManager.d.ts +1 -1
  615. package/Rendering/renderingManager.js +1 -1
  616. package/Rendering/renderingManager.js.map +1 -1
  617. package/Rendering/subSurfaceConfiguration.d.ts +1 -0
  618. package/Rendering/subSurfaceConfiguration.js +1 -0
  619. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  620. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.d.ts +7 -0
  621. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js +13 -0
  622. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js.map +1 -0
  623. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.d.ts +5 -0
  624. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +10 -0
  625. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -0
  626. package/Shaders/ShadersInclude/morphTargetsVertex.js +8 -5
  627. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  628. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +2 -0
  629. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  630. package/Shaders/gaussianSplatting.fragment.d.ts +11 -0
  631. package/Shaders/gaussianSplatting.fragment.js +27 -0
  632. package/Shaders/gaussianSplatting.fragment.js.map +1 -0
  633. package/Shaders/gaussianSplatting.vertex.d.ts +13 -0
  634. package/Shaders/gaussianSplatting.vertex.js +49 -0
  635. package/Shaders/gaussianSplatting.vertex.js.map +1 -0
  636. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +5 -1
  637. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  638. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +2 -0
  639. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  640. package/XR/features/WebXRAbstractFeature.d.ts +3 -1
  641. package/XR/features/WebXRAbstractFeature.js +20 -4
  642. package/XR/features/WebXRAbstractFeature.js.map +1 -1
  643. package/XR/features/WebXRAnchorSystem.d.ts +1 -0
  644. package/XR/features/WebXRAnchorSystem.js +1 -0
  645. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  646. package/XR/features/WebXRControllerTeleportation.js +9 -2
  647. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  648. package/XR/features/WebXREyeTracking.js +1 -1
  649. package/XR/features/WebXREyeTracking.js.map +1 -1
  650. package/XR/features/WebXRHandTracking.d.ts +4 -1
  651. package/XR/features/WebXRHandTracking.js +17 -4
  652. package/XR/features/WebXRHandTracking.js.map +1 -1
  653. package/XR/features/WebXRHitTest.js +1 -1
  654. package/XR/features/WebXRHitTest.js.map +1 -1
  655. package/XR/features/WebXRNearInteraction.d.ts +6 -3
  656. package/XR/features/WebXRNearInteraction.js +30 -15
  657. package/XR/features/WebXRNearInteraction.js.map +1 -1
  658. package/XR/features/WebXRPlaneDetector.d.ts +2 -0
  659. package/XR/features/WebXRPlaneDetector.js +2 -0
  660. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  661. package/XR/features/WebXRRawCameraAccess.d.ts +2 -0
  662. package/XR/features/WebXRRawCameraAccess.js +2 -0
  663. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  664. package/XR/motionController/webXROculusTouchMotionController.d.ts +1 -0
  665. package/XR/motionController/webXROculusTouchMotionController.js +1 -0
  666. package/XR/motionController/webXROculusTouchMotionController.js.map +1 -1
  667. package/XR/webXRCamera.d.ts +3 -0
  668. package/XR/webXRCamera.js +27 -14
  669. package/XR/webXRCamera.js.map +1 -1
  670. package/XR/webXRExperienceHelper.js +1 -0
  671. package/XR/webXRExperienceHelper.js.map +1 -1
  672. package/XR/webXRInput.js +1 -1
  673. package/XR/webXRInput.js.map +1 -1
  674. package/XR/webXRInputSource.d.ts +3 -1
  675. package/XR/webXRInputSource.js +6 -3
  676. package/XR/webXRInputSource.js.map +1 -1
  677. package/XR/webXRSessionManager.d.ts +13 -0
  678. package/XR/webXRSessionManager.js +21 -1
  679. package/XR/webXRSessionManager.js.map +1 -1
  680. package/assetContainer.d.ts +4 -1
  681. package/assetContainer.js +4 -1
  682. package/assetContainer.js.map +1 -1
  683. package/package.json +1 -1
  684. package/scene.d.ts +1 -0
  685. package/scene.js +11 -0
  686. package/scene.js.map +1 -1
  687. package/Rendering/GaussianSplatting/gaussianSplatting.d.ts +0 -81
  688. package/Rendering/GaussianSplatting/gaussianSplatting.js +0 -400
  689. package/Rendering/GaussianSplatting/gaussianSplatting.js.map +0 -1
  690. package/Rendering/GaussianSplatting/index.d.ts +0 -1
  691. package/Rendering/GaussianSplatting/index.js +0 -2
  692. package/Rendering/GaussianSplatting/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"packer.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Packer/packer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Engine } from \"../../../Engines/engine\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Material } from \"../../material\";\r\nimport { Texture } from \"../texture\";\r\nimport { DynamicTexture } from \"../dynamicTexture\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../../../Maths/math.color\";\r\nimport { TexturePackerFrame } from \"./frame\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Tools } from \"../../../Misc/tools\";\r\n\r\n/**\r\n * Defines the basic options interface of a TexturePacker\r\n */\r\nexport interface ITexturePackerOptions {\r\n /**\r\n * Custom targets for the channels of a texture packer. Default is all the channels of the Standard Material\r\n */\r\n map?: string[];\r\n\r\n /**\r\n * the UV input targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsIn?: string;\r\n\r\n /**\r\n * the UV output targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsOut?: string;\r\n\r\n /**\r\n * number representing the layout style. Defaults to LAYOUT_STRIP\r\n */\r\n layout?: number;\r\n\r\n /**\r\n * number of columns if using custom column count layout(2). This defaults to 4.\r\n */\r\n colnum?: number;\r\n\r\n /**\r\n * flag to update the input meshes to the new packed texture after compilation. Defaults to true.\r\n */\r\n updateInputMeshes?: boolean;\r\n\r\n /**\r\n * boolean flag to dispose all the source textures. Defaults to true.\r\n */\r\n disposeSources?: boolean;\r\n\r\n /**\r\n * Fills the blank cells in a set to the customFillColor. Defaults to true.\r\n */\r\n fillBlanks?: boolean;\r\n\r\n /**\r\n * string value representing the context fill style color. Defaults to 'black'.\r\n */\r\n customFillColor?: string;\r\n\r\n /**\r\n * Width and Height Value of each Frame in the TexturePacker Sets\r\n */\r\n frameSize?: number;\r\n\r\n /**\r\n * Ratio of the value to add padding wise to each cell. Defaults to 0.0115\r\n */\r\n paddingRatio?: number;\r\n\r\n /**\r\n * Number that declares the fill method for the padding gutter.\r\n */\r\n paddingMode?: number;\r\n\r\n /**\r\n * If in SUBUV_COLOR padding mode what color to use.\r\n */\r\n paddingColor?: Color3 | Color4;\r\n}\r\n\r\n/**\r\n * Defines the basic interface of a TexturePacker JSON File\r\n */\r\nexport interface ITexturePackerJSON {\r\n /**\r\n * The frame ID\r\n */\r\n name: string;\r\n\r\n /**\r\n * The base64 channel data\r\n */\r\n sets: any;\r\n\r\n /**\r\n * The options of the Packer\r\n */\r\n options: ITexturePackerOptions;\r\n\r\n /**\r\n * The frame data of the Packer\r\n */\r\n frames: Array<number>;\r\n}\r\n\r\n/**\r\n * This is a support class that generates a series of packed texture sets.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n */\r\nexport class TexturePacker {\r\n /** Packer Layout Constant 0 */\r\n public static readonly LAYOUT_STRIP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly LAYOUT_POWER2 = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly LAYOUT_COLNUM = 2;\r\n\r\n /** Packer Layout Constant 0 */\r\n public static readonly SUBUV_WRAP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly SUBUV_EXTEND = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly SUBUV_COLOR = 2;\r\n\r\n /** The Name of the Texture Package */\r\n public name: string;\r\n\r\n /** The scene scope of the TexturePacker */\r\n public scene: Scene;\r\n\r\n /** The Meshes to target */\r\n public meshes: AbstractMesh[];\r\n\r\n /** Arguments passed with the Constructor */\r\n public options: ITexturePackerOptions;\r\n\r\n /** The promise that is started upon initialization */\r\n public promise: Nullable<Promise<TexturePacker | string>>;\r\n\r\n /** The Container object for the channel sets that are generated */\r\n public sets: object;\r\n\r\n /** The Container array for the frames that are generated */\r\n public frames: TexturePackerFrame[];\r\n\r\n /** The expected number of textures the system is parsing. */\r\n private _expecting: number;\r\n\r\n /** The padding value from Math.ceil(frameSize * paddingRatio) */\r\n private _paddingValue: number;\r\n\r\n /**\r\n * Initializes a texture package series from an array of meshes or a single mesh.\r\n * @param name The name of the package\r\n * @param meshes The target meshes to compose the package from\r\n * @param options The arguments that texture packer should follow while building.\r\n * @param scene The scene which the textures are scoped to.\r\n * @returns TexturePacker\r\n */\r\n constructor(name: string, meshes: AbstractMesh[], options: ITexturePackerOptions, scene: Scene) {\r\n this.name = name;\r\n this.meshes = meshes;\r\n this.scene = scene;\r\n\r\n /**\r\n * Run through the options and set what ever defaults are needed that where not declared.\r\n */\r\n this.options = options;\r\n this.options.map = this.options.map ?? [\r\n \"ambientTexture\",\r\n \"bumpTexture\",\r\n \"diffuseTexture\",\r\n \"emissiveTexture\",\r\n \"lightmapTexture\",\r\n \"opacityTexture\",\r\n \"reflectionTexture\",\r\n \"refractionTexture\",\r\n \"specularTexture\",\r\n ];\r\n\r\n this.options.uvsIn = this.options.uvsIn ?? VertexBuffer.UVKind;\r\n this.options.uvsOut = this.options.uvsOut ?? VertexBuffer.UVKind;\r\n this.options.layout = this.options.layout ?? TexturePacker.LAYOUT_STRIP;\r\n\r\n if (this.options.layout === TexturePacker.LAYOUT_COLNUM) {\r\n this.options.colnum = this.options.colnum ?? 8;\r\n }\r\n\r\n this.options.updateInputMeshes = this.options.updateInputMeshes ?? true;\r\n this.options.disposeSources = this.options.disposeSources ?? true;\r\n this._expecting = 0;\r\n\r\n this.options.fillBlanks = this.options.fillBlanks ?? true;\r\n\r\n if (this.options.fillBlanks === true) {\r\n this.options.customFillColor = this.options.customFillColor ?? \"black\";\r\n }\r\n\r\n this.options.frameSize = this.options.frameSize ?? 256;\r\n this.options.paddingRatio = this.options.paddingRatio ?? 0.0115;\r\n\r\n this._paddingValue = Math.ceil(this.options.frameSize * this.options.paddingRatio);\r\n\r\n //Make it an even padding Number.\r\n if (this._paddingValue % 2 !== 0) {\r\n this._paddingValue++;\r\n }\r\n\r\n this.options.paddingMode = this.options.paddingMode ?? TexturePacker.SUBUV_WRAP;\r\n\r\n if (this.options.paddingMode === TexturePacker.SUBUV_COLOR) {\r\n this.options.paddingColor = this.options.paddingColor ?? new Color4(0, 0, 0, 1.0);\r\n }\r\n\r\n this.sets = {};\r\n this.frames = [];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Starts the package process\r\n * @param resolve The promises resolution function\r\n * @returns TexturePacker\r\n */\r\n private _createFrames(resolve: () => void) {\r\n const dtSize = this._calculateSize();\r\n const dtUnits = new Vector2(1, 1).divide(dtSize);\r\n let doneCount = 0;\r\n const expecting = this._expecting;\r\n const meshLength = this.meshes.length;\r\n\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n\r\n const dt = new DynamicTexture(\r\n this.name + \".TexturePack.\" + setName + \"Set\",\r\n { width: dtSize.x, height: dtSize.y },\r\n this.scene,\r\n true, //Generate Mips\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n Engine.TEXTUREFORMAT_RGBA\r\n );\r\n\r\n const dtx = dt.getContext();\r\n dtx.fillStyle = \"rgba(0,0,0,0)\";\r\n dtx.fillRect(0, 0, dtSize.x, dtSize.y);\r\n dt.update(false);\r\n (this.sets as any)[setName] = dt;\r\n }\r\n\r\n const baseSize = this.options.frameSize || 256;\r\n const padding = this._paddingValue;\r\n const tcs = baseSize + 2 * padding;\r\n\r\n const done = () => {\r\n this._calculateMeshUVFrames(baseSize, padding, dtSize, dtUnits, this.options.updateInputMeshes || false);\r\n };\r\n\r\n //Update the Textures\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n const mat = m.material;\r\n\r\n //Check if the material has the texture\r\n //Create a temporary canvas the same size as 1 frame\r\n //Then apply the texture to the center and the 8 offsets\r\n //Copy the Context and place in the correct frame on the DT\r\n\r\n for (let j = 0; j < sKeys.length; j++) {\r\n const tempTexture = new DynamicTexture(\"temp\", tcs, this.scene, true);\r\n const tcx = tempTexture.getContext();\r\n const offset = this._getFrameOffset(i);\r\n\r\n const updateDt = () => {\r\n doneCount++;\r\n tempTexture.update(false);\r\n const iDat = tcx.getImageData(0, 0, tcs, tcs);\r\n\r\n //Update Set\r\n const dt = (this.sets as any)[setName];\r\n const dtx = dt.getContext();\r\n dtx.putImageData(iDat, dtSize.x * offset.x, dtSize.y * offset.y);\r\n tempTexture.dispose();\r\n dt.update(false);\r\n if (doneCount == expecting) {\r\n done();\r\n resolve();\r\n return;\r\n }\r\n };\r\n\r\n const setName = sKeys[j] || \"_blank\";\r\n if (!mat || (mat as any)[setName] === null) {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n\r\n if (this.options.fillBlanks) {\r\n tcx.fillStyle = this.options.customFillColor as string;\r\n }\r\n\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n\r\n updateDt();\r\n } else {\r\n const setTexture = (mat as any)[setName];\r\n const img = new Image();\r\n\r\n if (setTexture instanceof DynamicTexture) {\r\n img.src = setTexture.getContext().canvas.toDataURL(\"image/png\");\r\n } else {\r\n img.src = setTexture!.url;\r\n }\r\n Tools.SetCorsBehavior(img.src, img);\r\n\r\n img.onload = () => {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n tempTexture.update(false);\r\n\r\n tcx.setTransform(1, 0, 0, -1, 0, 0);\r\n const cellOffsets = [0, 0, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0, -1 - 1, 0, -1, 1, -1];\r\n\r\n switch (this.options.paddingMode) {\r\n //Wrap Mode\r\n case 0:\r\n for (let i = 0; i < 9; i++) {\r\n tcx.drawImage(\r\n img,\r\n 0,\r\n 0,\r\n img.width,\r\n img.height,\r\n padding + baseSize * cellOffsets[i],\r\n padding + baseSize * cellOffsets[i + 1] - tcs,\r\n baseSize,\r\n baseSize\r\n );\r\n }\r\n break;\r\n //Extend Mode\r\n case 1:\r\n for (let i = 0; i < padding; i++) {\r\n tcx.drawImage(img, 0, 0, img.width, img.height, i + baseSize * cellOffsets[0], padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding * 2 - i, padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, i - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, padding * 2 - i - tcs, baseSize, baseSize);\r\n }\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n //Color Mode\r\n case 2:\r\n tcx.fillStyle = (this.options.paddingColor || Color3.Black()).toHexString();\r\n tcx.fillRect(0, 0, tcs, -tcs);\r\n tcx.clearRect(padding, padding, baseSize, baseSize);\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n }\r\n\r\n tcx.setTransform(1, 0, 0, 1, 0, 0);\r\n\r\n updateDt();\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the Size of the Channel Sets\r\n * @returns Vector2\r\n */\r\n private _calculateSize(): Vector2 {\r\n const meshLength: number = this.meshes.length || 0;\r\n const baseSize: number = this.options.frameSize || 0;\r\n const padding: number = this._paddingValue || 0;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n return new Vector2(baseSize * meshLength + 2 * padding * meshLength, baseSize + 2 * padding);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n const size = baseSize * sqrtCount + 2 * padding * sqrtCount;\r\n return new Vector2(size, size);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n return new Vector2(baseSize * cols + 2 * padding * cols, baseSize * rowCnt + 2 * padding * rowCnt);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Calculates the UV data for the frames.\r\n * @param baseSize the base frameSize\r\n * @param padding the base frame padding\r\n * @param dtSize size of the Dynamic Texture for that channel\r\n * @param dtUnits is 1/dtSize\r\n * @param update flag to update the input meshes\r\n */\r\n private _calculateMeshUVFrames(baseSize: number, padding: number, dtSize: Vector2, dtUnits: Vector2, update: boolean) {\r\n const meshLength = this.meshes.length;\r\n\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n\r\n const scale = new Vector2(baseSize / dtSize.x, baseSize / dtSize.y);\r\n\r\n const pOffset: Vector2 = dtUnits.clone().scale(padding);\r\n const frameOffset: Vector2 = this._getFrameOffset(i);\r\n const offset: Vector2 = frameOffset.add(pOffset);\r\n\r\n const frame: TexturePackerFrame = new TexturePackerFrame(i, scale, offset);\r\n\r\n this.frames.push(frame);\r\n\r\n //Update Output UVs\r\n if (update) {\r\n this._updateMeshUV(m, i);\r\n this._updateTextureReferences(m);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the frames Offset.\r\n * @param index of the frame\r\n * @returns Vector2\r\n */\r\n private _getFrameOffset(index: number): Vector2 {\r\n const meshLength = this.meshes.length;\r\n let uvStep, yStep, xStep;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n uvStep = 1 / meshLength;\r\n return new Vector2(index * uvStep, 0);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n yStep = Math.floor(index / sqrtCount);\r\n xStep = index - yStep * sqrtCount;\r\n uvStep = 1 / sqrtCount;\r\n return new Vector2(xStep * uvStep, yStep * uvStep);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n xStep = Math.floor(index / rowCnt);\r\n yStep = index - xStep * rowCnt;\r\n uvStep = new Vector2(1 / cols, 1 / rowCnt);\r\n return new Vector2(xStep * uvStep.x, yStep * uvStep.y);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Updates a Mesh to the frame data\r\n * @param mesh that is the target\r\n * @param frameID or the frame index\r\n */\r\n private _updateMeshUV(mesh: AbstractMesh, frameID: number): void {\r\n const frame: TexturePackerFrame = (this.frames as any)[frameID];\r\n const uvIn = mesh.getVerticesData(this.options.uvsIn || VertexBuffer.UVKind);\r\n const uvOut = [];\r\n let toCount = 0;\r\n\r\n if (uvIn!.length) {\r\n toCount = uvIn!.length || 0;\r\n }\r\n\r\n for (let i = 0; i < toCount; i += 2) {\r\n uvOut.push((uvIn as any)[i] * frame.scale.x + frame.offset.x, (uvIn as any)[i + 1] * frame.scale.y + frame.offset.y);\r\n }\r\n\r\n mesh.setVerticesData(this.options.uvsOut || VertexBuffer.UVKind, uvOut);\r\n }\r\n\r\n /**\r\n * Updates a Meshes materials to use the texture packer channels\r\n * @param m is the mesh to target\r\n * @param force all channels on the packer to be set.\r\n */\r\n private _updateTextureReferences(m: AbstractMesh, force: boolean = false): void {\r\n const mat = m.material;\r\n const sKeys = Object.keys(this.sets);\r\n\r\n const _dispose = (_t: any) => {\r\n if (_t.dispose) {\r\n _t.dispose();\r\n }\r\n };\r\n\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n if (!force) {\r\n if (!mat) {\r\n return;\r\n }\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n } else {\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n }\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public method to set a Mesh to a frame\r\n * @param m that is the target\r\n * @param frameID or the frame index\r\n * @param updateMaterial trigger for if the Meshes attached Material be updated?\r\n */\r\n public setMeshToFrame(m: AbstractMesh, frameID: number, updateMaterial: boolean = false): void {\r\n this._updateMeshUV(m, frameID);\r\n if (updateMaterial) {\r\n this._updateTextureReferences(m, true);\r\n }\r\n }\r\n\r\n /**\r\n * Starts the async promise to compile the texture packer.\r\n * @returns Promise<void>\r\n */\r\n public processAsync(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n if (this.meshes.length === 0) {\r\n //Must be a JSON load!\r\n resolve();\r\n return;\r\n }\r\n let done = 0;\r\n const doneCheck = (mat: Material) => {\r\n done++;\r\n //Check Status of all Textures on all meshes, till they are ready.\r\n if (this.options.map) {\r\n for (let j = 0; j < this.options.map.length; j++) {\r\n const index: string = this.options.map[j];\r\n const t: Texture | DynamicTexture = (mat as any)[index];\r\n\r\n if (t !== null) {\r\n if (!(this.sets as any)[this.options.map[j]]) {\r\n (this.sets as any)[this.options.map[j]] = true;\r\n }\r\n\r\n this._expecting++;\r\n }\r\n }\r\n\r\n if (done === this.meshes.length) {\r\n this._createFrames(resolve);\r\n }\r\n }\r\n };\r\n\r\n for (let i = 0; i < this.meshes.length; i++) {\r\n const mesh = this.meshes[i];\r\n const material: Nullable<Material> = mesh.material;\r\n\r\n if (!material) {\r\n done++;\r\n if (done === this.meshes.length) {\r\n return this._createFrames(resolve);\r\n }\r\n continue;\r\n }\r\n\r\n material.forceCompilationAsync(mesh).then(() => {\r\n doneCheck(material as Material);\r\n });\r\n }\r\n } catch (e) {\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes all textures associated with this packer\r\n */\r\n public dispose(): void {\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel = sKeys[i];\r\n (this.sets as any)[channel].dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the download process for all the channels converting them to base64 data and embedding it all in a JSON file.\r\n * @param imageType is the image type to use.\r\n * @param quality of the image if downloading as jpeg, Ranges from >0 to 1.\r\n */\r\n public download(imageType: string = \"png\", quality: number = 1): void {\r\n setTimeout(() => {\r\n const pack = {\r\n name: this.name,\r\n sets: {},\r\n options: {},\r\n frames: [],\r\n };\r\n\r\n const sKeys = Object.keys(this.sets);\r\n const oKeys = Object.keys(this.options);\r\n try {\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel: string = sKeys[i];\r\n const dt = (this.sets as any)[channel];\r\n (pack.sets as any)[channel] = dt.getContext().canvas.toDataURL(\"image/\" + imageType, quality);\r\n }\r\n for (let i = 0; i < oKeys.length; i++) {\r\n const opt: string = oKeys[i];\r\n (pack.options as any)[opt] = (this.options as any)[opt];\r\n }\r\n for (let i = 0; i < this.frames.length; i++) {\r\n const _f = this.frames[i];\r\n (pack.frames as Array<number>).push(_f.scale.x, _f.scale.y, _f.offset.x, _f.offset.y);\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to download: \" + err);\r\n return;\r\n }\r\n\r\n const data = \"data:text/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(pack, null, 4));\r\n const _a = document.createElement(\"a\");\r\n _a.setAttribute(\"href\", data);\r\n _a.setAttribute(\"download\", this.name + \"_texurePackage.json\");\r\n document.body.appendChild(_a);\r\n _a.click();\r\n _a.remove();\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Public method to load a texturePacker JSON file.\r\n * @param data of the JSON file in string format.\r\n */\r\n public updateFromJSON(data: string): void {\r\n try {\r\n const parsedData: ITexturePackerJSON = JSON.parse(data);\r\n this.name = parsedData.name;\r\n const _options = Object.keys(parsedData.options);\r\n\r\n for (let i = 0; i < _options.length; i++) {\r\n (this.options as any)[_options[i]] = (parsedData.options as any)[_options[i]];\r\n }\r\n\r\n for (let i = 0; i < parsedData.frames.length; i += 4) {\r\n const frame: TexturePackerFrame = new TexturePackerFrame(\r\n i / 4,\r\n new Vector2(parsedData.frames[i], parsedData.frames[i + 1]),\r\n new Vector2(parsedData.frames[i + 2], parsedData.frames[i + 3])\r\n );\r\n this.frames.push(frame);\r\n }\r\n\r\n const channels = Object.keys(parsedData.sets);\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const _t = new Texture(parsedData.sets[channels[i]], this.scene, false, false);\r\n (this.sets as any)[channels[i]] = _t;\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to update from JSON: \" + err);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"packer.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Packer/packer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Engine } from \"../../../Engines/engine\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Material } from \"../../material\";\r\nimport { Texture } from \"../texture\";\r\nimport { DynamicTexture } from \"../dynamicTexture\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../../../Maths/math.color\";\r\nimport { TexturePackerFrame } from \"./frame\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Tools } from \"../../../Misc/tools\";\r\n\r\n/**\r\n * Defines the basic options interface of a TexturePacker\r\n */\r\nexport interface ITexturePackerOptions {\r\n /**\r\n * Custom targets for the channels of a texture packer. Default is all the channels of the Standard Material\r\n */\r\n map?: string[];\r\n\r\n /**\r\n * the UV input targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsIn?: string;\r\n\r\n /**\r\n * the UV output targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsOut?: string;\r\n\r\n /**\r\n * number representing the layout style. Defaults to LAYOUT_STRIP\r\n */\r\n layout?: number;\r\n\r\n /**\r\n * number of columns if using custom column count layout(2). This defaults to 4.\r\n */\r\n colnum?: number;\r\n\r\n /**\r\n * flag to update the input meshes to the new packed texture after compilation. Defaults to true.\r\n */\r\n updateInputMeshes?: boolean;\r\n\r\n /**\r\n * boolean flag to dispose all the source textures. Defaults to true.\r\n */\r\n disposeSources?: boolean;\r\n\r\n /**\r\n * Fills the blank cells in a set to the customFillColor. Defaults to true.\r\n */\r\n fillBlanks?: boolean;\r\n\r\n /**\r\n * string value representing the context fill style color. Defaults to 'black'.\r\n */\r\n customFillColor?: string;\r\n\r\n /**\r\n * Width and Height Value of each Frame in the TexturePacker Sets\r\n */\r\n frameSize?: number;\r\n\r\n /**\r\n * Ratio of the value to add padding wise to each cell. Defaults to 0.0115\r\n */\r\n paddingRatio?: number;\r\n\r\n /**\r\n * Number that declares the fill method for the padding gutter.\r\n */\r\n paddingMode?: number;\r\n\r\n /**\r\n * If in SUBUV_COLOR padding mode what color to use.\r\n */\r\n paddingColor?: Color3 | Color4;\r\n}\r\n\r\n/**\r\n * Defines the basic interface of a TexturePacker JSON File\r\n */\r\nexport interface ITexturePackerJSON {\r\n /**\r\n * The frame ID\r\n */\r\n name: string;\r\n\r\n /**\r\n * The base64 channel data\r\n */\r\n sets: any;\r\n\r\n /**\r\n * The options of the Packer\r\n */\r\n options: ITexturePackerOptions;\r\n\r\n /**\r\n * The frame data of the Packer\r\n */\r\n frames: Array<number>;\r\n}\r\n\r\n/**\r\n * This is a support class that generates a series of packed texture sets.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n */\r\nexport class TexturePacker {\r\n /** Packer Layout Constant 0 */\r\n public static readonly LAYOUT_STRIP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly LAYOUT_POWER2 = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly LAYOUT_COLNUM = 2;\r\n\r\n /** Packer Layout Constant 0 */\r\n public static readonly SUBUV_WRAP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly SUBUV_EXTEND = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly SUBUV_COLOR = 2;\r\n\r\n /** The Name of the Texture Package */\r\n public name: string;\r\n\r\n /** The scene scope of the TexturePacker */\r\n public scene: Scene;\r\n\r\n /** The Meshes to target */\r\n public meshes: AbstractMesh[];\r\n\r\n /** Arguments passed with the Constructor */\r\n public options: ITexturePackerOptions;\r\n\r\n /** The promise that is started upon initialization */\r\n public promise: Nullable<Promise<TexturePacker | string>>;\r\n\r\n /** The Container object for the channel sets that are generated */\r\n public sets: object;\r\n\r\n /** The Container array for the frames that are generated */\r\n public frames: TexturePackerFrame[];\r\n\r\n /** The expected number of textures the system is parsing. */\r\n private _expecting: number;\r\n\r\n /** The padding value from Math.ceil(frameSize * paddingRatio) */\r\n private _paddingValue: number;\r\n\r\n /**\r\n * Initializes a texture package series from an array of meshes or a single mesh.\r\n * @param name The name of the package\r\n * @param meshes The target meshes to compose the package from\r\n * @param options The arguments that texture packer should follow while building.\r\n * @param scene The scene which the textures are scoped to.\r\n * @returns TexturePacker\r\n */\r\n constructor(name: string, meshes: AbstractMesh[], options: ITexturePackerOptions, scene: Scene) {\r\n this.name = name;\r\n this.meshes = meshes;\r\n this.scene = scene;\r\n\r\n /**\r\n * Run through the options and set what ever defaults are needed that where not declared.\r\n */\r\n this.options = options;\r\n this.options.map = this.options.map ?? [\r\n \"ambientTexture\",\r\n \"bumpTexture\",\r\n \"diffuseTexture\",\r\n \"emissiveTexture\",\r\n \"lightmapTexture\",\r\n \"opacityTexture\",\r\n \"reflectionTexture\",\r\n \"refractionTexture\",\r\n \"specularTexture\",\r\n ];\r\n\r\n this.options.uvsIn = this.options.uvsIn ?? VertexBuffer.UVKind;\r\n this.options.uvsOut = this.options.uvsOut ?? VertexBuffer.UVKind;\r\n this.options.layout = this.options.layout ?? TexturePacker.LAYOUT_STRIP;\r\n\r\n if (this.options.layout === TexturePacker.LAYOUT_COLNUM) {\r\n this.options.colnum = this.options.colnum ?? 8;\r\n }\r\n\r\n this.options.updateInputMeshes = this.options.updateInputMeshes ?? true;\r\n this.options.disposeSources = this.options.disposeSources ?? true;\r\n this._expecting = 0;\r\n\r\n this.options.fillBlanks = this.options.fillBlanks ?? true;\r\n\r\n if (this.options.fillBlanks === true) {\r\n this.options.customFillColor = this.options.customFillColor ?? \"black\";\r\n }\r\n\r\n this.options.frameSize = this.options.frameSize ?? 256;\r\n this.options.paddingRatio = this.options.paddingRatio ?? 0.0115;\r\n\r\n this._paddingValue = Math.ceil(this.options.frameSize * this.options.paddingRatio);\r\n\r\n //Make it an even padding Number.\r\n if (this._paddingValue % 2 !== 0) {\r\n this._paddingValue++;\r\n }\r\n\r\n this.options.paddingMode = this.options.paddingMode ?? TexturePacker.SUBUV_WRAP;\r\n\r\n if (this.options.paddingMode === TexturePacker.SUBUV_COLOR) {\r\n this.options.paddingColor = this.options.paddingColor ?? new Color4(0, 0, 0, 1.0);\r\n }\r\n\r\n this.sets = {};\r\n this.frames = [];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Starts the package process\r\n * @param resolve The promises resolution function\r\n */\r\n private _createFrames(resolve: () => void) {\r\n const dtSize = this._calculateSize();\r\n const dtUnits = new Vector2(1, 1).divide(dtSize);\r\n let doneCount = 0;\r\n const expecting = this._expecting;\r\n const meshLength = this.meshes.length;\r\n\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n\r\n const dt = new DynamicTexture(\r\n this.name + \".TexturePack.\" + setName + \"Set\",\r\n { width: dtSize.x, height: dtSize.y },\r\n this.scene,\r\n true, //Generate Mips\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n Engine.TEXTUREFORMAT_RGBA\r\n );\r\n\r\n const dtx = dt.getContext();\r\n dtx.fillStyle = \"rgba(0,0,0,0)\";\r\n dtx.fillRect(0, 0, dtSize.x, dtSize.y);\r\n dt.update(false);\r\n (this.sets as any)[setName] = dt;\r\n }\r\n\r\n const baseSize = this.options.frameSize || 256;\r\n const padding = this._paddingValue;\r\n const tcs = baseSize + 2 * padding;\r\n\r\n const done = () => {\r\n this._calculateMeshUVFrames(baseSize, padding, dtSize, dtUnits, this.options.updateInputMeshes || false);\r\n };\r\n\r\n //Update the Textures\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n const mat = m.material;\r\n\r\n //Check if the material has the texture\r\n //Create a temporary canvas the same size as 1 frame\r\n //Then apply the texture to the center and the 8 offsets\r\n //Copy the Context and place in the correct frame on the DT\r\n\r\n for (let j = 0; j < sKeys.length; j++) {\r\n const tempTexture = new DynamicTexture(\"temp\", tcs, this.scene, true);\r\n const tcx = tempTexture.getContext();\r\n const offset = this._getFrameOffset(i);\r\n\r\n const updateDt = () => {\r\n doneCount++;\r\n tempTexture.update(false);\r\n const iDat = tcx.getImageData(0, 0, tcs, tcs);\r\n\r\n //Update Set\r\n const dt = (this.sets as any)[setName];\r\n const dtx = dt.getContext();\r\n dtx.putImageData(iDat, dtSize.x * offset.x, dtSize.y * offset.y);\r\n tempTexture.dispose();\r\n dt.update(false);\r\n if (doneCount == expecting) {\r\n done();\r\n resolve();\r\n return;\r\n }\r\n };\r\n\r\n const setName = sKeys[j] || \"_blank\";\r\n if (!mat || (mat as any)[setName] === null) {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n\r\n if (this.options.fillBlanks) {\r\n tcx.fillStyle = this.options.customFillColor as string;\r\n }\r\n\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n\r\n updateDt();\r\n } else {\r\n const setTexture = (mat as any)[setName];\r\n const img = new Image();\r\n\r\n if (setTexture instanceof DynamicTexture) {\r\n img.src = setTexture.getContext().canvas.toDataURL(\"image/png\");\r\n } else {\r\n img.src = setTexture!.url;\r\n }\r\n Tools.SetCorsBehavior(img.src, img);\r\n\r\n img.onload = () => {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n tempTexture.update(false);\r\n\r\n tcx.setTransform(1, 0, 0, -1, 0, 0);\r\n const cellOffsets = [0, 0, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0, -1 - 1, 0, -1, 1, -1];\r\n\r\n switch (this.options.paddingMode) {\r\n //Wrap Mode\r\n case 0:\r\n for (let i = 0; i < 9; i++) {\r\n tcx.drawImage(\r\n img,\r\n 0,\r\n 0,\r\n img.width,\r\n img.height,\r\n padding + baseSize * cellOffsets[i],\r\n padding + baseSize * cellOffsets[i + 1] - tcs,\r\n baseSize,\r\n baseSize\r\n );\r\n }\r\n break;\r\n //Extend Mode\r\n case 1:\r\n for (let i = 0; i < padding; i++) {\r\n tcx.drawImage(img, 0, 0, img.width, img.height, i + baseSize * cellOffsets[0], padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding * 2 - i, padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, i - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, padding * 2 - i - tcs, baseSize, baseSize);\r\n }\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n //Color Mode\r\n case 2:\r\n tcx.fillStyle = (this.options.paddingColor || Color3.Black()).toHexString();\r\n tcx.fillRect(0, 0, tcs, -tcs);\r\n tcx.clearRect(padding, padding, baseSize, baseSize);\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n }\r\n\r\n tcx.setTransform(1, 0, 0, 1, 0, 0);\r\n\r\n updateDt();\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the Size of the Channel Sets\r\n * @returns Vector2\r\n */\r\n private _calculateSize(): Vector2 {\r\n const meshLength: number = this.meshes.length || 0;\r\n const baseSize: number = this.options.frameSize || 0;\r\n const padding: number = this._paddingValue || 0;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n return new Vector2(baseSize * meshLength + 2 * padding * meshLength, baseSize + 2 * padding);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n const size = baseSize * sqrtCount + 2 * padding * sqrtCount;\r\n return new Vector2(size, size);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n return new Vector2(baseSize * cols + 2 * padding * cols, baseSize * rowCnt + 2 * padding * rowCnt);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Calculates the UV data for the frames.\r\n * @param baseSize the base frameSize\r\n * @param padding the base frame padding\r\n * @param dtSize size of the Dynamic Texture for that channel\r\n * @param dtUnits is 1/dtSize\r\n * @param update flag to update the input meshes\r\n */\r\n private _calculateMeshUVFrames(baseSize: number, padding: number, dtSize: Vector2, dtUnits: Vector2, update: boolean) {\r\n const meshLength = this.meshes.length;\r\n\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n\r\n const scale = new Vector2(baseSize / dtSize.x, baseSize / dtSize.y);\r\n\r\n const pOffset: Vector2 = dtUnits.clone().scale(padding);\r\n const frameOffset: Vector2 = this._getFrameOffset(i);\r\n const offset: Vector2 = frameOffset.add(pOffset);\r\n\r\n const frame: TexturePackerFrame = new TexturePackerFrame(i, scale, offset);\r\n\r\n this.frames.push(frame);\r\n\r\n //Update Output UVs\r\n if (update) {\r\n this._updateMeshUV(m, i);\r\n this._updateTextureReferences(m);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the frames Offset.\r\n * @param index of the frame\r\n * @returns Vector2\r\n */\r\n private _getFrameOffset(index: number): Vector2 {\r\n const meshLength = this.meshes.length;\r\n let uvStep, yStep, xStep;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n uvStep = 1 / meshLength;\r\n return new Vector2(index * uvStep, 0);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n yStep = Math.floor(index / sqrtCount);\r\n xStep = index - yStep * sqrtCount;\r\n uvStep = 1 / sqrtCount;\r\n return new Vector2(xStep * uvStep, yStep * uvStep);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n xStep = Math.floor(index / rowCnt);\r\n yStep = index - xStep * rowCnt;\r\n uvStep = new Vector2(1 / cols, 1 / rowCnt);\r\n return new Vector2(xStep * uvStep.x, yStep * uvStep.y);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Updates a Mesh to the frame data\r\n * @param mesh that is the target\r\n * @param frameID or the frame index\r\n */\r\n private _updateMeshUV(mesh: AbstractMesh, frameID: number): void {\r\n const frame: TexturePackerFrame = (this.frames as any)[frameID];\r\n const uvIn = mesh.getVerticesData(this.options.uvsIn || VertexBuffer.UVKind);\r\n const uvOut = [];\r\n let toCount = 0;\r\n\r\n if (uvIn!.length) {\r\n toCount = uvIn!.length || 0;\r\n }\r\n\r\n for (let i = 0; i < toCount; i += 2) {\r\n uvOut.push((uvIn as any)[i] * frame.scale.x + frame.offset.x, (uvIn as any)[i + 1] * frame.scale.y + frame.offset.y);\r\n }\r\n\r\n mesh.setVerticesData(this.options.uvsOut || VertexBuffer.UVKind, uvOut);\r\n }\r\n\r\n /**\r\n * Updates a Meshes materials to use the texture packer channels\r\n * @param m is the mesh to target\r\n * @param force all channels on the packer to be set.\r\n */\r\n private _updateTextureReferences(m: AbstractMesh, force: boolean = false): void {\r\n const mat = m.material;\r\n const sKeys = Object.keys(this.sets);\r\n\r\n const _dispose = (_t: any) => {\r\n if (_t.dispose) {\r\n _t.dispose();\r\n }\r\n };\r\n\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n if (!force) {\r\n if (!mat) {\r\n return;\r\n }\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n } else {\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n }\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public method to set a Mesh to a frame\r\n * @param m that is the target\r\n * @param frameID or the frame index\r\n * @param updateMaterial trigger for if the Meshes attached Material be updated?\r\n */\r\n public setMeshToFrame(m: AbstractMesh, frameID: number, updateMaterial: boolean = false): void {\r\n this._updateMeshUV(m, frameID);\r\n if (updateMaterial) {\r\n this._updateTextureReferences(m, true);\r\n }\r\n }\r\n\r\n /**\r\n * Starts the async promise to compile the texture packer.\r\n * @returns Promise<void>\r\n */\r\n public processAsync(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n if (this.meshes.length === 0) {\r\n //Must be a JSON load!\r\n resolve();\r\n return;\r\n }\r\n let done = 0;\r\n const doneCheck = (mat: Material) => {\r\n done++;\r\n //Check Status of all Textures on all meshes, till they are ready.\r\n if (this.options.map) {\r\n for (let j = 0; j < this.options.map.length; j++) {\r\n const index: string = this.options.map[j];\r\n const t: Texture | DynamicTexture = (mat as any)[index];\r\n\r\n if (t !== null) {\r\n if (!(this.sets as any)[this.options.map[j]]) {\r\n (this.sets as any)[this.options.map[j]] = true;\r\n }\r\n\r\n this._expecting++;\r\n }\r\n }\r\n\r\n if (done === this.meshes.length) {\r\n this._createFrames(resolve);\r\n }\r\n }\r\n };\r\n\r\n for (let i = 0; i < this.meshes.length; i++) {\r\n const mesh = this.meshes[i];\r\n const material: Nullable<Material> = mesh.material;\r\n\r\n if (!material) {\r\n done++;\r\n if (done === this.meshes.length) {\r\n return this._createFrames(resolve);\r\n }\r\n continue;\r\n }\r\n\r\n material.forceCompilationAsync(mesh).then(() => {\r\n doneCheck(material as Material);\r\n });\r\n }\r\n } catch (e) {\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes all textures associated with this packer\r\n */\r\n public dispose(): void {\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel = sKeys[i];\r\n (this.sets as any)[channel].dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the download process for all the channels converting them to base64 data and embedding it all in a JSON file.\r\n * @param imageType is the image type to use.\r\n * @param quality of the image if downloading as jpeg, Ranges from >0 to 1.\r\n */\r\n public download(imageType: string = \"png\", quality: number = 1): void {\r\n setTimeout(() => {\r\n const pack = {\r\n name: this.name,\r\n sets: {},\r\n options: {},\r\n frames: [],\r\n };\r\n\r\n const sKeys = Object.keys(this.sets);\r\n const oKeys = Object.keys(this.options);\r\n try {\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel: string = sKeys[i];\r\n const dt = (this.sets as any)[channel];\r\n (pack.sets as any)[channel] = dt.getContext().canvas.toDataURL(\"image/\" + imageType, quality);\r\n }\r\n for (let i = 0; i < oKeys.length; i++) {\r\n const opt: string = oKeys[i];\r\n (pack.options as any)[opt] = (this.options as any)[opt];\r\n }\r\n for (let i = 0; i < this.frames.length; i++) {\r\n const _f = this.frames[i];\r\n (pack.frames as Array<number>).push(_f.scale.x, _f.scale.y, _f.offset.x, _f.offset.y);\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to download: \" + err);\r\n return;\r\n }\r\n\r\n const data = \"data:text/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(pack, null, 4));\r\n const _a = document.createElement(\"a\");\r\n _a.setAttribute(\"href\", data);\r\n _a.setAttribute(\"download\", this.name + \"_texurePackage.json\");\r\n document.body.appendChild(_a);\r\n _a.click();\r\n _a.remove();\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Public method to load a texturePacker JSON file.\r\n * @param data of the JSON file in string format.\r\n */\r\n public updateFromJSON(data: string): void {\r\n try {\r\n const parsedData: ITexturePackerJSON = JSON.parse(data);\r\n this.name = parsedData.name;\r\n const _options = Object.keys(parsedData.options);\r\n\r\n for (let i = 0; i < _options.length; i++) {\r\n (this.options as any)[_options[i]] = (parsedData.options as any)[_options[i]];\r\n }\r\n\r\n for (let i = 0; i < parsedData.frames.length; i += 4) {\r\n const frame: TexturePackerFrame = new TexturePackerFrame(\r\n i / 4,\r\n new Vector2(parsedData.frames[i], parsedData.frames[i + 1]),\r\n new Vector2(parsedData.frames[i + 2], parsedData.frames[i + 3])\r\n );\r\n this.frames.push(frame);\r\n }\r\n\r\n const channels = Object.keys(parsedData.sets);\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const _t = new Texture(parsedData.sets[channels[i]], this.scene, false, false);\r\n (this.sets as any)[channels[i]] = _t;\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to update from JSON: \" + err);\r\n }\r\n }\r\n}\r\n"]}
@@ -36,12 +36,13 @@ export declare class ColorGradingTexture extends BaseTexture {
36
36
  */
37
37
  private _triggerOnLoad;
38
38
  /**
39
- * Returns the texture matrix used in most of the material.
39
+ * @returns the texture matrix used in most of the material.
40
40
  * This is not used in color grading but keep for troubleshooting purpose (easily swap diffuse by colorgrading to look in).
41
41
  */
42
42
  getTextureMatrix(): Matrix;
43
43
  /**
44
44
  * Occurs when the file being loaded is a .3dl LUT file.
45
+ * @returns the 3D LUT texture
45
46
  */
46
47
  private _load3dlTexture;
47
48
  /**
@@ -50,6 +51,7 @@ export declare class ColorGradingTexture extends BaseTexture {
50
51
  private _loadTexture;
51
52
  /**
52
53
  * Clones the color grading texture.
54
+ * @returns the cloned texture
53
55
  */
54
56
  clone(): ColorGradingTexture;
55
57
  /**
@@ -65,6 +67,7 @@ export declare class ColorGradingTexture extends BaseTexture {
65
67
  static Parse(parsedTexture: any, scene: Scene): Nullable<ColorGradingTexture>;
66
68
  /**
67
69
  * Serializes the LUT texture to json format.
70
+ * @returns The JSON representation of the texture
68
71
  */
69
72
  serialize(): any;
70
73
  }
@@ -57,7 +57,7 @@ export class ColorGradingTexture extends BaseTexture {
57
57
  }
58
58
  }
59
59
  /**
60
- * Returns the texture matrix used in most of the material.
60
+ * @returns the texture matrix used in most of the material.
61
61
  * This is not used in color grading but keep for troubleshooting purpose (easily swap diffuse by colorgrading to look in).
62
62
  */
63
63
  getTextureMatrix() {
@@ -65,6 +65,7 @@ export class ColorGradingTexture extends BaseTexture {
65
65
  }
66
66
  /**
67
67
  * Occurs when the file being loaded is a .3dl LUT file.
68
+ * @returns the 3D LUT texture
68
69
  */
69
70
  _load3dlTexture() {
70
71
  const engine = this._getEngine();
@@ -184,6 +185,7 @@ export class ColorGradingTexture extends BaseTexture {
184
185
  }
185
186
  /**
186
187
  * Clones the color grading texture.
188
+ * @returns the cloned texture
187
189
  */
188
190
  clone() {
189
191
  const newTexture = new ColorGradingTexture(this.url, this.getScene() || this._getEngine());
@@ -221,6 +223,7 @@ export class ColorGradingTexture extends BaseTexture {
221
223
  }
222
224
  /**
223
225
  * Serializes the LUT texture to json format.
226
+ * @returns The JSON representation of the texture
224
227
  */
225
228
  serialize() {
226
229
  if (!this.name) {
@@ -1 +1 @@
1
- {"version":3,"file":"colorGradingTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/colorGradingTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Matrix } from \"../../Maths/math.vector\";\r\nimport type { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\nimport type { ThinEngine } from \"../../Engines/thinEngine\";\r\n\r\n// Ensures Raw texture are included\r\nimport \"../../Engines/Extensions/engine.rawTexture\";\r\n\r\n/**\r\n * This represents a color grading texture. This acts as a lookup table LUT, useful during post process\r\n * It can help converting any input color in a desired output one. This can then be used to create effects\r\n * from sepia, black and white to sixties or futuristic rendering...\r\n *\r\n * The only supported format is currently 3dl.\r\n * More information on LUT: https://en.wikipedia.org/wiki/3D_lookup_table\r\n */\r\nexport class ColorGradingTexture extends BaseTexture {\r\n /**\r\n * The texture URL.\r\n */\r\n public url: string;\r\n\r\n /**\r\n * Empty line regex stored for GC.\r\n */\r\n private static _NoneEmptyLineRegex = /\\S+/;\r\n\r\n private _textureMatrix: Matrix;\r\n private _onLoad: Nullable<() => void>;\r\n\r\n /**\r\n * Instantiates a ColorGradingTexture from the following parameters.\r\n *\r\n * @param url The location of the color grading data (currently only supporting 3dl)\r\n * @param sceneOrEngine The scene or engine the texture will be used in\r\n * @param onLoad defines a callback triggered when the texture has been loaded\r\n */\r\n constructor(url: string, sceneOrEngine: Scene | ThinEngine, onLoad: Nullable<() => void> = null) {\r\n super(sceneOrEngine);\r\n\r\n if (!url) {\r\n return;\r\n }\r\n\r\n this._textureMatrix = Matrix.Identity();\r\n this.name = url;\r\n this.url = url;\r\n this._onLoad = onLoad;\r\n\r\n this._texture = this._getFromCache(url, true);\r\n\r\n if (!this._texture) {\r\n const scene = this.getScene();\r\n if (scene) {\r\n if (!scene.useDelayedTextureLoading) {\r\n this._loadTexture();\r\n } else {\r\n this.delayLoadState = Constants.DELAYLOADSTATE_NOTLOADED;\r\n }\r\n } else {\r\n this._loadTexture();\r\n }\r\n } else {\r\n this._triggerOnLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Fires the onload event from the constructor if requested.\r\n */\r\n private _triggerOnLoad(): void {\r\n if (this._onLoad) {\r\n this._onLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Returns the texture matrix used in most of the material.\r\n * This is not used in color grading but keep for troubleshooting purpose (easily swap diffuse by colorgrading to look in).\r\n */\r\n public getTextureMatrix(): Matrix {\r\n return this._textureMatrix;\r\n }\r\n\r\n /**\r\n * Occurs when the file being loaded is a .3dl LUT file.\r\n */\r\n private _load3dlTexture() {\r\n const engine = this._getEngine()!;\r\n let texture: InternalTexture;\r\n if (!engine._features.support3DTextures) {\r\n texture = engine.createRawTexture(\r\n null,\r\n 1,\r\n 1,\r\n Constants.TEXTUREFORMAT_RGBA,\r\n false,\r\n false,\r\n Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n null,\r\n Constants.TEXTURETYPE_UNSIGNED_INT\r\n );\r\n } else {\r\n texture = engine.createRawTexture3D(\r\n null,\r\n 1,\r\n 1,\r\n 1,\r\n Constants.TEXTUREFORMAT_RGBA,\r\n false,\r\n false,\r\n Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n null,\r\n Constants.TEXTURETYPE_UNSIGNED_INT\r\n );\r\n }\r\n\r\n this._texture = texture;\r\n this._texture.isReady = false;\r\n\r\n this.isCube = false;\r\n this.is3D = engine._features.support3DTextures;\r\n this.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this.wrapR = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this.anisotropicFilteringLevel = 1;\r\n\r\n const callback = (text: string | ArrayBuffer) => {\r\n if (typeof text !== \"string\") {\r\n return;\r\n }\r\n\r\n let data: Nullable<Uint8Array> = null;\r\n let tempData: Nullable<Float32Array> = null;\r\n\r\n let line: string;\r\n const lines = text.split(\"\\n\");\r\n let size = 0,\r\n pixelIndexW = 0,\r\n pixelIndexH = 0,\r\n pixelIndexSlice = 0;\r\n let maxColor = 0;\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n line = lines[i];\r\n\r\n if (!ColorGradingTexture._NoneEmptyLineRegex.test(line)) {\r\n continue;\r\n }\r\n\r\n if (line.indexOf(\"#\") === 0) {\r\n continue;\r\n }\r\n\r\n const words = line.split(\" \");\r\n if (size === 0) {\r\n // Number of space + one\r\n size = words.length;\r\n data = new Uint8Array(size * size * size * 4); // volume texture of side size and rgb 8\r\n tempData = new Float32Array(size * size * size * 4);\r\n continue;\r\n }\r\n\r\n if (size != 0) {\r\n const r = Math.max(parseInt(words[0]), 0);\r\n const g = Math.max(parseInt(words[1]), 0);\r\n const b = Math.max(parseInt(words[2]), 0);\r\n\r\n maxColor = Math.max(r, maxColor);\r\n maxColor = Math.max(g, maxColor);\r\n maxColor = Math.max(b, maxColor);\r\n\r\n const pixelStorageIndex = (pixelIndexW + pixelIndexSlice * size + pixelIndexH * size * size) * 4;\r\n\r\n if (tempData) {\r\n tempData[pixelStorageIndex + 0] = r;\r\n tempData[pixelStorageIndex + 1] = g;\r\n tempData[pixelStorageIndex + 2] = b;\r\n }\r\n\r\n // Keep for reference in case of back compat problems.\r\n // pixelIndexSlice++;\r\n // if (pixelIndexSlice % size == 0) {\r\n // pixelIndexH++;\r\n // pixelIndexSlice = 0;\r\n // if (pixelIndexH % size == 0) {\r\n // pixelIndexW++;\r\n // pixelIndexH = 0;\r\n // }\r\n // }\r\n\r\n pixelIndexH++;\r\n if (pixelIndexH % size == 0) {\r\n pixelIndexSlice++;\r\n pixelIndexH = 0;\r\n if (pixelIndexSlice % size == 0) {\r\n pixelIndexW++;\r\n pixelIndexSlice = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (tempData && data) {\r\n for (let i = 0; i < tempData.length; i++) {\r\n if (i > 0 && (i + 1) % 4 === 0) {\r\n data[i] = 255;\r\n } else {\r\n const value = tempData[i];\r\n data[i] = (value / maxColor) * 255;\r\n }\r\n }\r\n }\r\n\r\n if (texture.is3D) {\r\n texture.updateSize(size, size, size);\r\n engine.updateRawTexture3D(texture, data, Constants.TEXTUREFORMAT_RGBA, false);\r\n } else {\r\n texture.updateSize(size * size, size);\r\n engine.updateRawTexture(texture, data, Constants.TEXTUREFORMAT_RGBA, false);\r\n }\r\n\r\n texture.isReady = true;\r\n this._triggerOnLoad();\r\n };\r\n\r\n const scene = this.getScene();\r\n if (scene) {\r\n scene._loadFile(this.url, callback);\r\n } else {\r\n engine._loadFile(this.url, callback);\r\n }\r\n\r\n return this._texture;\r\n }\r\n\r\n /**\r\n * Starts the loading process of the texture.\r\n */\r\n private _loadTexture() {\r\n if (this.url && this.url.toLocaleLowerCase().indexOf(\".3dl\") == this.url.length - 4) {\r\n this._load3dlTexture();\r\n }\r\n }\r\n\r\n /**\r\n * Clones the color grading texture.\r\n */\r\n public clone(): ColorGradingTexture {\r\n const newTexture = new ColorGradingTexture(this.url, this.getScene() || this._getEngine()!);\r\n\r\n // Base texture\r\n newTexture.level = this.level;\r\n\r\n return newTexture;\r\n }\r\n\r\n /**\r\n * Called during delayed load for textures.\r\n */\r\n public delayLoad(): void {\r\n if (this.delayLoadState !== Constants.DELAYLOADSTATE_NOTLOADED) {\r\n return;\r\n }\r\n\r\n this.delayLoadState = Constants.DELAYLOADSTATE_LOADED;\r\n this._texture = this._getFromCache(this.url, true);\r\n\r\n if (!this._texture) {\r\n this._loadTexture();\r\n }\r\n }\r\n\r\n /**\r\n * Parses a color grading texture serialized by Babylon.\r\n * @param parsedTexture The texture information being parsedTexture\r\n * @param scene The scene to load the texture in\r\n * @returns A color grading texture\r\n */\r\n public static Parse(parsedTexture: any, scene: Scene): Nullable<ColorGradingTexture> {\r\n let texture = null;\r\n if (parsedTexture.name && !parsedTexture.isRenderTarget) {\r\n texture = new ColorGradingTexture(parsedTexture.name, scene);\r\n texture.name = parsedTexture.name;\r\n texture.level = parsedTexture.level;\r\n }\r\n return texture;\r\n }\r\n\r\n /**\r\n * Serializes the LUT texture to json format.\r\n */\r\n public serialize(): any {\r\n if (!this.name) {\r\n return null;\r\n }\r\n\r\n const serializationObject: any = {};\r\n serializationObject.name = this.name;\r\n serializationObject.level = this.level;\r\n serializationObject.customType = \"BABYLON.ColorGradingTexture\";\r\n\r\n return serializationObject;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorGradingTexture\", ColorGradingTexture);\r\n"]}
1
+ {"version":3,"file":"colorGradingTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/colorGradingTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Matrix } from \"../../Maths/math.vector\";\r\nimport type { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\nimport type { ThinEngine } from \"../../Engines/thinEngine\";\r\n\r\n// Ensures Raw texture are included\r\nimport \"../../Engines/Extensions/engine.rawTexture\";\r\n\r\n/**\r\n * This represents a color grading texture. This acts as a lookup table LUT, useful during post process\r\n * It can help converting any input color in a desired output one. This can then be used to create effects\r\n * from sepia, black and white to sixties or futuristic rendering...\r\n *\r\n * The only supported format is currently 3dl.\r\n * More information on LUT: https://en.wikipedia.org/wiki/3D_lookup_table\r\n */\r\nexport class ColorGradingTexture extends BaseTexture {\r\n /**\r\n * The texture URL.\r\n */\r\n public url: string;\r\n\r\n /**\r\n * Empty line regex stored for GC.\r\n */\r\n private static _NoneEmptyLineRegex = /\\S+/;\r\n\r\n private _textureMatrix: Matrix;\r\n private _onLoad: Nullable<() => void>;\r\n\r\n /**\r\n * Instantiates a ColorGradingTexture from the following parameters.\r\n *\r\n * @param url The location of the color grading data (currently only supporting 3dl)\r\n * @param sceneOrEngine The scene or engine the texture will be used in\r\n * @param onLoad defines a callback triggered when the texture has been loaded\r\n */\r\n constructor(url: string, sceneOrEngine: Scene | ThinEngine, onLoad: Nullable<() => void> = null) {\r\n super(sceneOrEngine);\r\n\r\n if (!url) {\r\n return;\r\n }\r\n\r\n this._textureMatrix = Matrix.Identity();\r\n this.name = url;\r\n this.url = url;\r\n this._onLoad = onLoad;\r\n\r\n this._texture = this._getFromCache(url, true);\r\n\r\n if (!this._texture) {\r\n const scene = this.getScene();\r\n if (scene) {\r\n if (!scene.useDelayedTextureLoading) {\r\n this._loadTexture();\r\n } else {\r\n this.delayLoadState = Constants.DELAYLOADSTATE_NOTLOADED;\r\n }\r\n } else {\r\n this._loadTexture();\r\n }\r\n } else {\r\n this._triggerOnLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Fires the onload event from the constructor if requested.\r\n */\r\n private _triggerOnLoad(): void {\r\n if (this._onLoad) {\r\n this._onLoad();\r\n }\r\n }\r\n\r\n /**\r\n * @returns the texture matrix used in most of the material.\r\n * This is not used in color grading but keep for troubleshooting purpose (easily swap diffuse by colorgrading to look in).\r\n */\r\n public getTextureMatrix(): Matrix {\r\n return this._textureMatrix;\r\n }\r\n\r\n /**\r\n * Occurs when the file being loaded is a .3dl LUT file.\r\n * @returns the 3D LUT texture\r\n */\r\n private _load3dlTexture() {\r\n const engine = this._getEngine()!;\r\n let texture: InternalTexture;\r\n if (!engine._features.support3DTextures) {\r\n texture = engine.createRawTexture(\r\n null,\r\n 1,\r\n 1,\r\n Constants.TEXTUREFORMAT_RGBA,\r\n false,\r\n false,\r\n Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n null,\r\n Constants.TEXTURETYPE_UNSIGNED_INT\r\n );\r\n } else {\r\n texture = engine.createRawTexture3D(\r\n null,\r\n 1,\r\n 1,\r\n 1,\r\n Constants.TEXTUREFORMAT_RGBA,\r\n false,\r\n false,\r\n Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n null,\r\n Constants.TEXTURETYPE_UNSIGNED_INT\r\n );\r\n }\r\n\r\n this._texture = texture;\r\n this._texture.isReady = false;\r\n\r\n this.isCube = false;\r\n this.is3D = engine._features.support3DTextures;\r\n this.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this.wrapR = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this.anisotropicFilteringLevel = 1;\r\n\r\n const callback = (text: string | ArrayBuffer) => {\r\n if (typeof text !== \"string\") {\r\n return;\r\n }\r\n\r\n let data: Nullable<Uint8Array> = null;\r\n let tempData: Nullable<Float32Array> = null;\r\n\r\n let line: string;\r\n const lines = text.split(\"\\n\");\r\n let size = 0,\r\n pixelIndexW = 0,\r\n pixelIndexH = 0,\r\n pixelIndexSlice = 0;\r\n let maxColor = 0;\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n line = lines[i];\r\n\r\n if (!ColorGradingTexture._NoneEmptyLineRegex.test(line)) {\r\n continue;\r\n }\r\n\r\n if (line.indexOf(\"#\") === 0) {\r\n continue;\r\n }\r\n\r\n const words = line.split(\" \");\r\n if (size === 0) {\r\n // Number of space + one\r\n size = words.length;\r\n data = new Uint8Array(size * size * size * 4); // volume texture of side size and rgb 8\r\n tempData = new Float32Array(size * size * size * 4);\r\n continue;\r\n }\r\n\r\n if (size != 0) {\r\n const r = Math.max(parseInt(words[0]), 0);\r\n const g = Math.max(parseInt(words[1]), 0);\r\n const b = Math.max(parseInt(words[2]), 0);\r\n\r\n maxColor = Math.max(r, maxColor);\r\n maxColor = Math.max(g, maxColor);\r\n maxColor = Math.max(b, maxColor);\r\n\r\n const pixelStorageIndex = (pixelIndexW + pixelIndexSlice * size + pixelIndexH * size * size) * 4;\r\n\r\n if (tempData) {\r\n tempData[pixelStorageIndex + 0] = r;\r\n tempData[pixelStorageIndex + 1] = g;\r\n tempData[pixelStorageIndex + 2] = b;\r\n }\r\n\r\n // Keep for reference in case of back compat problems.\r\n // pixelIndexSlice++;\r\n // if (pixelIndexSlice % size == 0) {\r\n // pixelIndexH++;\r\n // pixelIndexSlice = 0;\r\n // if (pixelIndexH % size == 0) {\r\n // pixelIndexW++;\r\n // pixelIndexH = 0;\r\n // }\r\n // }\r\n\r\n pixelIndexH++;\r\n if (pixelIndexH % size == 0) {\r\n pixelIndexSlice++;\r\n pixelIndexH = 0;\r\n if (pixelIndexSlice % size == 0) {\r\n pixelIndexW++;\r\n pixelIndexSlice = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (tempData && data) {\r\n for (let i = 0; i < tempData.length; i++) {\r\n if (i > 0 && (i + 1) % 4 === 0) {\r\n data[i] = 255;\r\n } else {\r\n const value = tempData[i];\r\n data[i] = (value / maxColor) * 255;\r\n }\r\n }\r\n }\r\n\r\n if (texture.is3D) {\r\n texture.updateSize(size, size, size);\r\n engine.updateRawTexture3D(texture, data, Constants.TEXTUREFORMAT_RGBA, false);\r\n } else {\r\n texture.updateSize(size * size, size);\r\n engine.updateRawTexture(texture, data, Constants.TEXTUREFORMAT_RGBA, false);\r\n }\r\n\r\n texture.isReady = true;\r\n this._triggerOnLoad();\r\n };\r\n\r\n const scene = this.getScene();\r\n if (scene) {\r\n scene._loadFile(this.url, callback);\r\n } else {\r\n engine._loadFile(this.url, callback);\r\n }\r\n\r\n return this._texture;\r\n }\r\n\r\n /**\r\n * Starts the loading process of the texture.\r\n */\r\n private _loadTexture() {\r\n if (this.url && this.url.toLocaleLowerCase().indexOf(\".3dl\") == this.url.length - 4) {\r\n this._load3dlTexture();\r\n }\r\n }\r\n\r\n /**\r\n * Clones the color grading texture.\r\n * @returns the cloned texture\r\n */\r\n public clone(): ColorGradingTexture {\r\n const newTexture = new ColorGradingTexture(this.url, this.getScene() || this._getEngine()!);\r\n\r\n // Base texture\r\n newTexture.level = this.level;\r\n\r\n return newTexture;\r\n }\r\n\r\n /**\r\n * Called during delayed load for textures.\r\n */\r\n public delayLoad(): void {\r\n if (this.delayLoadState !== Constants.DELAYLOADSTATE_NOTLOADED) {\r\n return;\r\n }\r\n\r\n this.delayLoadState = Constants.DELAYLOADSTATE_LOADED;\r\n this._texture = this._getFromCache(this.url, true);\r\n\r\n if (!this._texture) {\r\n this._loadTexture();\r\n }\r\n }\r\n\r\n /**\r\n * Parses a color grading texture serialized by Babylon.\r\n * @param parsedTexture The texture information being parsedTexture\r\n * @param scene The scene to load the texture in\r\n * @returns A color grading texture\r\n */\r\n public static Parse(parsedTexture: any, scene: Scene): Nullable<ColorGradingTexture> {\r\n let texture = null;\r\n if (parsedTexture.name && !parsedTexture.isRenderTarget) {\r\n texture = new ColorGradingTexture(parsedTexture.name, scene);\r\n texture.name = parsedTexture.name;\r\n texture.level = parsedTexture.level;\r\n }\r\n return texture;\r\n }\r\n\r\n /**\r\n * Serializes the LUT texture to json format.\r\n * @returns The JSON representation of the texture\r\n */\r\n public serialize(): any {\r\n if (!this.name) {\r\n return null;\r\n }\r\n\r\n const serializationObject: any = {};\r\n serializationObject.name = this.name;\r\n serializationObject.level = this.level;\r\n serializationObject.customType = \"BABYLON.ColorGradingTexture\";\r\n\r\n return serializationObject;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorGradingTexture\", ColorGradingTexture);\r\n"]}
@@ -33,6 +33,7 @@ export declare class EquiRectangularCubeTexture extends BaseTexture {
33
33
  * (the PBR material requires those textures in linear space, but the standard material would require them in Gamma space)
34
34
  * @param onLoad — defines a callback called when texture is loaded
35
35
  * @param onError — defines a callback called if there is an error
36
+ * @param supersample — defines if texture must be supersampled (default: false)
36
37
  */
37
38
  constructor(url: string, scene: Scene, size: number, noMipmap?: boolean, gammaSpace?: boolean, onLoad?: Nullable<() => void>, onError?: Nullable<(message?: string, exception?: any) => void>, supersample?: boolean);
38
39
  /**
@@ -19,6 +19,7 @@ export class EquiRectangularCubeTexture extends BaseTexture {
19
19
  * (the PBR material requires those textures in linear space, but the standard material would require them in Gamma space)
20
20
  * @param onLoad — defines a callback called when texture is loaded
21
21
  * @param onError — defines a callback called if there is an error
22
+ * @param supersample — defines if texture must be supersampled (default: false)
22
23
  */
23
24
  constructor(url, scene, size, noMipmap = false, gammaSpace = true, onLoad = null, onError = null, supersample = false) {
24
25
  super(scene);
@@ -1 +1 @@
1
- {"version":3,"file":"equiRectangularCubeTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/equiRectangularCubeTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { PanoramaToCubeMapTools } from \"../../Misc/HighDynamicRange/panoramaToCubemap\";\r\nimport { BaseTexture } from \"./baseTexture\";\r\nimport { Texture } from \"./texture\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport \"../../Engines/Extensions/engine.rawTexture\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { LoadImage } from \"../../Misc/fileTools\";\r\n\r\n/**\r\n * This represents a texture coming from an equirectangular image supported by the web browser canvas.\r\n */\r\nexport class EquiRectangularCubeTexture extends BaseTexture {\r\n /** The six faces of the cube. */\r\n private static _FacesMapping = [\"right\", \"left\", \"up\", \"down\", \"front\", \"back\"];\r\n\r\n private _noMipmap: boolean;\r\n private _onLoad: Nullable<() => void> = null;\r\n private _onError: Nullable<() => void> = null;\r\n\r\n /** The size of the cubemap. */\r\n private _size: number;\r\n\r\n /** Whether to supersample the input image */\r\n private _supersample: boolean;\r\n\r\n /** The buffer of the image. */\r\n private _buffer: ArrayBuffer;\r\n\r\n /** The width of the input image. */\r\n private _width: number;\r\n\r\n /** The height of the input image. */\r\n private _height: number;\r\n\r\n /** The URL to the image. */\r\n public url: string;\r\n\r\n /**\r\n * Instantiates an EquiRectangularCubeTexture from the following parameters.\r\n * @param url The location of the image\r\n * @param scene The scene the texture will be used in\r\n * @param size The cubemap desired size (the more it increases the longer the generation will be)\r\n * @param noMipmap Forces to not generate the mipmap if true\r\n * @param gammaSpace Specifies if the texture will be used in gamma or linear space\r\n * (the PBR material requires those textures in linear space, but the standard material would require them in Gamma space)\r\n * @param onLoad — defines a callback called when texture is loaded\r\n * @param onError — defines a callback called if there is an error\r\n */\r\n constructor(\r\n url: string,\r\n scene: Scene,\r\n size: number,\r\n noMipmap: boolean = false,\r\n gammaSpace: boolean = true,\r\n onLoad: Nullable<() => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n supersample = false\r\n ) {\r\n super(scene);\r\n\r\n if (!url) {\r\n throw new Error(\"Image url is not set\");\r\n }\r\n\r\n this._coordinatesMode = Texture.CUBIC_MODE;\r\n this.name = url;\r\n this.url = url;\r\n this._size = size;\r\n this._supersample = supersample;\r\n this._noMipmap = noMipmap;\r\n this.gammaSpace = gammaSpace;\r\n this._onLoad = onLoad;\r\n this._onError = onError;\r\n\r\n this.hasAlpha = false;\r\n this.isCube = true;\r\n\r\n this._texture = this._getFromCache(url, this._noMipmap, undefined, undefined, undefined, this.isCube);\r\n\r\n if (!this._texture) {\r\n if (!scene.useDelayedTextureLoading) {\r\n this._loadImage(() => this._loadTexture(), this._onError);\r\n } else {\r\n this.delayLoadState = Constants.DELAYLOADSTATE_NOTLOADED;\r\n }\r\n } else if (onLoad) {\r\n if (this._texture.isReady) {\r\n Tools.SetImmediate(() => onLoad());\r\n } else {\r\n this._texture.onLoadedObservable.add(onLoad);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Load the image data, by putting the image on a canvas and extracting its buffer.\r\n * @param loadTextureCallback\r\n * @param onError\r\n */\r\n private _loadImage(loadTextureCallback: () => void, onError: Nullable<(message?: string, exception?: any) => void>): void {\r\n const scene = this.getScene();\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n // Create texture before loading\r\n const texture = scene\r\n .getEngine()\r\n .createRawCubeTexture(\r\n null,\r\n this._size,\r\n Constants.TEXTUREFORMAT_RGB,\r\n scene.getEngine().getCaps().textureFloat ? Constants.TEXTURETYPE_FLOAT : Constants.TEXTURETYPE_UNSIGNED_INTEGER,\r\n this._noMipmap,\r\n false,\r\n Constants.TEXTURE_TRILINEAR_SAMPLINGMODE\r\n );\r\n texture.generateMipMaps = !this._noMipmap;\r\n scene.addPendingData(texture);\r\n texture.url = this.url;\r\n texture.isReady = false;\r\n scene.getEngine()._internalTexturesCache.push(texture);\r\n this._texture = texture;\r\n\r\n const canvas = document.createElement(\"canvas\");\r\n LoadImage(\r\n this.url,\r\n (image) => {\r\n this._width = image.width;\r\n this._height = image.height;\r\n canvas.width = this._width;\r\n canvas.height = this._height;\r\n\r\n const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\r\n ctx.drawImage(image, 0, 0);\r\n\r\n const imageData = ctx.getImageData(0, 0, image.width, image.height);\r\n this._buffer = imageData.data.buffer as ArrayBuffer;\r\n\r\n canvas.remove();\r\n loadTextureCallback();\r\n },\r\n (_, e) => {\r\n scene.removePendingData(texture);\r\n if (onError) {\r\n onError(`${this.getClassName()} could not be loaded`, e);\r\n }\r\n },\r\n scene ? scene.offlineProvider : null\r\n );\r\n }\r\n\r\n /**\r\n * Convert the image buffer into a cubemap and create a CubeTexture.\r\n */\r\n private _loadTexture(): void {\r\n const scene = this.getScene();\r\n const callback = (): ArrayBufferView[] => {\r\n const imageData = this._getFloat32ArrayFromArrayBuffer(this._buffer);\r\n\r\n // Extract the raw linear data.\r\n const data = PanoramaToCubeMapTools.ConvertPanoramaToCubemap(imageData, this._width, this._height, this._size, this._supersample);\r\n\r\n const results = [];\r\n\r\n // Push each faces.\r\n for (let i = 0; i < 6; i++) {\r\n const dataFace = (data as any)[EquiRectangularCubeTexture._FacesMapping[i]];\r\n results.push(dataFace);\r\n }\r\n\r\n return results;\r\n };\r\n\r\n if (!scene) {\r\n return;\r\n }\r\n const faceDataArrays = callback();\r\n\r\n const texture = this._texture!;\r\n scene.getEngine().updateRawCubeTexture(texture, faceDataArrays, texture.format, texture.type, texture.invertY);\r\n texture.isReady = true;\r\n scene.removePendingData(texture);\r\n\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (this._onLoad) {\r\n this._onLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Convert the ArrayBuffer into a Float32Array and drop the transparency channel.\r\n * @param buffer The ArrayBuffer that should be converted.\r\n * @returns The buffer as Float32Array.\r\n */\r\n private _getFloat32ArrayFromArrayBuffer(buffer: ArrayBuffer): Float32Array {\r\n const dataView = new DataView(buffer);\r\n const floatImageData = new Float32Array((buffer.byteLength * 3) / 4);\r\n\r\n let k = 0;\r\n for (let i = 0; i < buffer.byteLength; i++) {\r\n // We drop the transparency channel, because we do not need/want it\r\n if ((i + 1) % 4 !== 0) {\r\n floatImageData[k++] = dataView.getUint8(i) / 255;\r\n }\r\n }\r\n\r\n return floatImageData;\r\n }\r\n\r\n /**\r\n * Get the current class name of the texture useful for serialization or dynamic coding.\r\n * @returns \"EquiRectangularCubeTexture\"\r\n */\r\n public getClassName(): string {\r\n return \"EquiRectangularCubeTexture\";\r\n }\r\n\r\n /**\r\n * Create a clone of the current EquiRectangularCubeTexture and return it.\r\n * @returns A clone of the current EquiRectangularCubeTexture.\r\n */\r\n public clone(): EquiRectangularCubeTexture {\r\n const scene = this.getScene();\r\n if (!scene) {\r\n return this;\r\n }\r\n\r\n const newTexture = new EquiRectangularCubeTexture(this.url, scene, this._size, this._noMipmap, this.gammaSpace);\r\n\r\n // Base texture\r\n newTexture.level = this.level;\r\n newTexture.wrapU = this.wrapU;\r\n newTexture.wrapV = this.wrapV;\r\n newTexture.coordinatesIndex = this.coordinatesIndex;\r\n newTexture.coordinatesMode = this.coordinatesMode;\r\n\r\n return newTexture;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"equiRectangularCubeTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/equiRectangularCubeTexture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,4CAA4C,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,WAAW;IA0BvD;;;;;;;;;;;OAWG;IACH,YACI,GAAW,EACX,KAAY,EACZ,IAAY,EACZ,WAAoB,KAAK,EACzB,aAAsB,IAAI,EAC1B,SAA+B,IAAI,EACnC,UAAiE,IAAI,EACrE,WAAW,GAAG,KAAK;QAEnB,KAAK,CAAC,KAAK,CAAC,CAAC;QA3CT,YAAO,GAAyB,IAAI,CAAC;QACrC,aAAQ,GAAyB,IAAI,CAAC;QA4C1C,IAAI,CAAC,GAAG,EAAE;YACN,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE;gBACjC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC7D;iBAAM;gBACH,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,wBAAwB,CAAC;aAC5D;SACJ;aAAM,IAAI,MAAM,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;gBACvB,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;aACtC;iBAAM;gBACH,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAChD;SACJ;IACL,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,mBAA+B,EAAE,OAA8D;QAC9G,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,KAAK;aAChB,SAAS,EAAE;aACX,oBAAoB,CACjB,IAAI,EACJ,IAAI,CAAC,KAAK,EACV,SAAS,CAAC,iBAAiB,EAC3B,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,4BAA4B,EAC/G,IAAI,CAAC,SAAS,EACd,KAAK,EACL,SAAS,CAAC,8BAA8B,CAC3C,CAAC;QACN,OAAO,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1C,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACvB,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;QACxB,KAAK,CAAC,SAAS,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,SAAS,CACL,IAAI,CAAC,GAAG,EACR,CAAC,KAAK,EAAE,EAAE;YACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAE7B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAA6B,CAAC;YAChE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE3B,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAqB,CAAC;YAEpD,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,mBAAmB,EAAE,CAAC;QAC1B,CAAC,EACD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACL,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;aAC5D;QACL,CAAC,EACD,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CACvC,CAAC;IACN,CAAC;IAED;;OAEG;IACK,YAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAsB,EAAE;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAErE,+BAA+B;YAC/B,MAAM,IAAI,GAAG,sBAAsB,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAElI,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,mBAAmB;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,MAAM,QAAQ,GAAI,IAAY,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5E,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1B;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QACD,MAAM,cAAc,GAAG,QAAQ,EAAE,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAS,CAAC;QAC/B,KAAK,CAAC,SAAS,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/G,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;IACL,CAAC;IAED;;;;OAIG;IACK,+BAA+B,CAAC,MAAmB;QACvD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;YACxC,mEAAmE;YACnE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACnB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;aACpD;SACJ;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,4BAA4B,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,KAAK;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,IAAI,CAAC;SACf;QAED,MAAM,UAAU,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhH,eAAe;QACf,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACpD,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAElD,OAAO,UAAU,CAAC;IACtB,CAAC;;AArOD,iCAAiC;AAClB,wCAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,AAAnD,CAAoD","sourcesContent":["import { PanoramaToCubeMapTools } from \"../../Misc/HighDynamicRange/panoramaToCubemap\";\r\nimport { BaseTexture } from \"./baseTexture\";\r\nimport { Texture } from \"./texture\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport \"../../Engines/Extensions/engine.rawTexture\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { LoadImage } from \"../../Misc/fileTools\";\r\n\r\n/**\r\n * This represents a texture coming from an equirectangular image supported by the web browser canvas.\r\n */\r\nexport class EquiRectangularCubeTexture extends BaseTexture {\r\n /** The six faces of the cube. */\r\n private static _FacesMapping = [\"right\", \"left\", \"up\", \"down\", \"front\", \"back\"];\r\n\r\n private _noMipmap: boolean;\r\n private _onLoad: Nullable<() => void> = null;\r\n private _onError: Nullable<() => void> = null;\r\n\r\n /** The size of the cubemap. */\r\n private _size: number;\r\n\r\n /** Whether to supersample the input image */\r\n private _supersample: boolean;\r\n\r\n /** The buffer of the image. */\r\n private _buffer: ArrayBuffer;\r\n\r\n /** The width of the input image. */\r\n private _width: number;\r\n\r\n /** The height of the input image. */\r\n private _height: number;\r\n\r\n /** The URL to the image. */\r\n public url: string;\r\n\r\n /**\r\n * Instantiates an EquiRectangularCubeTexture from the following parameters.\r\n * @param url The location of the image\r\n * @param scene The scene the texture will be used in\r\n * @param size The cubemap desired size (the more it increases the longer the generation will be)\r\n * @param noMipmap Forces to not generate the mipmap if true\r\n * @param gammaSpace Specifies if the texture will be used in gamma or linear space\r\n * (the PBR material requires those textures in linear space, but the standard material would require them in Gamma space)\r\n * @param onLoad — defines a callback called when texture is loaded\r\n * @param onError — defines a callback called if there is an error\r\n * @param supersample — defines if texture must be supersampled (default: false)\r\n */\r\n constructor(\r\n url: string,\r\n scene: Scene,\r\n size: number,\r\n noMipmap: boolean = false,\r\n gammaSpace: boolean = true,\r\n onLoad: Nullable<() => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n supersample = false\r\n ) {\r\n super(scene);\r\n\r\n if (!url) {\r\n throw new Error(\"Image url is not set\");\r\n }\r\n\r\n this._coordinatesMode = Texture.CUBIC_MODE;\r\n this.name = url;\r\n this.url = url;\r\n this._size = size;\r\n this._supersample = supersample;\r\n this._noMipmap = noMipmap;\r\n this.gammaSpace = gammaSpace;\r\n this._onLoad = onLoad;\r\n this._onError = onError;\r\n\r\n this.hasAlpha = false;\r\n this.isCube = true;\r\n\r\n this._texture = this._getFromCache(url, this._noMipmap, undefined, undefined, undefined, this.isCube);\r\n\r\n if (!this._texture) {\r\n if (!scene.useDelayedTextureLoading) {\r\n this._loadImage(() => this._loadTexture(), this._onError);\r\n } else {\r\n this.delayLoadState = Constants.DELAYLOADSTATE_NOTLOADED;\r\n }\r\n } else if (onLoad) {\r\n if (this._texture.isReady) {\r\n Tools.SetImmediate(() => onLoad());\r\n } else {\r\n this._texture.onLoadedObservable.add(onLoad);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Load the image data, by putting the image on a canvas and extracting its buffer.\r\n * @param loadTextureCallback\r\n * @param onError\r\n */\r\n private _loadImage(loadTextureCallback: () => void, onError: Nullable<(message?: string, exception?: any) => void>): void {\r\n const scene = this.getScene();\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n // Create texture before loading\r\n const texture = scene\r\n .getEngine()\r\n .createRawCubeTexture(\r\n null,\r\n this._size,\r\n Constants.TEXTUREFORMAT_RGB,\r\n scene.getEngine().getCaps().textureFloat ? Constants.TEXTURETYPE_FLOAT : Constants.TEXTURETYPE_UNSIGNED_INTEGER,\r\n this._noMipmap,\r\n false,\r\n Constants.TEXTURE_TRILINEAR_SAMPLINGMODE\r\n );\r\n texture.generateMipMaps = !this._noMipmap;\r\n scene.addPendingData(texture);\r\n texture.url = this.url;\r\n texture.isReady = false;\r\n scene.getEngine()._internalTexturesCache.push(texture);\r\n this._texture = texture;\r\n\r\n const canvas = document.createElement(\"canvas\");\r\n LoadImage(\r\n this.url,\r\n (image) => {\r\n this._width = image.width;\r\n this._height = image.height;\r\n canvas.width = this._width;\r\n canvas.height = this._height;\r\n\r\n const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\r\n ctx.drawImage(image, 0, 0);\r\n\r\n const imageData = ctx.getImageData(0, 0, image.width, image.height);\r\n this._buffer = imageData.data.buffer as ArrayBuffer;\r\n\r\n canvas.remove();\r\n loadTextureCallback();\r\n },\r\n (_, e) => {\r\n scene.removePendingData(texture);\r\n if (onError) {\r\n onError(`${this.getClassName()} could not be loaded`, e);\r\n }\r\n },\r\n scene ? scene.offlineProvider : null\r\n );\r\n }\r\n\r\n /**\r\n * Convert the image buffer into a cubemap and create a CubeTexture.\r\n */\r\n private _loadTexture(): void {\r\n const scene = this.getScene();\r\n const callback = (): ArrayBufferView[] => {\r\n const imageData = this._getFloat32ArrayFromArrayBuffer(this._buffer);\r\n\r\n // Extract the raw linear data.\r\n const data = PanoramaToCubeMapTools.ConvertPanoramaToCubemap(imageData, this._width, this._height, this._size, this._supersample);\r\n\r\n const results = [];\r\n\r\n // Push each faces.\r\n for (let i = 0; i < 6; i++) {\r\n const dataFace = (data as any)[EquiRectangularCubeTexture._FacesMapping[i]];\r\n results.push(dataFace);\r\n }\r\n\r\n return results;\r\n };\r\n\r\n if (!scene) {\r\n return;\r\n }\r\n const faceDataArrays = callback();\r\n\r\n const texture = this._texture!;\r\n scene.getEngine().updateRawCubeTexture(texture, faceDataArrays, texture.format, texture.type, texture.invertY);\r\n texture.isReady = true;\r\n scene.removePendingData(texture);\r\n\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (this._onLoad) {\r\n this._onLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Convert the ArrayBuffer into a Float32Array and drop the transparency channel.\r\n * @param buffer The ArrayBuffer that should be converted.\r\n * @returns The buffer as Float32Array.\r\n */\r\n private _getFloat32ArrayFromArrayBuffer(buffer: ArrayBuffer): Float32Array {\r\n const dataView = new DataView(buffer);\r\n const floatImageData = new Float32Array((buffer.byteLength * 3) / 4);\r\n\r\n let k = 0;\r\n for (let i = 0; i < buffer.byteLength; i++) {\r\n // We drop the transparency channel, because we do not need/want it\r\n if ((i + 1) % 4 !== 0) {\r\n floatImageData[k++] = dataView.getUint8(i) / 255;\r\n }\r\n }\r\n\r\n return floatImageData;\r\n }\r\n\r\n /**\r\n * Get the current class name of the texture useful for serialization or dynamic coding.\r\n * @returns \"EquiRectangularCubeTexture\"\r\n */\r\n public getClassName(): string {\r\n return \"EquiRectangularCubeTexture\";\r\n }\r\n\r\n /**\r\n * Create a clone of the current EquiRectangularCubeTexture and return it.\r\n * @returns A clone of the current EquiRectangularCubeTexture.\r\n */\r\n public clone(): EquiRectangularCubeTexture {\r\n const scene = this.getScene();\r\n if (!scene) {\r\n return this;\r\n }\r\n\r\n const newTexture = new EquiRectangularCubeTexture(this.url, scene, this._size, this._noMipmap, this.gammaSpace);\r\n\r\n // Base texture\r\n newTexture.level = this.level;\r\n newTexture.wrapU = this.wrapU;\r\n newTexture.wrapV = this.wrapV;\r\n newTexture.coordinatesIndex = this.coordinatesIndex;\r\n newTexture.coordinatesMode = this.coordinatesMode;\r\n\r\n return newTexture;\r\n }\r\n}\r\n"]}
@@ -72,8 +72,9 @@ export declare class HDRCubeTexture extends BaseTexture {
72
72
  * @param generateHarmonics Specifies whether you want to extract the polynomial harmonics during the generation process
73
73
  * @param gammaSpace Specifies if the texture will be use in gamma or linear space (the PBR material requires those texture in linear space, but the standard material would require them in Gamma space)
74
74
  * @param prefilterOnLoad Prefilters HDR texture to allow use of this texture as a PBR reflection texture.
75
- * @param onLoad
76
- * @param onError
75
+ * @param onLoad on success callback function
76
+ * @param onError on error callback function
77
+ * @param supersample Defines if texture must be supersampled (default: false)
77
78
  */
78
79
  constructor(url: string, sceneOrEngine: Scene | ThinEngine, size: number, noMipmap?: boolean, generateHarmonics?: boolean, gammaSpace?: boolean, prefilterOnLoad?: boolean, onLoad?: Nullable<() => void>, onError?: Nullable<(message?: string, exception?: any) => void>, supersample?: boolean);
79
80
  /**
@@ -73,8 +73,9 @@ export class HDRCubeTexture extends BaseTexture {
73
73
  * @param generateHarmonics Specifies whether you want to extract the polynomial harmonics during the generation process
74
74
  * @param gammaSpace Specifies if the texture will be use in gamma or linear space (the PBR material requires those texture in linear space, but the standard material would require them in Gamma space)
75
75
  * @param prefilterOnLoad Prefilters HDR texture to allow use of this texture as a PBR reflection texture.
76
- * @param onLoad
77
- * @param onError
76
+ * @param onLoad on success callback function
77
+ * @param onError on error callback function
78
+ * @param supersample Defines if texture must be supersampled (default: false)
78
79
  */
79
80
  constructor(url, sceneOrEngine, size, noMipmap = false, generateHarmonics = true, gammaSpace = false, prefilterOnLoad = false, onLoad = null, onError = null, supersample = false) {
80
81
  var _a;