@onerjs/core 8.56.4 → 9.0.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 (482) hide show
  1. package/Animations/animatable.core.js +36 -0
  2. package/Animations/animatable.core.js.map +1 -1
  3. package/Animations/animationGroup.pure.d.ts +61 -1
  4. package/Animations/animationGroup.pure.js +191 -2
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/index.d.ts +1 -0
  7. package/Animations/index.js +1 -0
  8. package/Animations/index.js.map +1 -1
  9. package/Animations/pure.d.ts +1 -0
  10. package/Animations/pure.js +1 -0
  11. package/Animations/pure.js.map +1 -1
  12. package/Animations/rootMotion.d.ts +560 -0
  13. package/Animations/rootMotion.js +1709 -0
  14. package/Animations/rootMotion.js.map +1 -0
  15. package/Animations/runtimeAnimation.d.ts +57 -0
  16. package/Animations/runtimeAnimation.js +127 -3
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Cameras/arcRotateCamera.pure.d.ts +2 -0
  19. package/Cameras/arcRotateCamera.pure.js +2 -0
  20. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  21. package/Cameras/targetCamera.pure.d.ts +2 -0
  22. package/Cameras/targetCamera.pure.js +7 -1
  23. package/Cameras/targetCamera.pure.js.map +1 -1
  24. package/Collisions/gpuPicker.js +5 -5
  25. package/Collisions/gpuPicker.js.map +1 -1
  26. package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
  27. package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
  28. package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
  29. package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
  30. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
  31. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
  32. package/Engines/Extensions/engine.multiRender.pure.js +63 -0
  33. package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
  34. package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
  35. package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
  36. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
  37. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
  38. package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
  39. package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
  40. package/Engines/Extensions/index.d.ts +1 -0
  41. package/Engines/Extensions/index.js +1 -0
  42. package/Engines/Extensions/index.js.map +1 -1
  43. package/Engines/Extensions/pure.d.ts +1 -1
  44. package/Engines/Extensions/pure.js +1 -1
  45. package/Engines/Extensions/pure.js.map +1 -1
  46. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
  47. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
  48. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
  49. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
  50. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
  51. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
  52. package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
  53. package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
  54. package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
  55. package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
  56. package/Engines/WebGPU/Extensions/index.d.ts +1 -0
  57. package/Engines/WebGPU/Extensions/index.js +1 -0
  58. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  59. package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
  60. package/Engines/WebGPU/Extensions/pure.js +1 -1
  61. package/Engines/WebGPU/Extensions/pure.js.map +1 -1
  62. package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
  63. package/Engines/WebGPU/webgpuBundleList.js +4 -0
  64. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  65. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
  66. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  67. package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
  68. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  69. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  70. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  71. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
  72. package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
  73. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
  74. package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
  75. package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
  76. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  77. package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
  78. package/Engines/WebGPU/webgpuTextureManager.js +286 -13
  79. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  80. package/Engines/abstractEngine.pure.d.ts +2 -0
  81. package/Engines/abstractEngine.pure.js +7 -3
  82. package/Engines/abstractEngine.pure.js.map +1 -1
  83. package/Engines/constants.d.ts +4 -0
  84. package/Engines/constants.js +4 -0
  85. package/Engines/constants.js.map +1 -1
  86. package/Engines/thinEngine.pure.d.ts +14 -0
  87. package/Engines/thinEngine.pure.js +48 -12
  88. package/Engines/thinEngine.pure.js.map +1 -1
  89. package/Engines/thinNativeEngine.pure.d.ts +1 -0
  90. package/Engines/thinNativeEngine.pure.js +7 -1
  91. package/Engines/thinNativeEngine.pure.js.map +1 -1
  92. package/Engines/thinWebGPUEngine.d.ts +4 -0
  93. package/Engines/thinWebGPUEngine.js +10 -1
  94. package/Engines/thinWebGPUEngine.js.map +1 -1
  95. package/Engines/webgpuEngine.pure.d.ts +5 -2
  96. package/Engines/webgpuEngine.pure.js +48 -13
  97. package/Engines/webgpuEngine.pure.js.map +1 -1
  98. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
  99. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
  100. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
  101. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
  102. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
  103. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
  104. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
  105. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
  106. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
  107. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
  108. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
  109. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
  110. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
  111. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
  112. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
  113. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
  114. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
  115. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
  116. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
  117. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
  118. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
  119. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
  120. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  121. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
  122. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
  123. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
  124. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
  125. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  126. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
  127. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
  128. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
  129. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
  130. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
  131. package/FlowGraph/flowGraph.d.ts +4 -0
  132. package/FlowGraph/flowGraph.js +38 -7
  133. package/FlowGraph/flowGraph.js.map +1 -1
  134. package/FlowGraph/flowGraphBlock.js +3 -0
  135. package/FlowGraph/flowGraphBlock.js.map +1 -1
  136. package/FlowGraph/flowGraphConnection.d.ts +7 -0
  137. package/FlowGraph/flowGraphConnection.js +7 -0
  138. package/FlowGraph/flowGraphConnection.js.map +1 -1
  139. package/FlowGraph/flowGraphContext.d.ts +2 -1
  140. package/FlowGraph/flowGraphContext.js +4 -3
  141. package/FlowGraph/flowGraphContext.js.map +1 -1
  142. package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
  143. package/FlowGraph/flowGraphCoordinator.js +47 -16
  144. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  145. package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
  146. package/FlowGraph/flowGraphEventBlock.js +7 -0
  147. package/FlowGraph/flowGraphEventBlock.js.map +1 -1
  148. package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
  149. package/FlowGraph/flowGraphHostResolver.js.map +1 -1
  150. package/FlowGraph/flowGraphParser.js +60 -2
  151. package/FlowGraph/flowGraphParser.js.map +1 -1
  152. package/FlowGraph/serialization.d.ts +2 -0
  153. package/FlowGraph/serialization.js +10 -22
  154. package/FlowGraph/serialization.js.map +1 -1
  155. package/FlowGraph/typeDefinitions.d.ts +8 -0
  156. package/FlowGraph/typeDefinitions.js.map +1 -1
  157. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
  158. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
  159. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
  160. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
  161. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
  162. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
  163. package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
  164. package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
  165. package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
  166. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
  167. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  168. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
  169. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
  170. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  171. package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
  172. package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  174. package/FrameGraph/Node/Blocks/index.js +1 -0
  175. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  176. package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
  177. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  178. package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
  179. package/FrameGraph/Node/Blocks/pure.js +1 -0
  180. package/FrameGraph/Node/Blocks/pure.js.map +1 -1
  181. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
  182. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
  183. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  184. package/FrameGraph/Node/nodeRenderGraph.js +1 -1
  185. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  186. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
  187. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
  188. package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
  189. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
  190. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
  191. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  192. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
  193. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
  194. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
  195. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
  196. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
  197. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  198. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
  199. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  200. package/FrameGraph/frameGraphObjectList.d.ts +6 -1
  201. package/FrameGraph/frameGraphObjectList.js.map +1 -1
  202. package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
  203. package/FrameGraph/frameGraphRenderContext.js +5 -5
  204. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  205. package/FrameGraph/index.d.ts +1 -0
  206. package/FrameGraph/index.js +1 -0
  207. package/FrameGraph/index.js.map +1 -1
  208. package/FrameGraph/pure.d.ts +1 -0
  209. package/FrameGraph/pure.js +1 -0
  210. package/FrameGraph/pure.js.map +1 -1
  211. package/Inputs/scene.inputManager.d.ts +4 -0
  212. package/Inputs/scene.inputManager.js +50 -8
  213. package/Inputs/scene.inputManager.js.map +1 -1
  214. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
  215. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
  216. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
  217. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  218. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
  219. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
  220. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  221. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
  222. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  223. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
  224. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  225. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
  226. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  227. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
  228. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  229. package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
  230. package/Materials/Node/nodeMaterial.pure.js +4 -0
  231. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  232. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
  233. package/Materials/Node/nodeMaterialBuildState.js +25 -3
  234. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  235. package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
  236. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
  237. package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
  238. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
  239. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  240. package/Materials/Textures/baseTexture.pure.js +3 -0
  241. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  242. package/Materials/Textures/cubeTexture.pure.js +1 -1
  243. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  244. package/Materials/Textures/internalTexture.d.ts +8 -1
  245. package/Materials/Textures/internalTexture.js +9 -2
  246. package/Materials/Textures/internalTexture.js.map +1 -1
  247. package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
  248. package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
  249. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  250. package/Materials/Textures/rawTexture3D.js +1 -1
  251. package/Materials/Textures/rawTexture3D.js.map +1 -1
  252. package/Materials/Textures/textureHelper.functions.d.ts +14 -0
  253. package/Materials/Textures/textureHelper.functions.js +24 -0
  254. package/Materials/Textures/textureHelper.functions.js.map +1 -1
  255. package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
  256. package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
  257. package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
  258. package/Materials/index.d.ts +1 -0
  259. package/Materials/index.js +1 -0
  260. package/Materials/index.js.map +1 -1
  261. package/Materials/materialHelper.geometryrendering.d.ts +46 -1
  262. package/Materials/materialHelper.geometryrendering.js +105 -8
  263. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  264. package/Materials/prepass.defines.d.ts +2 -0
  265. package/Materials/prepass.defines.js +2 -0
  266. package/Materials/prepass.defines.js.map +1 -1
  267. package/Materials/pure.d.ts +1 -0
  268. package/Materials/pure.js +1 -0
  269. package/Materials/pure.js.map +1 -1
  270. package/Materials/standardMaterial.pure.d.ts +2 -0
  271. package/Materials/standardMaterial.pure.js +6 -3
  272. package/Materials/standardMaterial.pure.js.map +1 -1
  273. package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
  274. package/Meshes/Builders/polygonBuilder.pure.js +4 -1
  275. package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
  276. package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
  277. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
  278. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
  279. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
  280. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
  281. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  282. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
  283. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
  284. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  285. package/Meshes/abstractMesh.pure.d.ts +18 -0
  286. package/Meshes/abstractMesh.pure.js +22 -0
  287. package/Meshes/abstractMesh.pure.js.map +1 -1
  288. package/Meshes/index.d.ts +1 -0
  289. package/Meshes/index.js +1 -0
  290. package/Meshes/index.js.map +1 -1
  291. package/Meshes/instancedMesh.pure.d.ts +5 -0
  292. package/Meshes/instancedMesh.pure.js +12 -0
  293. package/Meshes/instancedMesh.pure.js.map +1 -1
  294. package/Meshes/mesh.pure.js +23 -8
  295. package/Meshes/mesh.pure.js.map +1 -1
  296. package/Meshes/meshBlendingTag.d.ts +47 -0
  297. package/Meshes/meshBlendingTag.js +64 -0
  298. package/Meshes/meshBlendingTag.js.map +1 -0
  299. package/Meshes/polygonMesh.js +2 -2
  300. package/Meshes/polygonMesh.js.map +1 -1
  301. package/Meshes/pure.d.ts +1 -0
  302. package/Meshes/pure.js +1 -0
  303. package/Meshes/pure.js.map +1 -1
  304. package/Misc/fileTools.pure.js +21 -0
  305. package/Misc/fileTools.pure.js.map +1 -1
  306. package/Misc/snapshotRenderingHelper.js +2 -2
  307. package/Misc/snapshotRenderingHelper.js.map +1 -1
  308. package/Misc/tools.pure.js +1 -1
  309. package/Misc/tools.pure.js.map +1 -1
  310. package/Particles/gpuParticleSystem.pure.d.ts +2 -0
  311. package/Particles/gpuParticleSystem.pure.js +89 -28
  312. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  313. package/Particles/thinParticleSystem.pure.d.ts +2 -0
  314. package/Particles/thinParticleSystem.pure.js +84 -19
  315. package/Particles/thinParticleSystem.pure.js.map +1 -1
  316. package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
  317. package/Particles/webgl2ParticleSystem.pure.js +12 -4
  318. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  319. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
  320. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
  321. package/PostProcesses/index.d.ts +2 -0
  322. package/PostProcesses/index.js +2 -0
  323. package/PostProcesses/index.js.map +1 -1
  324. package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
  325. package/PostProcesses/meshBlendingBlueNoise.js +77 -0
  326. package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
  327. package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
  328. package/PostProcesses/meshBlendingPostProcess.js +315 -0
  329. package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
  330. package/PostProcesses/pure.d.ts +2 -0
  331. package/PostProcesses/pure.js +2 -0
  332. package/PostProcesses/pure.js.map +1 -1
  333. package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
  334. package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
  335. package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
  336. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
  337. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  338. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
  339. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  340. package/Rendering/boundingBoxRenderer.pure.js +2 -1
  341. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  342. package/Rendering/depthRenderer.pure.js +3 -4
  343. package/Rendering/depthRenderer.pure.js.map +1 -1
  344. package/Rendering/edgesRenderer.pure.d.ts +4 -2
  345. package/Rendering/edgesRenderer.pure.js +11 -2
  346. package/Rendering/edgesRenderer.pure.js.map +1 -1
  347. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
  348. package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
  349. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  350. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
  351. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
  352. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  353. package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
  354. package/Rendering/geometryBufferRenderer.pure.js +126 -17
  355. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  356. package/Rendering/objectRenderer.d.ts +7 -1
  357. package/Rendering/objectRenderer.js +45 -7
  358. package/Rendering/objectRenderer.js.map +1 -1
  359. package/Rendering/outlineRenderer.pure.js +6 -2
  360. package/Rendering/outlineRenderer.pure.js.map +1 -1
  361. package/Rendering/renderingManager.d.ts +1 -1
  362. package/Rendering/renderingManager.js +5 -4
  363. package/Rendering/renderingManager.js.map +1 -1
  364. package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  365. package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
  366. package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  367. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
  368. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  369. package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
  370. package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
  371. package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  372. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
  373. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  374. package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
  375. package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  376. package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
  377. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  378. package/Shaders/ShadersInclude/pbrDebug.js +6 -2
  379. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  380. package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
  381. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  382. package/Shaders/default.fragment.js +31 -40
  383. package/Shaders/default.fragment.js.map +1 -1
  384. package/Shaders/depthOfField.fragment.js +13 -9
  385. package/Shaders/depthOfField.fragment.js.map +1 -1
  386. package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
  387. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  388. package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
  389. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  390. package/Shaders/gaussianSplatting.fragment.js +63 -3
  391. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  392. package/Shaders/gaussianSplatting.vertex.js +80 -0
  393. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  394. package/Shaders/geometry.fragment.js +17 -11
  395. package/Shaders/geometry.fragment.js.map +1 -1
  396. package/Shaders/gpuRenderParticles.fragment.js +43 -1
  397. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  398. package/Shaders/gpuRenderParticles.vertex.js +96 -16
  399. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  400. package/Shaders/meshBlending.fragment.d.ts +5 -0
  401. package/Shaders/meshBlending.fragment.js +519 -0
  402. package/Shaders/meshBlending.fragment.js.map +1 -0
  403. package/Shaders/particles.fragment.js +43 -1
  404. package/Shaders/particles.fragment.js.map +1 -1
  405. package/Shaders/particles.vertex.js +84 -3
  406. package/Shaders/particles.vertex.js.map +1 -1
  407. package/Shaders/sprites.fragment.js +52 -2
  408. package/Shaders/sprites.fragment.js.map +1 -1
  409. package/Shaders/sprites.vertex.js +62 -1
  410. package/Shaders/sprites.vertex.js.map +1 -1
  411. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  412. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
  413. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  414. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
  415. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
  416. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  417. package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
  418. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  419. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
  420. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
  421. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
  422. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
  423. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
  424. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  425. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
  426. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
  427. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  428. package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
  429. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  430. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
  431. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  432. package/ShadersWGSL/default.fragment.js +17 -48
  433. package/ShadersWGSL/default.fragment.js.map +1 -1
  434. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
  435. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  436. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
  437. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  438. package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
  439. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  440. package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
  441. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  442. package/ShadersWGSL/geometry.fragment.js +37 -2
  443. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  444. package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
  445. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
  446. package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
  447. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
  448. package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
  449. package/ShadersWGSL/meshBlending.fragment.js +576 -0
  450. package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
  451. package/ShadersWGSL/openpbr.fragment.js +2 -1
  452. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  453. package/ShadersWGSL/particles.fragment.js +45 -1
  454. package/ShadersWGSL/particles.fragment.js.map +1 -1
  455. package/ShadersWGSL/particles.vertex.js +86 -4
  456. package/ShadersWGSL/particles.vertex.js.map +1 -1
  457. package/ShadersWGSL/pbr.fragment.js +2 -1
  458. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  459. package/ShadersWGSL/sprites.fragment.js +56 -2
  460. package/ShadersWGSL/sprites.fragment.js.map +1 -1
  461. package/ShadersWGSL/sprites.vertex.js +62 -1
  462. package/ShadersWGSL/sprites.vertex.js.map +1 -1
  463. package/Sprites/spriteManager.d.ts +13 -0
  464. package/Sprites/spriteManager.js +15 -0
  465. package/Sprites/spriteManager.js.map +1 -1
  466. package/Sprites/spriteRenderer.d.ts +24 -1
  467. package/Sprites/spriteRenderer.js +368 -50
  468. package/Sprites/spriteRenderer.js.map +1 -1
  469. package/Sprites/thinSprite.d.ts +4 -0
  470. package/Sprites/thinSprite.js +4 -0
  471. package/Sprites/thinSprite.js.map +1 -1
  472. package/States/alphaCullingState.d.ts +3 -1
  473. package/States/alphaCullingState.js +18 -3
  474. package/States/alphaCullingState.js.map +1 -1
  475. package/XR/webXRDefaultExperience.d.ts +5 -1
  476. package/XR/webXRDefaultExperience.js.map +1 -1
  477. package/XR/webXREnterExitUI.d.ts +2 -1
  478. package/XR/webXREnterExitUI.js.map +1 -1
  479. package/package.json +1 -1
  480. package/scene.pure.d.ts +23 -0
  481. package/scene.pure.js +35 -0
  482. package/scene.pure.js.map +1 -1
@@ -0,0 +1,47 @@
1
+ import { type AbstractEngine } from "../Engines/abstractEngine.pure.js";
2
+ /**
3
+ * Checks whether an engine supports the render-target and shader features required by mesh blending.
4
+ * @param engine Engine to check.
5
+ * @returns True for WebGL2 and WebGPU engines, and false for Native and WebGL1 engines.
6
+ * @internal
7
+ */
8
+ export declare function _IsMeshBlendingSupported(engine: AbstractEngine): boolean;
9
+ /**
10
+ * Radius class stored in a packed mesh-blending tag.
11
+ *
12
+ * The selected class combines an authored world radius with a minimum projected radius. At a seam,
13
+ * the smaller class from the two participating surfaces is used.
14
+ */
15
+ export declare enum MeshBlendingRadiusClass {
16
+ /** Small blend radius. */
17
+ Small = 0,
18
+ /** Medium blend radius. */
19
+ Medium = 1,
20
+ /** Large blend radius. */
21
+ Large = 2,
22
+ /** Extra-large blend radius. */
23
+ ExtraLarge = 3
24
+ }
25
+ /**
26
+ * Decoded values stored in a packed mesh-blending tag.
27
+ */
28
+ export interface IMeshBlendingTag {
29
+ /** Logical blend group. Group 0 disables mesh blending. */
30
+ groupId: number;
31
+ /** Radius class used to select the blend radius. */
32
+ radiusClass: MeshBlendingRadiusClass;
33
+ }
34
+ /**
35
+ * Packs a mesh-blending group and radius class into one byte.
36
+ * @param groupId Logical blend group. Use 0 to disable mesh blending, otherwise use a value from 1 to 63.
37
+ * @param radiusClass Radius class from 0 to 3.
38
+ * @returns The packed mesh-blending tag.
39
+ * @see https://playground.babylonjs.com/?version=preview#XVZTSI#3
40
+ */
41
+ export declare function PackMeshBlendingTag(groupId: number, radiusClass: MeshBlendingRadiusClass): number;
42
+ /**
43
+ * Decodes a packed mesh-blending tag.
44
+ * @param tag Packed mesh-blending tag.
45
+ * @returns The decoded group and radius class.
46
+ */
47
+ export declare function UnpackMeshBlendingTag(tag: number): IMeshBlendingTag;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Checks whether an engine supports the render-target and shader features required by mesh blending.
3
+ * @param engine Engine to check.
4
+ * @returns True for WebGL2 and WebGPU engines, and false for Native and WebGL1 engines.
5
+ * @internal
6
+ */
7
+ export function _IsMeshBlendingSupported(engine) {
8
+ return engine.shaderPlatformName !== "NATIVE" && (engine.isWebGPU || engine.webGLVersion === 2);
9
+ }
10
+ /**
11
+ * Radius class stored in a packed mesh-blending tag.
12
+ *
13
+ * The selected class combines an authored world radius with a minimum projected radius. At a seam,
14
+ * the smaller class from the two participating surfaces is used.
15
+ */
16
+ export var MeshBlendingRadiusClass;
17
+ (function (MeshBlendingRadiusClass) {
18
+ /** Small blend radius. */
19
+ MeshBlendingRadiusClass[MeshBlendingRadiusClass["Small"] = 0] = "Small";
20
+ /** Medium blend radius. */
21
+ MeshBlendingRadiusClass[MeshBlendingRadiusClass["Medium"] = 1] = "Medium";
22
+ /** Large blend radius. */
23
+ MeshBlendingRadiusClass[MeshBlendingRadiusClass["Large"] = 2] = "Large";
24
+ /** Extra-large blend radius. */
25
+ MeshBlendingRadiusClass[MeshBlendingRadiusClass["ExtraLarge"] = 3] = "ExtraLarge";
26
+ })(MeshBlendingRadiusClass || (MeshBlendingRadiusClass = {}));
27
+ /**
28
+ * Packs a mesh-blending group and radius class into one byte.
29
+ * @param groupId Logical blend group. Use 0 to disable mesh blending, otherwise use a value from 1 to 63.
30
+ * @param radiusClass Radius class from 0 to 3.
31
+ * @returns The packed mesh-blending tag.
32
+ * @see https://playground.babylonjs.com/?version=preview#XVZTSI#3
33
+ */
34
+ export function PackMeshBlendingTag(groupId, radiusClass) {
35
+ if (!Number.isInteger(groupId) || groupId < 0 || groupId > 63) {
36
+ throw new RangeError("Mesh-blending group ID must be an integer between 0 and 63.");
37
+ }
38
+ if (groupId === 0) {
39
+ return 0;
40
+ }
41
+ if (!Number.isInteger(radiusClass) || radiusClass < MeshBlendingRadiusClass.Small || radiusClass > MeshBlendingRadiusClass.ExtraLarge) {
42
+ throw new RangeError("Mesh-blending radius class must be an integer between 0 and 3.");
43
+ }
44
+ return (radiusClass << 6) | groupId;
45
+ }
46
+ /**
47
+ * Decodes a packed mesh-blending tag.
48
+ * @param tag Packed mesh-blending tag.
49
+ * @returns The decoded group and radius class.
50
+ */
51
+ export function UnpackMeshBlendingTag(tag) {
52
+ if (!Number.isInteger(tag) || tag < 0 || tag > 0xff) {
53
+ throw new RangeError("Mesh-blending tag must be an integer between 0 and 255.");
54
+ }
55
+ const groupId = tag & 0x3f;
56
+ if (tag !== 0 && groupId === 0) {
57
+ throw new RangeError("A nonzero mesh-blending tag must contain a group ID between 1 and 63.");
58
+ }
59
+ return {
60
+ groupId,
61
+ radiusClass: tag >> 6,
62
+ };
63
+ }
64
+ //# sourceMappingURL=meshBlendingTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshBlendingTag.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/meshBlendingTag.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAsB;IAC3D,OAAO,MAAM,CAAC,kBAAkB,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAK,MAAqB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC;AACpH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,uBASX;AATD,WAAY,uBAAuB;IAC/B,0BAA0B;IAC1B,uEAAS,CAAA;IACT,2BAA2B;IAC3B,yEAAU,CAAA;IACV,0BAA0B;IAC1B,uEAAS,CAAA;IACT,gCAAgC;IAChC,iFAAc,CAAA;AAClB,CAAC,EATW,uBAAuB,KAAvB,uBAAuB,QASlC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,WAAoC;IACrF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAAC,6DAA6D,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,uBAAuB,CAAC,KAAK,IAAI,WAAW,GAAG,uBAAuB,CAAC,UAAU,EAAE,CAAC;QACpI,MAAM,IAAI,UAAU,CAAC,gEAAgE,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,UAAU,CAAC,yDAAyD,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC;IAC3B,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,uEAAuE,CAAC,CAAC;IAClG,CAAC;IAED,OAAO;QACH,OAAO;QACP,WAAW,EAAE,GAAG,IAAI,CAAC;KACxB,CAAC;AACN,CAAC","sourcesContent":["import { type AbstractEngine } from \"../Engines/abstractEngine.pure\";\r\nimport { type ThinEngine } from \"../Engines/thinEngine.pure\";\r\n\r\n/**\r\n * Checks whether an engine supports the render-target and shader features required by mesh blending.\r\n * @param engine Engine to check.\r\n * @returns True for WebGL2 and WebGPU engines, and false for Native and WebGL1 engines.\r\n * @internal\r\n */\r\nexport function _IsMeshBlendingSupported(engine: AbstractEngine): boolean {\r\n return engine.shaderPlatformName !== \"NATIVE\" && (engine.isWebGPU || (engine as ThinEngine).webGLVersion === 2);\r\n}\r\n\r\n/**\r\n * Radius class stored in a packed mesh-blending tag.\r\n *\r\n * The selected class combines an authored world radius with a minimum projected radius. At a seam,\r\n * the smaller class from the two participating surfaces is used.\r\n */\r\nexport enum MeshBlendingRadiusClass {\r\n /** Small blend radius. */\r\n Small = 0,\r\n /** Medium blend radius. */\r\n Medium = 1,\r\n /** Large blend radius. */\r\n Large = 2,\r\n /** Extra-large blend radius. */\r\n ExtraLarge = 3,\r\n}\r\n\r\n/**\r\n * Decoded values stored in a packed mesh-blending tag.\r\n */\r\nexport interface IMeshBlendingTag {\r\n /** Logical blend group. Group 0 disables mesh blending. */\r\n groupId: number;\r\n /** Radius class used to select the blend radius. */\r\n radiusClass: MeshBlendingRadiusClass;\r\n}\r\n\r\n/**\r\n * Packs a mesh-blending group and radius class into one byte.\r\n * @param groupId Logical blend group. Use 0 to disable mesh blending, otherwise use a value from 1 to 63.\r\n * @param radiusClass Radius class from 0 to 3.\r\n * @returns The packed mesh-blending tag.\r\n * @see https://playground.babylonjs.com/?version=preview#XVZTSI#3\r\n */\r\nexport function PackMeshBlendingTag(groupId: number, radiusClass: MeshBlendingRadiusClass): number {\r\n if (!Number.isInteger(groupId) || groupId < 0 || groupId > 63) {\r\n throw new RangeError(\"Mesh-blending group ID must be an integer between 0 and 63.\");\r\n }\r\n if (groupId === 0) {\r\n return 0;\r\n }\r\n if (!Number.isInteger(radiusClass) || radiusClass < MeshBlendingRadiusClass.Small || radiusClass > MeshBlendingRadiusClass.ExtraLarge) {\r\n throw new RangeError(\"Mesh-blending radius class must be an integer between 0 and 3.\");\r\n }\r\n\r\n return (radiusClass << 6) | groupId;\r\n}\r\n\r\n/**\r\n * Decodes a packed mesh-blending tag.\r\n * @param tag Packed mesh-blending tag.\r\n * @returns The decoded group and radius class.\r\n */\r\nexport function UnpackMeshBlendingTag(tag: number): IMeshBlendingTag {\r\n if (!Number.isInteger(tag) || tag < 0 || tag > 0xff) {\r\n throw new RangeError(\"Mesh-blending tag must be an integer between 0 and 255.\");\r\n }\r\n\r\n const groupId = tag & 0x3f;\r\n if (tag !== 0 && groupId === 0) {\r\n throw new RangeError(\"A nonzero mesh-blending tag must contain a group ID between 1 and 63.\");\r\n }\r\n\r\n return {\r\n groupId,\r\n radiusClass: tag >> 6,\r\n };\r\n}\r\n"]}
@@ -280,7 +280,7 @@ export class PolygonMeshBuilder {
280
280
  }
281
281
  const vcNorm = vc.normalizeToNew();
282
282
  let vpNorm = vp.normalizeToNew();
283
- let vnNorm;
283
+ let vnNorm = vn.normalizeToNew();
284
284
  const dotp = Vector3.Dot(vpNorm, vcNorm);
285
285
  if (dotp > smoothingThreshold) {
286
286
  if (dotp < Epsilon - 1) {
@@ -294,7 +294,7 @@ export class PolygonMeshBuilder {
294
294
  else {
295
295
  vpNorm = vcNorm;
296
296
  }
297
- const dotn = Vector3.Dot(vn, vc);
297
+ const dotn = Vector3.Dot(vnNorm, vcNorm);
298
298
  if (dotn > smoothingThreshold) {
299
299
  if (dotn < Epsilon - 1) {
300
300
  // back to back
@@ -1 +1 @@
1
- {"version":3,"file":"polygonMesh.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/polygonMesh.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Vector3, Vector2 } from \"../Maths/math.vector.pure\";\r\nimport { VertexBuffer } from \"../Buffers/buffer.pure\";\r\nimport { Mesh } from \"../Meshes/mesh.pure\";\r\nimport { VertexData } from \"../Meshes/mesh.vertexData\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Path2 } from \"../Maths/math.path\";\r\nimport { Epsilon } from \"../Maths/math.constants\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\ndeclare let earcut: any;\r\n/**\r\n * Vector2 wth index property\r\n */\r\nclass IndexedVector2 extends Vector2 {\r\n /** @internal */\r\n constructor(\r\n original: Vector2,\r\n /** Index of the vector2 */\r\n public index: number\r\n ) {\r\n super(original.x, original.y);\r\n }\r\n}\r\n\r\n/**\r\n * Defines points to create a polygon\r\n */\r\nclass PolygonPoints {\r\n /** @internal */\r\n elements = [] as IndexedVector2[];\r\n\r\n /** @internal */\r\n add(originalPoints: Array<Vector2>): Array<IndexedVector2> {\r\n const result: IndexedVector2[] = [];\r\n for (const point of originalPoints) {\r\n const newPoint = new IndexedVector2(point, this.elements.length);\r\n result.push(newPoint);\r\n this.elements.push(newPoint);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** @internal */\r\n computeBounds(): { min: Vector2; max: Vector2; width: number; height: number } {\r\n const lmin = new Vector2(this.elements[0].x, this.elements[0].y);\r\n const lmax = new Vector2(this.elements[0].x, this.elements[0].y);\r\n\r\n for (const point of this.elements) {\r\n // x\r\n if (point.x < lmin.x) {\r\n lmin.x = point.x;\r\n } else if (point.x > lmax.x) {\r\n lmax.x = point.x;\r\n }\r\n\r\n // y\r\n if (point.y < lmin.y) {\r\n lmin.y = point.y;\r\n } else if (point.y > lmax.y) {\r\n lmax.y = point.y;\r\n }\r\n }\r\n\r\n return {\r\n min: lmin,\r\n max: lmax,\r\n width: lmax.x - lmin.x,\r\n height: lmax.y - lmin.y,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Polygon\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#non-regular-polygon\r\n */\r\nexport class Polygon {\r\n /**\r\n * Creates a rectangle\r\n * @param xmin bottom X coord\r\n * @param ymin bottom Y coord\r\n * @param xmax top X coord\r\n * @param ymax top Y coord\r\n * @returns points that make the resulting rectangle\r\n */\r\n static Rectangle(xmin: number, ymin: number, xmax: number, ymax: number): Vector2[] {\r\n return [new Vector2(xmin, ymin), new Vector2(xmax, ymin), new Vector2(xmax, ymax), new Vector2(xmin, ymax)];\r\n }\r\n\r\n /**\r\n * Creates a circle\r\n * @param radius radius of circle\r\n * @param cx scale in x\r\n * @param cy scale in y\r\n * @param numberOfSides number of sides that make up the circle\r\n * @returns points that make the resulting circle\r\n */\r\n static Circle(radius: number, cx: number = 0, cy: number = 0, numberOfSides: number = 32): Vector2[] {\r\n const result: Vector2[] = [];\r\n\r\n let angle = 0;\r\n const increment = (Math.PI * 2) / numberOfSides;\r\n\r\n for (let i = 0; i < numberOfSides; i++) {\r\n result.push(new Vector2(cx + Math.cos(angle) * radius, cy + Math.sin(angle) * radius));\r\n angle -= increment;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a polygon from input string\r\n * @param input Input polygon data\r\n * @returns the parsed points\r\n */\r\n static Parse(input: string): Vector2[] {\r\n const floats = input\r\n .split(/[^-+eE.\\d]+/)\r\n .map(parseFloat)\r\n .filter((val) => !isNaN(val));\r\n let i: number;\r\n const result = [];\r\n for (i = 0; i < (floats.length & 0x7ffffffe); i += 2) {\r\n result.push(new Vector2(floats[i], floats[i + 1]));\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Starts building a polygon from x and y coordinates\r\n * @param x x coordinate\r\n * @param y y coordinate\r\n * @returns the started path2\r\n */\r\n static StartingAt(x: number, y: number): Path2 {\r\n return Path2.StartingAt(x, y);\r\n }\r\n}\r\n\r\n/**\r\n * Builds a polygon\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/polyMeshBuilder\r\n */\r\nexport class PolygonMeshBuilder {\r\n private _points = new PolygonPoints();\r\n private _outlinepoints = new PolygonPoints();\r\n private _holes = new Array<PolygonPoints>();\r\n\r\n private _name: string;\r\n private _scene: Nullable<Scene>;\r\n\r\n private _epoints: number[] = new Array<number>();\r\n private _eholes: number[] = new Array<number>();\r\n\r\n private _addToepoint(points: Vector2[]) {\r\n for (const p of points) {\r\n this._epoints.push(p.x, p.y);\r\n }\r\n }\r\n\r\n /**\r\n * Babylon reference to the earcut plugin.\r\n */\r\n public bjsEarcut: any;\r\n\r\n /**\r\n * Creates a PolygonMeshBuilder\r\n * @param name name of the builder\r\n * @param contours Path of the polygon\r\n * @param scene scene to add to when creating the mesh\r\n * @param earcutInjection can be used to inject your own earcut reference\r\n */\r\n constructor(name: string, contours: Path2 | Vector2[] | any, scene?: Scene, earcutInjection = earcut) {\r\n this.bjsEarcut = earcutInjection;\r\n this._name = name;\r\n this._scene = scene || EngineStore.LastCreatedScene;\r\n\r\n let points: Vector2[];\r\n if (contours instanceof Path2) {\r\n points = contours.getPoints();\r\n } else {\r\n points = <Vector2[]>contours;\r\n }\r\n\r\n this._addToepoint(points);\r\n\r\n this._points.add(points);\r\n this._outlinepoints.add(points);\r\n\r\n if (typeof this.bjsEarcut === \"undefined\") {\r\n Logger.Warn(\"Earcut was not found, the polygon will not be built.\");\r\n }\r\n }\r\n\r\n /**\r\n * Adds a hole within the polygon\r\n * @param hole Array of points defining the hole\r\n * @returns this\r\n */\r\n addHole(hole: Vector2[]): PolygonMeshBuilder {\r\n this._points.add(hole);\r\n const holepoints = new PolygonPoints();\r\n holepoints.add(hole);\r\n this._holes.push(holepoints);\r\n\r\n this._eholes.push(this._epoints.length / 2);\r\n this._addToepoint(hole);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates the polygon\r\n * @param updatable If the mesh should be updatable\r\n * @param depth The depth of the mesh created\r\n * @param smoothingThreshold Dot product threshold for smoothed normals\r\n * @returns the created mesh\r\n */\r\n build(updatable: boolean = false, depth: number = 0, smoothingThreshold: number = 2): Mesh {\r\n const result = new Mesh(this._name, this._scene);\r\n\r\n const vertexData = this.buildVertexData(depth, smoothingThreshold);\r\n\r\n result.setVerticesData(VertexBuffer.PositionKind, <number[]>vertexData.positions, updatable);\r\n result.setVerticesData(VertexBuffer.NormalKind, <number[]>vertexData.normals, updatable);\r\n result.setVerticesData(VertexBuffer.UVKind, <number[]>vertexData.uvs, updatable);\r\n result.setIndices(<number[]>vertexData.indices);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates the polygon\r\n * @param depth The depth of the mesh created\r\n * @param smoothingThreshold Dot product threshold for smoothed normals\r\n * @returns the created VertexData\r\n */\r\n buildVertexData(depth: number = 0, smoothingThreshold: number = 2): VertexData {\r\n const result = new VertexData();\r\n\r\n const normals: number[] = [];\r\n const positions: number[] = [];\r\n const uvs: number[] = [];\r\n\r\n const bounds = this._points.computeBounds();\r\n for (const p of this._points.elements) {\r\n normals.push(0, 1.0, 0);\r\n positions.push(p.x, 0, p.y);\r\n uvs.push((p.x - bounds.min.x) / bounds.width, (p.y - bounds.min.y) / bounds.height);\r\n }\r\n\r\n const indices: number[] = [];\r\n\r\n const res = this.bjsEarcut(this._epoints, this._eholes, 2);\r\n\r\n for (let i = 0; i < res.length; i++) {\r\n indices.push(res[i]);\r\n }\r\n\r\n if (depth > 0) {\r\n const positionscount = positions.length / 3; //get the current pointcount\r\n\r\n for (const p of this._points.elements) {\r\n //add the elements at the depth\r\n normals.push(0, -1.0, 0);\r\n positions.push(p.x, -depth, p.y);\r\n uvs.push(1 - (p.x - bounds.min.x) / bounds.width, 1 - (p.y - bounds.min.y) / bounds.height);\r\n }\r\n\r\n const totalCount = indices.length;\r\n for (let i = 0; i < totalCount; i += 3) {\r\n const i0 = indices[i + 0];\r\n const i1 = indices[i + 1];\r\n const i2 = indices[i + 2];\r\n\r\n indices.push(i2 + positionscount);\r\n indices.push(i1 + positionscount);\r\n indices.push(i0 + positionscount);\r\n }\r\n\r\n //Add the sides\r\n this._addSide(positions, normals, uvs, indices, bounds, this._outlinepoints, depth, false, smoothingThreshold);\r\n\r\n for (const hole of this._holes) {\r\n this._addSide(positions, normals, uvs, indices, bounds, hole, depth, true, smoothingThreshold);\r\n }\r\n }\r\n\r\n result.indices = indices;\r\n result.positions = positions;\r\n result.normals = normals;\r\n result.uvs = uvs;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Adds a side to the polygon\r\n * @param positions points that make the polygon\r\n * @param normals normals of the polygon\r\n * @param uvs uvs of the polygon\r\n * @param indices indices of the polygon\r\n * @param bounds bounds of the polygon\r\n * @param points points of the polygon\r\n * @param depth depth of the polygon\r\n * @param flip flip of the polygon\r\n * @param smoothingThreshold\r\n */\r\n private _addSide(positions: any[], normals: any[], uvs: any[], indices: any[], bounds: any, points: PolygonPoints, depth: number, flip: boolean, smoothingThreshold: number) {\r\n let startIndex: number = positions.length / 3;\r\n let ulength: number = 0;\r\n for (let i: number = 0; i < points.elements.length; i++) {\r\n const p: IndexedVector2 = points.elements[i];\r\n const p1: IndexedVector2 = points.elements[(i + 1) % points.elements.length];\r\n\r\n positions.push(p.x, 0, p.y);\r\n positions.push(p.x, -depth, p.y);\r\n positions.push(p1.x, 0, p1.y);\r\n positions.push(p1.x, -depth, p1.y);\r\n\r\n const p0: IndexedVector2 = points.elements[(i + points.elements.length - 1) % points.elements.length];\r\n const p2: IndexedVector2 = points.elements[(i + 2) % points.elements.length];\r\n\r\n let vc = new Vector3(-(p1.y - p.y), 0, p1.x - p.x);\r\n let vp = new Vector3(-(p.y - p0.y), 0, p.x - p0.x);\r\n let vn = new Vector3(-(p2.y - p1.y), 0, p2.x - p1.x);\r\n\r\n if (!flip) {\r\n vc = vc.scale(-1);\r\n vp = vp.scale(-1);\r\n vn = vn.scale(-1);\r\n }\r\n\r\n const vcNorm = vc.normalizeToNew();\r\n let vpNorm = vp.normalizeToNew();\r\n let vnNorm: Vector3;\r\n\r\n const dotp = Vector3.Dot(vpNorm, vcNorm);\r\n if (dotp > smoothingThreshold) {\r\n if (dotp < Epsilon - 1) {\r\n vpNorm = new Vector3(p.x, 0, p.y).subtract(new Vector3(p1.x, 0, p1.y)).normalize();\r\n } else {\r\n // cheap average weighed by side length\r\n vpNorm = vp.add(vc).normalize();\r\n }\r\n } else {\r\n vpNorm = vcNorm;\r\n }\r\n\r\n const dotn = Vector3.Dot(vn, vc);\r\n if (dotn > smoothingThreshold) {\r\n if (dotn < Epsilon - 1) {\r\n // back to back\r\n vnNorm = new Vector3(p1.x, 0, p1.y).subtract(new Vector3(p.x, 0, p.y)).normalize();\r\n } else {\r\n // cheap average weighed by side length\r\n vnNorm = vn.add(vc).normalize();\r\n }\r\n } else {\r\n vnNorm = vcNorm;\r\n }\r\n\r\n uvs.push(ulength / bounds.width, 0);\r\n uvs.push(ulength / bounds.width, 1);\r\n ulength += vc.length();\r\n uvs.push(ulength / bounds.width, 0);\r\n uvs.push(ulength / bounds.width, 1);\r\n\r\n normals.push(vpNorm.x, vpNorm.y, vpNorm.z);\r\n normals.push(vpNorm.x, vpNorm.y, vpNorm.z);\r\n normals.push(vnNorm.x, vnNorm.y, vnNorm.z);\r\n normals.push(vnNorm.x, vnNorm.y, vnNorm.z);\r\n\r\n if (!flip) {\r\n indices.push(startIndex);\r\n indices.push(startIndex + 1);\r\n indices.push(startIndex + 2);\r\n\r\n indices.push(startIndex + 1);\r\n indices.push(startIndex + 3);\r\n indices.push(startIndex + 2);\r\n } else {\r\n indices.push(startIndex);\r\n indices.push(startIndex + 2);\r\n indices.push(startIndex + 1);\r\n\r\n indices.push(startIndex + 1);\r\n indices.push(startIndex + 2);\r\n indices.push(startIndex + 3);\r\n }\r\n startIndex += 4;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"polygonMesh.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/polygonMesh.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Vector3, Vector2 } from \"../Maths/math.vector.pure\";\r\nimport { VertexBuffer } from \"../Buffers/buffer.pure\";\r\nimport { Mesh } from \"../Meshes/mesh.pure\";\r\nimport { VertexData } from \"../Meshes/mesh.vertexData\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Path2 } from \"../Maths/math.path\";\r\nimport { Epsilon } from \"../Maths/math.constants\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\ndeclare let earcut: any;\r\n/**\r\n * Vector2 wth index property\r\n */\r\nclass IndexedVector2 extends Vector2 {\r\n /** @internal */\r\n constructor(\r\n original: Vector2,\r\n /** Index of the vector2 */\r\n public index: number\r\n ) {\r\n super(original.x, original.y);\r\n }\r\n}\r\n\r\n/**\r\n * Defines points to create a polygon\r\n */\r\nclass PolygonPoints {\r\n /** @internal */\r\n elements = [] as IndexedVector2[];\r\n\r\n /** @internal */\r\n add(originalPoints: Array<Vector2>): Array<IndexedVector2> {\r\n const result: IndexedVector2[] = [];\r\n for (const point of originalPoints) {\r\n const newPoint = new IndexedVector2(point, this.elements.length);\r\n result.push(newPoint);\r\n this.elements.push(newPoint);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** @internal */\r\n computeBounds(): { min: Vector2; max: Vector2; width: number; height: number } {\r\n const lmin = new Vector2(this.elements[0].x, this.elements[0].y);\r\n const lmax = new Vector2(this.elements[0].x, this.elements[0].y);\r\n\r\n for (const point of this.elements) {\r\n // x\r\n if (point.x < lmin.x) {\r\n lmin.x = point.x;\r\n } else if (point.x > lmax.x) {\r\n lmax.x = point.x;\r\n }\r\n\r\n // y\r\n if (point.y < lmin.y) {\r\n lmin.y = point.y;\r\n } else if (point.y > lmax.y) {\r\n lmax.y = point.y;\r\n }\r\n }\r\n\r\n return {\r\n min: lmin,\r\n max: lmax,\r\n width: lmax.x - lmin.x,\r\n height: lmax.y - lmin.y,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Polygon\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#non-regular-polygon\r\n */\r\nexport class Polygon {\r\n /**\r\n * Creates a rectangle\r\n * @param xmin bottom X coord\r\n * @param ymin bottom Y coord\r\n * @param xmax top X coord\r\n * @param ymax top Y coord\r\n * @returns points that make the resulting rectangle\r\n */\r\n static Rectangle(xmin: number, ymin: number, xmax: number, ymax: number): Vector2[] {\r\n return [new Vector2(xmin, ymin), new Vector2(xmax, ymin), new Vector2(xmax, ymax), new Vector2(xmin, ymax)];\r\n }\r\n\r\n /**\r\n * Creates a circle\r\n * @param radius radius of circle\r\n * @param cx scale in x\r\n * @param cy scale in y\r\n * @param numberOfSides number of sides that make up the circle\r\n * @returns points that make the resulting circle\r\n */\r\n static Circle(radius: number, cx: number = 0, cy: number = 0, numberOfSides: number = 32): Vector2[] {\r\n const result: Vector2[] = [];\r\n\r\n let angle = 0;\r\n const increment = (Math.PI * 2) / numberOfSides;\r\n\r\n for (let i = 0; i < numberOfSides; i++) {\r\n result.push(new Vector2(cx + Math.cos(angle) * radius, cy + Math.sin(angle) * radius));\r\n angle -= increment;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a polygon from input string\r\n * @param input Input polygon data\r\n * @returns the parsed points\r\n */\r\n static Parse(input: string): Vector2[] {\r\n const floats = input\r\n .split(/[^-+eE.\\d]+/)\r\n .map(parseFloat)\r\n .filter((val) => !isNaN(val));\r\n let i: number;\r\n const result = [];\r\n for (i = 0; i < (floats.length & 0x7ffffffe); i += 2) {\r\n result.push(new Vector2(floats[i], floats[i + 1]));\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Starts building a polygon from x and y coordinates\r\n * @param x x coordinate\r\n * @param y y coordinate\r\n * @returns the started path2\r\n */\r\n static StartingAt(x: number, y: number): Path2 {\r\n return Path2.StartingAt(x, y);\r\n }\r\n}\r\n\r\n/**\r\n * Builds a polygon\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/polyMeshBuilder\r\n */\r\nexport class PolygonMeshBuilder {\r\n private _points = new PolygonPoints();\r\n private _outlinepoints = new PolygonPoints();\r\n private _holes = new Array<PolygonPoints>();\r\n\r\n private _name: string;\r\n private _scene: Nullable<Scene>;\r\n\r\n private _epoints: number[] = new Array<number>();\r\n private _eholes: number[] = new Array<number>();\r\n\r\n private _addToepoint(points: Vector2[]) {\r\n for (const p of points) {\r\n this._epoints.push(p.x, p.y);\r\n }\r\n }\r\n\r\n /**\r\n * Babylon reference to the earcut plugin.\r\n */\r\n public bjsEarcut: any;\r\n\r\n /**\r\n * Creates a PolygonMeshBuilder\r\n * @param name name of the builder\r\n * @param contours Path of the polygon\r\n * @param scene scene to add to when creating the mesh\r\n * @param earcutInjection can be used to inject your own earcut reference\r\n */\r\n constructor(name: string, contours: Path2 | Vector2[] | any, scene?: Scene, earcutInjection = earcut) {\r\n this.bjsEarcut = earcutInjection;\r\n this._name = name;\r\n this._scene = scene || EngineStore.LastCreatedScene;\r\n\r\n let points: Vector2[];\r\n if (contours instanceof Path2) {\r\n points = contours.getPoints();\r\n } else {\r\n points = <Vector2[]>contours;\r\n }\r\n\r\n this._addToepoint(points);\r\n\r\n this._points.add(points);\r\n this._outlinepoints.add(points);\r\n\r\n if (typeof this.bjsEarcut === \"undefined\") {\r\n Logger.Warn(\"Earcut was not found, the polygon will not be built.\");\r\n }\r\n }\r\n\r\n /**\r\n * Adds a hole within the polygon\r\n * @param hole Array of points defining the hole\r\n * @returns this\r\n */\r\n addHole(hole: Vector2[]): PolygonMeshBuilder {\r\n this._points.add(hole);\r\n const holepoints = new PolygonPoints();\r\n holepoints.add(hole);\r\n this._holes.push(holepoints);\r\n\r\n this._eholes.push(this._epoints.length / 2);\r\n this._addToepoint(hole);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates the polygon\r\n * @param updatable If the mesh should be updatable\r\n * @param depth The depth of the mesh created\r\n * @param smoothingThreshold Dot product threshold for smoothed normals\r\n * @returns the created mesh\r\n */\r\n build(updatable: boolean = false, depth: number = 0, smoothingThreshold: number = 2): Mesh {\r\n const result = new Mesh(this._name, this._scene);\r\n\r\n const vertexData = this.buildVertexData(depth, smoothingThreshold);\r\n\r\n result.setVerticesData(VertexBuffer.PositionKind, <number[]>vertexData.positions, updatable);\r\n result.setVerticesData(VertexBuffer.NormalKind, <number[]>vertexData.normals, updatable);\r\n result.setVerticesData(VertexBuffer.UVKind, <number[]>vertexData.uvs, updatable);\r\n result.setIndices(<number[]>vertexData.indices);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates the polygon\r\n * @param depth The depth of the mesh created\r\n * @param smoothingThreshold Dot product threshold for smoothed normals\r\n * @returns the created VertexData\r\n */\r\n buildVertexData(depth: number = 0, smoothingThreshold: number = 2): VertexData {\r\n const result = new VertexData();\r\n\r\n const normals: number[] = [];\r\n const positions: number[] = [];\r\n const uvs: number[] = [];\r\n\r\n const bounds = this._points.computeBounds();\r\n for (const p of this._points.elements) {\r\n normals.push(0, 1.0, 0);\r\n positions.push(p.x, 0, p.y);\r\n uvs.push((p.x - bounds.min.x) / bounds.width, (p.y - bounds.min.y) / bounds.height);\r\n }\r\n\r\n const indices: number[] = [];\r\n\r\n const res = this.bjsEarcut(this._epoints, this._eholes, 2);\r\n\r\n for (let i = 0; i < res.length; i++) {\r\n indices.push(res[i]);\r\n }\r\n\r\n if (depth > 0) {\r\n const positionscount = positions.length / 3; //get the current pointcount\r\n\r\n for (const p of this._points.elements) {\r\n //add the elements at the depth\r\n normals.push(0, -1.0, 0);\r\n positions.push(p.x, -depth, p.y);\r\n uvs.push(1 - (p.x - bounds.min.x) / bounds.width, 1 - (p.y - bounds.min.y) / bounds.height);\r\n }\r\n\r\n const totalCount = indices.length;\r\n for (let i = 0; i < totalCount; i += 3) {\r\n const i0 = indices[i + 0];\r\n const i1 = indices[i + 1];\r\n const i2 = indices[i + 2];\r\n\r\n indices.push(i2 + positionscount);\r\n indices.push(i1 + positionscount);\r\n indices.push(i0 + positionscount);\r\n }\r\n\r\n //Add the sides\r\n this._addSide(positions, normals, uvs, indices, bounds, this._outlinepoints, depth, false, smoothingThreshold);\r\n\r\n for (const hole of this._holes) {\r\n this._addSide(positions, normals, uvs, indices, bounds, hole, depth, true, smoothingThreshold);\r\n }\r\n }\r\n\r\n result.indices = indices;\r\n result.positions = positions;\r\n result.normals = normals;\r\n result.uvs = uvs;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Adds a side to the polygon\r\n * @param positions points that make the polygon\r\n * @param normals normals of the polygon\r\n * @param uvs uvs of the polygon\r\n * @param indices indices of the polygon\r\n * @param bounds bounds of the polygon\r\n * @param points points of the polygon\r\n * @param depth depth of the polygon\r\n * @param flip flip of the polygon\r\n * @param smoothingThreshold\r\n */\r\n private _addSide(positions: any[], normals: any[], uvs: any[], indices: any[], bounds: any, points: PolygonPoints, depth: number, flip: boolean, smoothingThreshold: number) {\r\n let startIndex: number = positions.length / 3;\r\n let ulength: number = 0;\r\n for (let i: number = 0; i < points.elements.length; i++) {\r\n const p: IndexedVector2 = points.elements[i];\r\n const p1: IndexedVector2 = points.elements[(i + 1) % points.elements.length];\r\n\r\n positions.push(p.x, 0, p.y);\r\n positions.push(p.x, -depth, p.y);\r\n positions.push(p1.x, 0, p1.y);\r\n positions.push(p1.x, -depth, p1.y);\r\n\r\n const p0: IndexedVector2 = points.elements[(i + points.elements.length - 1) % points.elements.length];\r\n const p2: IndexedVector2 = points.elements[(i + 2) % points.elements.length];\r\n\r\n let vc = new Vector3(-(p1.y - p.y), 0, p1.x - p.x);\r\n let vp = new Vector3(-(p.y - p0.y), 0, p.x - p0.x);\r\n let vn = new Vector3(-(p2.y - p1.y), 0, p2.x - p1.x);\r\n\r\n if (!flip) {\r\n vc = vc.scale(-1);\r\n vp = vp.scale(-1);\r\n vn = vn.scale(-1);\r\n }\r\n\r\n const vcNorm = vc.normalizeToNew();\r\n let vpNorm = vp.normalizeToNew();\r\n let vnNorm = vn.normalizeToNew();\r\n\r\n const dotp = Vector3.Dot(vpNorm, vcNorm);\r\n if (dotp > smoothingThreshold) {\r\n if (dotp < Epsilon - 1) {\r\n vpNorm = new Vector3(p.x, 0, p.y).subtract(new Vector3(p1.x, 0, p1.y)).normalize();\r\n } else {\r\n // cheap average weighed by side length\r\n vpNorm = vp.add(vc).normalize();\r\n }\r\n } else {\r\n vpNorm = vcNorm;\r\n }\r\n\r\n const dotn = Vector3.Dot(vnNorm, vcNorm);\r\n if (dotn > smoothingThreshold) {\r\n if (dotn < Epsilon - 1) {\r\n // back to back\r\n vnNorm = new Vector3(p1.x, 0, p1.y).subtract(new Vector3(p.x, 0, p.y)).normalize();\r\n } else {\r\n // cheap average weighed by side length\r\n vnNorm = vn.add(vc).normalize();\r\n }\r\n } else {\r\n vnNorm = vcNorm;\r\n }\r\n\r\n uvs.push(ulength / bounds.width, 0);\r\n uvs.push(ulength / bounds.width, 1);\r\n ulength += vc.length();\r\n uvs.push(ulength / bounds.width, 0);\r\n uvs.push(ulength / bounds.width, 1);\r\n\r\n normals.push(vpNorm.x, vpNorm.y, vpNorm.z);\r\n normals.push(vpNorm.x, vpNorm.y, vpNorm.z);\r\n normals.push(vnNorm.x, vnNorm.y, vnNorm.z);\r\n normals.push(vnNorm.x, vnNorm.y, vnNorm.z);\r\n\r\n if (!flip) {\r\n indices.push(startIndex);\r\n indices.push(startIndex + 1);\r\n indices.push(startIndex + 2);\r\n\r\n indices.push(startIndex + 1);\r\n indices.push(startIndex + 3);\r\n indices.push(startIndex + 2);\r\n } else {\r\n indices.push(startIndex);\r\n indices.push(startIndex + 2);\r\n indices.push(startIndex + 1);\r\n\r\n indices.push(startIndex + 1);\r\n indices.push(startIndex + 2);\r\n indices.push(startIndex + 3);\r\n }\r\n startIndex += 4;\r\n }\r\n }\r\n}\r\n"]}
package/Meshes/pure.d.ts CHANGED
@@ -11,6 +11,7 @@ export * from "./trailMesh.pure.js";
11
11
  export * from "./instancedMesh.pure.js";
12
12
  export * from "./linesMesh.pure.js";
13
13
  export * from "./mesh.pure.js";
14
+ export * from "./meshBlendingTag.js";
14
15
  export * from "./mesh.vertexData.js";
15
16
  export * from "./meshBuilder.pure.js";
16
17
  export * from "./meshSimplification.js";
package/Meshes/pure.js CHANGED
@@ -12,6 +12,7 @@ export * from "./trailMesh.pure.js";
12
12
  export * from "./instancedMesh.pure.js";
13
13
  export * from "./linesMesh.pure.js";
14
14
  export * from "./mesh.pure.js";
15
+ export * from "./meshBlendingTag.js";
15
16
  export * from "./mesh.vertexData.js";
16
17
  export * from "./meshBuilder.pure.js";
17
18
  export * from "./meshSimplification.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,OAAO,CAAC;AACtB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,QAAQ,CAAC;AACvB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,oDAAoD,CAAC;AACnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wDAAwD,CAAC;AACvE,cAAc,oDAAoD,CAAC;AACnE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./abstractMesh.pure\";\nexport * from \"./abstractMesh.hotSpot\";\nexport * from \"./Compression/pure\";\nexport * from \"./csg\";\nexport * from \"./meshUVSpaceRenderer.pure\";\nexport * from \"./geometry\";\nexport * from \"./groundMesh.pure\";\nexport * from \"./goldbergMesh.pure\";\nexport * from \"./trailMesh.pure\";\nexport * from \"./instancedMesh.pure\";\nexport * from \"./linesMesh.pure\";\nexport * from \"./mesh.pure\";\nexport * from \"./mesh.vertexData\";\nexport * from \"./meshBuilder.pure\";\nexport * from \"./meshSimplification\";\nexport * from \"./meshSimplificationSceneComponent.pure\";\nexport * from \"./meshUtils\";\nexport * from \"./polygonMesh\";\nexport * from \"./geodesicMesh\";\nexport * from \"./subMesh.pure\";\nexport * from \"./subMesh.project.pure\";\nexport * from \"./lattice\";\nexport * from \"./lattice.material\";\nexport * from \"./meshLODLevel\";\nexport * from \"./transformNode.pure\";\nexport * from \"./Builders/pure\";\nexport * from \"./WebGL/webGLDataBuffer\";\nexport * from \"./WebGPU/webgpuDataBuffer\";\nexport * from \"./GreasedLine/greasedLineMesh.pure\";\nexport * from \"./GreasedLine/greasedLineRibbonMesh.pure\";\nexport * from \"./GreasedLine/greasedLineBaseMesh\";\nexport * from \"./csg2\";\nexport * from \"./mesh.vertexData.functions\";\nexport * from \"./mesh.vertexData.subdivide\";\nexport * from \"./thinInstanceMesh.pure\";\nexport * from \"./Node/pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingMeshBase.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingMesh.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingCompoundMesh.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingDebugger.pure\";\nexport * from \"./abstractMesh.decalMap.pure\";\nexport * from \"./GaussianSplatting/pure\";\nexport * from \"./GreasedLine/pure\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,OAAO,CAAC;AACtB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,QAAQ,CAAC;AACvB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,oDAAoD,CAAC;AACnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wDAAwD,CAAC;AACvE,cAAc,oDAAoD,CAAC;AACnE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./abstractMesh.pure\";\nexport * from \"./abstractMesh.hotSpot\";\nexport * from \"./Compression/pure\";\nexport * from \"./csg\";\nexport * from \"./meshUVSpaceRenderer.pure\";\nexport * from \"./geometry\";\nexport * from \"./groundMesh.pure\";\nexport * from \"./goldbergMesh.pure\";\nexport * from \"./trailMesh.pure\";\nexport * from \"./instancedMesh.pure\";\nexport * from \"./linesMesh.pure\";\nexport * from \"./mesh.pure\";\nexport * from \"./meshBlendingTag\";\nexport * from \"./mesh.vertexData\";\nexport * from \"./meshBuilder.pure\";\nexport * from \"./meshSimplification\";\nexport * from \"./meshSimplificationSceneComponent.pure\";\nexport * from \"./meshUtils\";\nexport * from \"./polygonMesh\";\nexport * from \"./geodesicMesh\";\nexport * from \"./subMesh.pure\";\nexport * from \"./subMesh.project.pure\";\nexport * from \"./lattice\";\nexport * from \"./lattice.material\";\nexport * from \"./meshLODLevel\";\nexport * from \"./transformNode.pure\";\nexport * from \"./Builders/pure\";\nexport * from \"./WebGL/webGLDataBuffer\";\nexport * from \"./WebGPU/webgpuDataBuffer\";\nexport * from \"./GreasedLine/greasedLineMesh.pure\";\nexport * from \"./GreasedLine/greasedLineRibbonMesh.pure\";\nexport * from \"./GreasedLine/greasedLineBaseMesh\";\nexport * from \"./csg2\";\nexport * from \"./mesh.vertexData.functions\";\nexport * from \"./mesh.vertexData.subdivide\";\nexport * from \"./thinInstanceMesh.pure\";\nexport * from \"./Node/pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingMeshBase.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingMesh.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingCompoundMesh.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingDebugger.pure\";\nexport * from \"./abstractMesh.decalMap.pure\";\nexport * from \"./GaussianSplatting/pure\";\nexport * from \"./GreasedLine/pure\";\n"]}
@@ -162,6 +162,27 @@ export const LoadImage = (input, onLoad, onError, offlineProvider, mimeType = ""
162
162
  onError("LoadImage is only supported in web or BabylonNative environments.");
163
163
  return null;
164
164
  }
165
+ if (engine?._features.forceBitmapOverHTMLImageElement && typeof input !== "string" && typeof Blob !== "undefined") {
166
+ let blob;
167
+ if (input instanceof Blob) {
168
+ blob = input;
169
+ }
170
+ else {
171
+ const source = input instanceof ArrayBuffer ? input : GetBlobBufferSource(input);
172
+ blob = new Blob([source], { type: mimeType });
173
+ }
174
+ engine
175
+ .createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none", ...imageBitmapOptions })
176
+ // eslint-disable-next-line github/no-then
177
+ .then(onLoad)
178
+ // eslint-disable-next-line github/no-then
179
+ .catch((reason) => {
180
+ if (onError) {
181
+ onError("Error while trying to load image: " + input, reason);
182
+ }
183
+ });
184
+ return null;
185
+ }
165
186
  let url;
166
187
  let usingObjectURL = false;
167
188
  if (input instanceof ArrayBuffer || ArrayBuffer.isView(input)) {