@babylonjs/core 7.42.0 → 7.44.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 (317) hide show
  1. package/Actions/actionEvent.d.ts +4 -4
  2. package/Animations/animation.js +1 -1
  3. package/Animations/animation.js.map +1 -1
  4. package/Buffers/bufferUtils.d.ts +8 -1
  5. package/Buffers/bufferUtils.js +15 -0
  6. package/Buffers/bufferUtils.js.map +1 -1
  7. package/Culling/Helper/boundingInfoHelper.d.ts +2 -9
  8. package/Culling/Helper/boundingInfoHelper.js +2 -9
  9. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  10. package/Culling/Helper/computeShaderBoundingHelper.js +3 -4
  11. package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
  12. package/Culling/Helper/transformFeedbackBoundingHelper.js +27 -64
  13. package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
  14. package/Engines/Extensions/engine.multiRender.js +3 -2
  15. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  16. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -0
  17. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -0
  18. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  19. package/Engines/WebGPU/webgpuTextureManager.js +6 -1
  20. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  21. package/Engines/abstractEngine.js +2 -2
  22. package/Engines/abstractEngine.js.map +1 -1
  23. package/Engines/engine.d.ts +5 -2
  24. package/FlowGraph/flowGraphConnection.d.ts +1 -1
  25. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.d.ts +64 -0
  26. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js +147 -0
  27. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -0
  28. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.d.ts +42 -0
  29. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +78 -0
  30. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -0
  31. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +3 -19
  32. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +3 -49
  33. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
  34. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.d.ts +3 -19
  35. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +3 -49
  36. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
  37. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +3 -19
  38. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +3 -49
  39. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
  40. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +2 -17
  41. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +3 -45
  42. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
  43. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.d.ts +2 -17
  44. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +3 -44
  45. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -1
  46. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +3 -19
  47. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +3 -49
  48. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
  49. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.d.ts +47 -0
  50. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js +65 -0
  51. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js.map +1 -0
  52. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +0 -15
  53. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  54. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +4 -0
  55. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +9 -0
  56. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  57. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +1 -6
  58. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +0 -13
  59. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
  60. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +0 -1
  61. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
  62. package/FrameGraph/Node/Blocks/index.d.ts +2 -0
  63. package/FrameGraph/Node/Blocks/index.js +2 -0
  64. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  65. package/FrameGraph/Node/nodeRenderGraphBlock.js +17 -0
  66. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  67. package/FrameGraph/Passes/renderPass.d.ts +0 -8
  68. package/FrameGraph/Passes/renderPass.js +0 -10
  69. package/FrameGraph/Passes/renderPass.js.map +1 -1
  70. package/FrameGraph/Tasks/Layers/glowLayerTask.d.ts +57 -0
  71. package/FrameGraph/Tasks/Layers/glowLayerTask.js +173 -0
  72. package/FrameGraph/Tasks/Layers/glowLayerTask.js.map +1 -0
  73. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js +1 -1
  74. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -1
  75. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +7 -0
  76. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  77. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +1 -1
  78. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -1
  79. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  80. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  81. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +5 -5
  82. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
  83. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +12 -4
  84. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  85. package/FrameGraph/Tasks/PostProcesses/passTask.d.ts +29 -0
  86. package/FrameGraph/Tasks/PostProcesses/passTask.js +31 -0
  87. package/FrameGraph/Tasks/PostProcesses/passTask.js.map +1 -0
  88. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +1 -1
  89. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  90. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +0 -8
  91. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +1 -17
  92. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  93. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +3 -0
  94. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  95. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -6
  96. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +20 -22
  97. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  98. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +7 -1
  99. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +21 -5
  100. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
  101. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +4 -6
  102. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  103. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +1 -1
  104. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  105. package/FrameGraph/frameGraph.js +22 -11
  106. package/FrameGraph/frameGraph.js.map +1 -1
  107. package/FrameGraph/frameGraphRenderContext.d.ts +2 -1
  108. package/FrameGraph/frameGraphRenderContext.js +2 -1
  109. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  110. package/FrameGraph/frameGraphTask.d.ts +11 -1
  111. package/FrameGraph/frameGraphTask.js +8 -0
  112. package/FrameGraph/frameGraphTask.js.map +1 -1
  113. package/FrameGraph/frameGraphTextureManager.d.ts +9 -3
  114. package/FrameGraph/frameGraphTextureManager.js +10 -4
  115. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  116. package/FrameGraph/index.d.ts +2 -0
  117. package/FrameGraph/index.js +2 -0
  118. package/FrameGraph/index.js.map +1 -1
  119. package/Gizmos/planeRotationGizmo.js +10 -0
  120. package/Gizmos/planeRotationGizmo.js.map +1 -1
  121. package/Inputs/scene.inputManager.js +2 -2
  122. package/Inputs/scene.inputManager.js.map +1 -1
  123. package/Layers/effectLayer.d.ts +32 -33
  124. package/Layers/effectLayer.js +144 -530
  125. package/Layers/effectLayer.js.map +1 -1
  126. package/Layers/glowLayer.d.ts +14 -41
  127. package/Layers/glowLayer.js +92 -178
  128. package/Layers/glowLayer.js.map +1 -1
  129. package/Layers/highlightLayer.d.ts +0 -1
  130. package/Layers/highlightLayer.js +0 -1
  131. package/Layers/highlightLayer.js.map +1 -1
  132. package/Layers/index.d.ts +2 -0
  133. package/Layers/index.js +2 -0
  134. package/Layers/index.js.map +1 -1
  135. package/Layers/thinEffectLayer.d.ts +230 -0
  136. package/Layers/thinEffectLayer.js +734 -0
  137. package/Layers/thinEffectLayer.js.map +1 -0
  138. package/Layers/thinGlowLayer.d.ts +141 -0
  139. package/Layers/thinGlowLayer.js +292 -0
  140. package/Layers/thinGlowLayer.js.map +1 -0
  141. package/Lights/Shadows/shadowGenerator.js +40 -19
  142. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  143. package/Materials/GreasedLine/greasedLinePluginMaterial.d.ts +6 -2
  144. package/Materials/GreasedLine/greasedLinePluginMaterial.js +8 -2
  145. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  146. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +17 -11
  147. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  148. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +29 -15
  149. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
  150. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +1 -0
  151. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +1 -0
  152. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  153. package/Materials/Node/Blocks/Input/inputBlock.js +34 -2
  154. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  155. package/Materials/Node/Blocks/PBR/reflectionBlock.js +1 -3
  156. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  157. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +3 -3
  158. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +34 -24
  160. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  161. package/Materials/Node/nodeMaterial.d.ts +14 -2
  162. package/Materials/Node/nodeMaterial.js +19 -5
  163. package/Materials/Node/nodeMaterial.js.map +1 -1
  164. package/Materials/PBR/pbrBaseMaterial.d.ts +5 -0
  165. package/Materials/PBR/pbrBaseMaterial.js +6 -0
  166. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  167. package/Materials/Textures/Filtering/hdrFiltering.js +1 -0
  168. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  169. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +69 -0
  170. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +187 -0
  171. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -0
  172. package/Materials/Textures/hdrCubeTexture.d.ts +5 -1
  173. package/Materials/Textures/hdrCubeTexture.js +29 -3
  174. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  175. package/Materials/Textures/index.d.ts +4 -0
  176. package/Materials/Textures/index.js +4 -0
  177. package/Materials/Textures/index.js.map +1 -1
  178. package/Materials/Textures/renderTargetTexture.d.ts +12 -0
  179. package/Materials/Textures/renderTargetTexture.js +29 -8
  180. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  181. package/Materials/materialHelper.functions.d.ts +17 -1
  182. package/Materials/materialHelper.functions.js +76 -4
  183. package/Materials/materialHelper.functions.js.map +1 -1
  184. package/Materials/shaderMaterial.d.ts +5 -4
  185. package/Materials/shaderMaterial.js +28 -51
  186. package/Materials/shaderMaterial.js.map +1 -1
  187. package/Materials/standardMaterial.d.ts +6 -2
  188. package/Materials/standardMaterial.js +5 -2
  189. package/Materials/standardMaterial.js.map +1 -1
  190. package/Meshes/Builders/greasedLineBuilder.d.ts +1 -1
  191. package/Meshes/Builders/planeBuilder.js +2 -2
  192. package/Meshes/Builders/planeBuilder.js.map +1 -1
  193. package/Meshes/Compression/dracoCodec.d.ts +4 -4
  194. package/Meshes/Compression/dracoCodec.js.map +1 -1
  195. package/Meshes/Compression/dracoCompression.d.ts +1 -1
  196. package/Meshes/Compression/dracoCompression.js.map +1 -1
  197. package/Meshes/Compression/dracoCompressionWorker.d.ts +16 -30
  198. package/Meshes/Compression/dracoCompressionWorker.js +128 -22
  199. package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
  200. package/Meshes/Compression/dracoDecoder.d.ts +4 -9
  201. package/Meshes/Compression/dracoDecoder.js +5 -5
  202. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  203. package/Meshes/Compression/dracoDecoder.types.d.ts +52 -0
  204. package/Meshes/Compression/dracoDecoder.types.js +2 -0
  205. package/Meshes/Compression/dracoDecoder.types.js.map +1 -0
  206. package/Meshes/Compression/dracoEncoder.d.ts +91 -0
  207. package/Meshes/Compression/dracoEncoder.js +239 -0
  208. package/Meshes/Compression/dracoEncoder.js.map +1 -0
  209. package/Meshes/Compression/dracoEncoder.types.d.ts +82 -0
  210. package/Meshes/Compression/dracoEncoder.types.js +2 -0
  211. package/Meshes/Compression/dracoEncoder.types.js.map +1 -0
  212. package/Meshes/Compression/index.d.ts +1 -0
  213. package/Meshes/Compression/index.js +1 -0
  214. package/Meshes/Compression/index.js.map +1 -1
  215. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +92 -2
  216. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +308 -32
  217. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  218. package/Meshes/GreasedLine/greasedLineBaseMesh.js +4 -1
  219. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  220. package/Meshes/GreasedLine/greasedLineRibbonMesh.js +1 -1
  221. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  222. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +1 -1
  223. package/Meshes/abstractMesh.d.ts +1 -2
  224. package/Meshes/abstractMesh.js +1 -2
  225. package/Meshes/abstractMesh.js.map +1 -1
  226. package/Meshes/linesMesh.js +2 -2
  227. package/Meshes/linesMesh.js.map +1 -1
  228. package/Meshes/mesh.d.ts +32 -5
  229. package/Meshes/mesh.js +56 -29
  230. package/Meshes/mesh.js.map +1 -1
  231. package/Meshes/subMesh.js +16 -3
  232. package/Meshes/subMesh.js.map +1 -1
  233. package/Meshes/transformNode.js +2 -0
  234. package/Meshes/transformNode.js.map +1 -1
  235. package/Misc/decorators.serialization.js +2 -0
  236. package/Misc/decorators.serialization.js.map +1 -1
  237. package/Misc/fileTools.js +14 -7
  238. package/Misc/fileTools.js.map +1 -1
  239. package/Misc/greasedLineTools.d.ts +1 -1
  240. package/Misc/logger.d.ts +2 -1
  241. package/Misc/logger.js +2 -1
  242. package/Misc/logger.js.map +1 -1
  243. package/Morph/morphTargetManager.d.ts +21 -0
  244. package/Morph/morphTargetManager.js +37 -2
  245. package/Morph/morphTargetManager.js.map +1 -1
  246. package/Particles/pointsCloudSystem.d.ts +3 -3
  247. package/Physics/v2/Plugins/havokPlugin.d.ts +2 -2
  248. package/PostProcesses/index.d.ts +1 -0
  249. package/PostProcesses/index.js +1 -0
  250. package/PostProcesses/index.js.map +1 -1
  251. package/PostProcesses/passPostProcess.d.ts +2 -3
  252. package/PostProcesses/passPostProcess.js +36 -48
  253. package/PostProcesses/passPostProcess.js.map +1 -1
  254. package/PostProcesses/thinPassPostProcess.d.ts +48 -0
  255. package/PostProcesses/thinPassPostProcess.js +113 -0
  256. package/PostProcesses/thinPassPostProcess.js.map +1 -0
  257. package/PostProcesses/volumetricLightScatteringPostProcess.js +15 -16
  258. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  259. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +1 -1
  260. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  261. package/Rendering/depthRenderer.js +13 -15
  262. package/Rendering/depthRenderer.js.map +1 -1
  263. package/Rendering/geometryBufferRenderer.js +13 -15
  264. package/Rendering/geometryBufferRenderer.js.map +1 -1
  265. package/Rendering/iblCdfGenerator.d.ts +13 -5
  266. package/Rendering/iblCdfGenerator.js +67 -10
  267. package/Rendering/iblCdfGenerator.js.map +1 -1
  268. package/Rendering/objectRenderer.d.ts +9 -2
  269. package/Rendering/objectRenderer.js +44 -7
  270. package/Rendering/objectRenderer.js.map +1 -1
  271. package/Rendering/outlineRenderer.js +13 -15
  272. package/Rendering/outlineRenderer.js.map +1 -1
  273. package/Shaders/ShadersInclude/gaussianSplatting.js +6 -6
  274. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  275. package/Shaders/ShadersInclude/morphTargetsVertex.js +16 -4
  276. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  277. package/Shaders/ShadersInclude/pbrBlockReflection.js +13 -8
  278. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  279. package/Shaders/gaussianSplatting.vertex.js +2 -1
  280. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  281. package/Shaders/hdrIrradianceFiltering.fragment.d.ts +9 -0
  282. package/Shaders/hdrIrradianceFiltering.fragment.js +25 -0
  283. package/Shaders/hdrIrradianceFiltering.fragment.js.map +1 -0
  284. package/Shaders/hdrIrradianceFiltering.vertex.d.ts +5 -0
  285. package/Shaders/hdrIrradianceFiltering.vertex.js +15 -0
  286. package/Shaders/hdrIrradianceFiltering.vertex.js.map +1 -0
  287. package/Shaders/pbr.fragment.js +1 -3
  288. package/Shaders/pbr.fragment.js.map +1 -1
  289. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +17 -5
  290. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  291. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js +13 -8
  292. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js.map +1 -1
  293. package/ShadersWGSL/greasedLine.fragment.js +9 -3
  294. package/ShadersWGSL/greasedLine.fragment.js.map +1 -1
  295. package/ShadersWGSL/greasedLine.vertex.js +12 -2
  296. package/ShadersWGSL/greasedLine.vertex.js.map +1 -1
  297. package/ShadersWGSL/hdrIrradianceFiltering.fragment.d.ts +9 -0
  298. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js +26 -0
  299. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js.map +1 -0
  300. package/ShadersWGSL/hdrIrradianceFiltering.vertex.d.ts +5 -0
  301. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js +16 -0
  302. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js.map +1 -0
  303. package/ShadersWGSL/outline.fragment.js +1 -1
  304. package/ShadersWGSL/outline.fragment.js.map +1 -1
  305. package/ShadersWGSL/passCube.fragment.js +1 -1
  306. package/ShadersWGSL/passCube.fragment.js.map +1 -1
  307. package/ShadersWGSL/pbr.fragment.js +1 -3
  308. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  309. package/XR/features/WebXRDepthSensing.d.ts +24 -2
  310. package/XR/features/WebXRDepthSensing.js +320 -26
  311. package/XR/features/WebXRDepthSensing.js.map +1 -1
  312. package/assetContainer.d.ts +43 -0
  313. package/assetContainer.js +67 -0
  314. package/assetContainer.js.map +1 -1
  315. package/package.json +1 -1
  316. package/scene.js +19 -8
  317. package/scene.js.map +1 -1
@@ -11,6 +11,7 @@ import "../thinInstanceMesh.js";
11
11
  import { ToHalfFloat } from "../../Misc/textureTools.js";
12
12
  import { Scalar } from "../../Maths/math.scalar.js";
13
13
  import { runCoroutineSync, runCoroutineAsync, createYieldingScheduler } from "../../Misc/coroutine.js";
14
+ import { EngineStore } from "../../Engines/engineStore.js";
14
15
  // @internal
15
16
  const unpackUnorm = (value, bits) => {
16
17
  const t = (1 << bits) - 1;
@@ -103,7 +104,58 @@ var PLYValue;
103
104
  PLYValue[PLYValue["ROT_1"] = 31] = "ROT_1";
104
105
  PLYValue[PLYValue["ROT_2"] = 32] = "ROT_2";
105
106
  PLYValue[PLYValue["ROT_3"] = 33] = "ROT_3";
106
- PLYValue[PLYValue["UNDEFINED"] = 34] = "UNDEFINED";
107
+ PLYValue[PLYValue["MIN_COLOR_R"] = 34] = "MIN_COLOR_R";
108
+ PLYValue[PLYValue["MIN_COLOR_G"] = 35] = "MIN_COLOR_G";
109
+ PLYValue[PLYValue["MIN_COLOR_B"] = 36] = "MIN_COLOR_B";
110
+ PLYValue[PLYValue["MAX_COLOR_R"] = 37] = "MAX_COLOR_R";
111
+ PLYValue[PLYValue["MAX_COLOR_G"] = 38] = "MAX_COLOR_G";
112
+ PLYValue[PLYValue["MAX_COLOR_B"] = 39] = "MAX_COLOR_B";
113
+ PLYValue[PLYValue["SH_0"] = 40] = "SH_0";
114
+ PLYValue[PLYValue["SH_1"] = 41] = "SH_1";
115
+ PLYValue[PLYValue["SH_2"] = 42] = "SH_2";
116
+ PLYValue[PLYValue["SH_3"] = 43] = "SH_3";
117
+ PLYValue[PLYValue["SH_4"] = 44] = "SH_4";
118
+ PLYValue[PLYValue["SH_5"] = 45] = "SH_5";
119
+ PLYValue[PLYValue["SH_6"] = 46] = "SH_6";
120
+ PLYValue[PLYValue["SH_7"] = 47] = "SH_7";
121
+ PLYValue[PLYValue["SH_8"] = 48] = "SH_8";
122
+ PLYValue[PLYValue["SH_9"] = 49] = "SH_9";
123
+ PLYValue[PLYValue["SH_10"] = 50] = "SH_10";
124
+ PLYValue[PLYValue["SH_11"] = 51] = "SH_11";
125
+ PLYValue[PLYValue["SH_12"] = 52] = "SH_12";
126
+ PLYValue[PLYValue["SH_13"] = 53] = "SH_13";
127
+ PLYValue[PLYValue["SH_14"] = 54] = "SH_14";
128
+ PLYValue[PLYValue["SH_15"] = 55] = "SH_15";
129
+ PLYValue[PLYValue["SH_16"] = 56] = "SH_16";
130
+ PLYValue[PLYValue["SH_17"] = 57] = "SH_17";
131
+ PLYValue[PLYValue["SH_18"] = 58] = "SH_18";
132
+ PLYValue[PLYValue["SH_19"] = 59] = "SH_19";
133
+ PLYValue[PLYValue["SH_20"] = 60] = "SH_20";
134
+ PLYValue[PLYValue["SH_21"] = 61] = "SH_21";
135
+ PLYValue[PLYValue["SH_22"] = 62] = "SH_22";
136
+ PLYValue[PLYValue["SH_23"] = 63] = "SH_23";
137
+ PLYValue[PLYValue["SH_24"] = 64] = "SH_24";
138
+ PLYValue[PLYValue["SH_25"] = 65] = "SH_25";
139
+ PLYValue[PLYValue["SH_26"] = 66] = "SH_26";
140
+ PLYValue[PLYValue["SH_27"] = 67] = "SH_27";
141
+ PLYValue[PLYValue["SH_28"] = 68] = "SH_28";
142
+ PLYValue[PLYValue["SH_29"] = 69] = "SH_29";
143
+ PLYValue[PLYValue["SH_30"] = 70] = "SH_30";
144
+ PLYValue[PLYValue["SH_31"] = 71] = "SH_31";
145
+ PLYValue[PLYValue["SH_32"] = 72] = "SH_32";
146
+ PLYValue[PLYValue["SH_33"] = 73] = "SH_33";
147
+ PLYValue[PLYValue["SH_34"] = 74] = "SH_34";
148
+ PLYValue[PLYValue["SH_35"] = 75] = "SH_35";
149
+ PLYValue[PLYValue["SH_36"] = 76] = "SH_36";
150
+ PLYValue[PLYValue["SH_37"] = 77] = "SH_37";
151
+ PLYValue[PLYValue["SH_38"] = 78] = "SH_38";
152
+ PLYValue[PLYValue["SH_39"] = 79] = "SH_39";
153
+ PLYValue[PLYValue["SH_40"] = 80] = "SH_40";
154
+ PLYValue[PLYValue["SH_41"] = 81] = "SH_41";
155
+ PLYValue[PLYValue["SH_42"] = 82] = "SH_42";
156
+ PLYValue[PLYValue["SH_43"] = 83] = "SH_43";
157
+ PLYValue[PLYValue["SH_44"] = 84] = "SH_44";
158
+ PLYValue[PLYValue["UNDEFINED"] = 85] = "UNDEFINED";
107
159
  })(PLYValue || (PLYValue = {}));
108
160
  /**
109
161
  * Class used to render a gaussian splatting mesh
@@ -371,8 +423,110 @@ export class GaussianSplattingMesh extends Mesh {
371
423
  return 32 /* PLYValue.ROT_2 */;
372
424
  case "rot_3":
373
425
  return 33 /* PLYValue.ROT_3 */;
426
+ case "min_r":
427
+ return 34 /* PLYValue.MIN_COLOR_R */;
428
+ case "min_g":
429
+ return 35 /* PLYValue.MIN_COLOR_G */;
430
+ case "min_b":
431
+ return 36 /* PLYValue.MIN_COLOR_B */;
432
+ case "max_r":
433
+ return 37 /* PLYValue.MAX_COLOR_R */;
434
+ case "max_g":
435
+ return 38 /* PLYValue.MAX_COLOR_G */;
436
+ case "max_b":
437
+ return 39 /* PLYValue.MAX_COLOR_B */;
438
+ case "f_rest_0":
439
+ return 40 /* PLYValue.SH_0 */;
440
+ case "f_rest_1":
441
+ return 41 /* PLYValue.SH_1 */;
442
+ case "f_rest_2":
443
+ return 42 /* PLYValue.SH_2 */;
444
+ case "f_rest_3":
445
+ return 43 /* PLYValue.SH_3 */;
446
+ case "f_rest_4":
447
+ return 44 /* PLYValue.SH_4 */;
448
+ case "f_rest_5":
449
+ return 45 /* PLYValue.SH_5 */;
450
+ case "f_rest_6":
451
+ return 46 /* PLYValue.SH_6 */;
452
+ case "f_rest_7":
453
+ return 47 /* PLYValue.SH_7 */;
454
+ case "f_rest_8":
455
+ return 48 /* PLYValue.SH_8 */;
456
+ case "f_rest_9":
457
+ return 49 /* PLYValue.SH_9 */;
458
+ case "f_rest_10":
459
+ return 50 /* PLYValue.SH_10 */;
460
+ case "f_rest_11":
461
+ return 51 /* PLYValue.SH_11 */;
462
+ case "f_rest_12":
463
+ return 52 /* PLYValue.SH_12 */;
464
+ case "f_rest_13":
465
+ return 53 /* PLYValue.SH_13 */;
466
+ case "f_rest_14":
467
+ return 54 /* PLYValue.SH_14 */;
468
+ case "f_rest_15":
469
+ return 55 /* PLYValue.SH_15 */;
470
+ case "f_rest_16":
471
+ return 56 /* PLYValue.SH_16 */;
472
+ case "f_rest_17":
473
+ return 57 /* PLYValue.SH_17 */;
474
+ case "f_rest_18":
475
+ return 58 /* PLYValue.SH_18 */;
476
+ case "f_rest_19":
477
+ return 59 /* PLYValue.SH_19 */;
478
+ case "f_rest_20":
479
+ return 60 /* PLYValue.SH_20 */;
480
+ case "f_rest_21":
481
+ return 61 /* PLYValue.SH_21 */;
482
+ case "f_rest_22":
483
+ return 62 /* PLYValue.SH_22 */;
484
+ case "f_rest_23":
485
+ return 63 /* PLYValue.SH_23 */;
486
+ case "f_rest_24":
487
+ return 64 /* PLYValue.SH_24 */;
488
+ case "f_rest_25":
489
+ return 65 /* PLYValue.SH_25 */;
490
+ case "f_rest_26":
491
+ return 66 /* PLYValue.SH_26 */;
492
+ case "f_rest_27":
493
+ return 67 /* PLYValue.SH_27 */;
494
+ case "f_rest_28":
495
+ return 68 /* PLYValue.SH_28 */;
496
+ case "f_rest_29":
497
+ return 69 /* PLYValue.SH_29 */;
498
+ case "f_rest_30":
499
+ return 70 /* PLYValue.SH_30 */;
500
+ case "f_rest_31":
501
+ return 71 /* PLYValue.SH_31 */;
502
+ case "f_rest_32":
503
+ return 72 /* PLYValue.SH_32 */;
504
+ case "f_rest_33":
505
+ return 73 /* PLYValue.SH_33 */;
506
+ case "f_rest_34":
507
+ return 74 /* PLYValue.SH_34 */;
508
+ case "f_rest_35":
509
+ return 75 /* PLYValue.SH_35 */;
510
+ case "f_rest_36":
511
+ return 76 /* PLYValue.SH_36 */;
512
+ case "f_rest_37":
513
+ return 77 /* PLYValue.SH_37 */;
514
+ case "f_rest_38":
515
+ return 78 /* PLYValue.SH_38 */;
516
+ case "f_rest_39":
517
+ return 79 /* PLYValue.SH_39 */;
518
+ case "f_rest_40":
519
+ return 80 /* PLYValue.SH_40 */;
520
+ case "f_rest_41":
521
+ return 81 /* PLYValue.SH_41 */;
522
+ case "f_rest_42":
523
+ return 82 /* PLYValue.SH_42 */;
524
+ case "f_rest_43":
525
+ return 83 /* PLYValue.SH_43 */;
526
+ case "f_rest_44":
527
+ return 84 /* PLYValue.SH_44 */;
374
528
  }
375
- return 34 /* PLYValue.UNDEFINED */;
529
+ return 85 /* PLYValue.UNDEFINED */;
376
530
  }
377
531
  /**
378
532
  * Parse a PLY file header and returns metas infos on splats and chunks
@@ -415,10 +569,21 @@ export class GaussianSplattingMesh extends Mesh {
415
569
  const vertexProperties = [];
416
570
  const chunkProperties = [];
417
571
  const filtered = header.slice(0, headerEndIndex).split("\n");
572
+ let shDegree = 0;
418
573
  for (const prop of filtered) {
419
574
  if (prop.startsWith("property ")) {
420
575
  const [, typeName, name] = prop.split(" ");
421
576
  const value = GaussianSplattingMesh._ValueNameToEnum(name);
577
+ // SH degree 1,2 or 3 for 9, 24 or 45 values
578
+ if (value >= 84 /* PLYValue.SH_44 */) {
579
+ shDegree = 3;
580
+ }
581
+ else if (value >= 64 /* PLYValue.SH_24 */) {
582
+ shDegree = 2;
583
+ }
584
+ else if (value >= 48 /* PLYValue.SH_8 */) {
585
+ shDegree = 1;
586
+ }
422
587
  const type = GaussianSplattingMesh._TypeNameToEnum(typeName);
423
588
  if (chunkMode == 1 /* ElementMode.Chunk */) {
424
589
  chunkProperties.push({ value, type, offset: rowChunkOffset });
@@ -444,6 +609,13 @@ export class GaussianSplattingMesh extends Mesh {
444
609
  }
445
610
  const dataView = new DataView(data, headerEndIndex + headerEnd.length);
446
611
  const buffer = new ArrayBuffer(GaussianSplattingMesh._RowOutputLength * vertexCount);
612
+ let shBuffer = null;
613
+ let shCoefficientCount = 0;
614
+ if (shDegree) {
615
+ const shVectorCount = (shDegree + 1) * (shDegree + 1) - 1;
616
+ shCoefficientCount = shVectorCount * 3;
617
+ shBuffer = new ArrayBuffer(shCoefficientCount * vertexCount);
618
+ }
447
619
  return {
448
620
  vertexCount: vertexCount,
449
621
  chunkCount: chunkCount,
@@ -453,6 +625,9 @@ export class GaussianSplattingMesh extends Mesh {
453
625
  chunkProperties: chunkProperties,
454
626
  dataView: dataView,
455
627
  buffer: buffer,
628
+ shDegree: shDegree,
629
+ shCoefficientCount: shCoefficientCount,
630
+ shBuffer: shBuffer,
456
631
  };
457
632
  }
458
633
  static _GetCompressedChunks(header, offset) {
@@ -462,7 +637,14 @@ export class GaussianSplattingMesh extends Mesh {
462
637
  const dataView = header.dataView;
463
638
  const compressedChunks = new Array(header.chunkCount);
464
639
  for (let i = 0; i < header.chunkCount; i++) {
465
- const currentChunk = { min: new Vector3(), max: new Vector3(), minScale: new Vector3(), maxScale: new Vector3() };
640
+ const currentChunk = {
641
+ min: new Vector3(),
642
+ max: new Vector3(),
643
+ minScale: new Vector3(),
644
+ maxScale: new Vector3(),
645
+ minColor: new Vector3(0, 0, 0),
646
+ maxColor: new Vector3(1, 1, 1),
647
+ };
466
648
  compressedChunks[i] = currentChunk;
467
649
  for (let propertyIndex = 0; propertyIndex < header.chunkProperties.length; propertyIndex++) {
468
650
  const property = header.chunkProperties[propertyIndex];
@@ -511,6 +693,24 @@ export class GaussianSplattingMesh extends Mesh {
511
693
  case 11 /* PLYValue.MAX_SCALE_Z */:
512
694
  currentChunk.maxScale.z = value;
513
695
  break;
696
+ case 34 /* PLYValue.MIN_COLOR_R */:
697
+ currentChunk.minColor.x = value;
698
+ break;
699
+ case 35 /* PLYValue.MIN_COLOR_G */:
700
+ currentChunk.minColor.y = value;
701
+ break;
702
+ case 36 /* PLYValue.MIN_COLOR_B */:
703
+ currentChunk.minColor.z = value;
704
+ break;
705
+ case 37 /* PLYValue.MAX_COLOR_R */:
706
+ currentChunk.maxColor.x = value;
707
+ break;
708
+ case 38 /* PLYValue.MAX_COLOR_G */:
709
+ currentChunk.maxColor.y = value;
710
+ break;
711
+ case 39 /* PLYValue.MAX_COLOR_B */:
712
+ currentChunk.maxColor.z = value;
713
+ break;
514
714
  }
515
715
  }
516
716
  offset.value += header.rowChunkLength;
@@ -527,6 +727,10 @@ export class GaussianSplattingMesh extends Mesh {
527
727
  const scale = new Float32Array(buffer, index * rowOutputLength + 12, 3);
528
728
  const rgba = new Uint8ClampedArray(buffer, index * rowOutputLength + 24, 4);
529
729
  const rot = new Uint8ClampedArray(buffer, index * rowOutputLength + 28, 4);
730
+ let sh = null;
731
+ if (header.shBuffer) {
732
+ sh = new Uint8ClampedArray(header.shBuffer, index * header.shCoefficientCount, header.shCoefficientCount);
733
+ }
530
734
  const chunkIndex = index >> 8;
531
735
  let r0 = 255;
532
736
  let r1 = 0;
@@ -560,7 +764,7 @@ export class GaussianSplattingMesh extends Mesh {
560
764
  const compressedChunk = compressedChunks[chunkIndex];
561
765
  unpack111011(value, temp3);
562
766
  position[0] = Scalar.Lerp(compressedChunk.min.x, compressedChunk.max.x, temp3.x);
563
- position[1] = -Scalar.Lerp(compressedChunk.min.y, compressedChunk.max.y, temp3.y);
767
+ position[1] = Scalar.Lerp(compressedChunk.min.y, compressedChunk.max.y, temp3.y);
564
768
  position[2] = Scalar.Lerp(compressedChunk.min.z, compressedChunk.max.z, temp3.z);
565
769
  }
566
770
  break;
@@ -568,9 +772,9 @@ export class GaussianSplattingMesh extends Mesh {
568
772
  {
569
773
  unpackRot(value, q);
570
774
  r0 = q.w;
571
- r1 = q.z;
775
+ r1 = -q.z;
572
776
  r2 = q.y;
573
- r3 = q.x;
777
+ r3 = -q.x;
574
778
  }
575
779
  break;
576
780
  case 14 /* PLYValue.PACKED_SCALE */:
@@ -583,7 +787,13 @@ export class GaussianSplattingMesh extends Mesh {
583
787
  }
584
788
  break;
585
789
  case 15 /* PLYValue.PACKED_COLOR */:
586
- unpack8888(value, rgba);
790
+ {
791
+ const compressedChunk = compressedChunks[chunkIndex];
792
+ unpack8888(value, rgba);
793
+ rgba[0] = Scalar.Lerp(compressedChunk.minColor.x, compressedChunk.maxColor.x, rgba[0] / 255) * 255;
794
+ rgba[1] = Scalar.Lerp(compressedChunk.minColor.y, compressedChunk.maxColor.y, rgba[1] / 255) * 255;
795
+ rgba[2] = Scalar.Lerp(compressedChunk.minColor.z, compressedChunk.maxColor.z, rgba[2] / 255) * 255;
796
+ }
587
797
  break;
588
798
  case 16 /* PLYValue.X */:
589
799
  position[0] = value;
@@ -640,6 +850,11 @@ export class GaussianSplattingMesh extends Mesh {
640
850
  r3 = value;
641
851
  break;
642
852
  }
853
+ if (sh && property.value >= 40 /* PLYValue.SH_0 */ && property.value <= 84 /* PLYValue.SH_44 */) {
854
+ const clampedValue = Scalar.Clamp(value * 127.5 + 127.5, 0, 255);
855
+ const shIndex = property.value - 40 /* PLYValue.SH_0 */;
856
+ sh[shIndex] = clampedValue;
857
+ }
643
858
  }
644
859
  q.set(r1, r2, r3, r0);
645
860
  q.normalize();
@@ -649,12 +864,64 @@ export class GaussianSplattingMesh extends Mesh {
649
864
  rot[3] = q.z * 128 + 128;
650
865
  offset.value += header.rowVertexLength;
651
866
  }
867
+ /**
868
+ * Converts a .ply data with SH coefficients splat
869
+ * if data array buffer is not ply, returns the original buffer
870
+ * @param data the .ply data to load
871
+ * @param useCoroutine use coroutine and yield
872
+ * @returns the loaded splat buffer and optional array of sh coefficients
873
+ */
874
+ static *ConvertPLYWithSHToSplat(data, useCoroutine = false) {
875
+ const header = GaussianSplattingMesh.ParseHeader(data);
876
+ if (!header) {
877
+ return { buffer: data };
878
+ }
879
+ const offset = { value: 0 };
880
+ const compressedChunks = GaussianSplattingMesh._GetCompressedChunks(header, offset);
881
+ for (let i = 0; i < header.vertexCount; i++) {
882
+ GaussianSplattingMesh._GetSplat(header, i, compressedChunks, offset);
883
+ if (i % GaussianSplattingMesh._PlyConversionBatchSize === 0 && useCoroutine) {
884
+ yield;
885
+ }
886
+ }
887
+ let sh = null;
888
+ // make SH texture buffers
889
+ if (header.shDegree && header.shBuffer) {
890
+ const textureCount = Math.ceil(header.shCoefficientCount / 16); // 4 components can be stored per texture, 4 sh per component
891
+ let shIndexRead = 0;
892
+ const ubuf = new Uint8Array(header.shBuffer);
893
+ // sh is an array of uint8array that will be used to create sh textures
894
+ sh = [];
895
+ const splatCount = header.vertexCount;
896
+ const engine = EngineStore.LastCreatedEngine;
897
+ if (engine) {
898
+ const width = engine.getCaps().maxTextureSize;
899
+ const height = Math.ceil(splatCount / width);
900
+ // create array for the number of textures needed.
901
+ for (let textureIndex = 0; textureIndex < textureCount; textureIndex++) {
902
+ const texture = new Uint8Array(height * width * 4 * 4); // 4 components per texture, 4 sh per component
903
+ sh.push(texture);
904
+ }
905
+ for (let i = 0; i < splatCount; i++) {
906
+ for (let shIndexWrite = 0; shIndexWrite < header.shCoefficientCount; shIndexWrite++) {
907
+ const shValue = ubuf[shIndexRead++];
908
+ const textureIndex = Math.floor(shIndexWrite / 16);
909
+ const shArray = sh[textureIndex];
910
+ const byteIndexInTexture = shIndexWrite % 16; // [0..15]
911
+ const offsetPerSplat = i * 16; // 16 sh values per texture per splat.
912
+ shArray[byteIndexInTexture + offsetPerSplat] = shValue;
913
+ }
914
+ }
915
+ }
916
+ }
917
+ return { buffer: header.buffer, sh: sh };
918
+ }
652
919
  /**
653
920
  * Converts a .ply data array buffer to splat
654
921
  * if data array buffer is not ply, returns the original buffer
655
922
  * @param data the .ply data to load
656
923
  * @param useCoroutine use coroutine and yield
657
- * @returns the loaded splat buffer
924
+ * @returns the loaded splat buffer without SH coefficient, whether ply contains or not SH.
658
925
  */
659
926
  static *ConvertPLYToSplat(data, useCoroutine = false) {
660
927
  const header = GaussianSplattingMesh.ParseHeader(data);
@@ -680,6 +947,15 @@ export class GaussianSplattingMesh extends Mesh {
680
947
  static async ConvertPLYToSplatAsync(data) {
681
948
  return runCoroutineAsync(GaussianSplattingMesh.ConvertPLYToSplat(data, true), createYieldingScheduler());
682
949
  }
950
+ /**
951
+ * Converts a .ply with SH data array buffer to splat
952
+ * if data array buffer is not ply, returns the original buffer
953
+ * @param data the .ply data to load
954
+ * @returns the loaded splat buffer with SH
955
+ */
956
+ static async ConvertPLYWithSHToSplatAsync(data) {
957
+ return runCoroutineAsync(GaussianSplattingMesh.ConvertPLYWithSHToSplat(data, true), createYieldingScheduler());
958
+ }
683
959
  /**
684
960
  * Loads a .splat Gaussian Splatting array buffer asynchronously
685
961
  * @param data arraybuffer containing splat file
@@ -696,8 +972,8 @@ export class GaussianSplattingMesh extends Mesh {
696
972
  */
697
973
  loadFileAsync(url) {
698
974
  return Tools.LoadFileAsync(url, true).then(async (plyBuffer) => {
699
- GaussianSplattingMesh.ConvertPLYToSplatAsync(plyBuffer).then((splatsData) => {
700
- this.updateDataAsync(splatsData);
975
+ GaussianSplattingMesh.ConvertPLYWithSHToSplatAsync(plyBuffer).then((splatsData) => {
976
+ this.updateDataAsync(splatsData.buffer, splatsData.sh);
701
977
  });
702
978
  });
703
979
  }
@@ -757,22 +1033,22 @@ export class GaussianSplattingMesh extends Mesh {
757
1033
  newGS.setEnabled(true);
758
1034
  return newGS;
759
1035
  }
760
- _makeSplat(sourceIndex, destinationIndex, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum) {
1036
+ _makeSplat(index, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum) {
761
1037
  const matrixRotation = TmpVectors.Matrix[0];
762
1038
  const matrixScale = TmpVectors.Matrix[1];
763
1039
  const quaternion = TmpVectors.Quaternion[0];
764
1040
  const covBSItemSize = this._useRGBACovariants ? 4 : 2;
765
- const x = fBuffer[8 * sourceIndex + 0];
766
- const y = -fBuffer[8 * sourceIndex + 1];
767
- const z = fBuffer[8 * sourceIndex + 2];
768
- this._splatPositions[4 * sourceIndex + 0] = x;
769
- this._splatPositions[4 * sourceIndex + 1] = y;
770
- this._splatPositions[4 * sourceIndex + 2] = z;
1041
+ const x = fBuffer[8 * index + 0];
1042
+ const y = -fBuffer[8 * index + 1];
1043
+ const z = fBuffer[8 * index + 2];
1044
+ this._splatPositions[4 * index + 0] = x;
1045
+ this._splatPositions[4 * index + 1] = y;
1046
+ this._splatPositions[4 * index + 2] = z;
771
1047
  minimum.minimizeInPlaceFromFloats(x, y, z);
772
1048
  maximum.maximizeInPlaceFromFloats(x, y, z);
773
- quaternion.set((uBuffer[32 * sourceIndex + 28 + 1] - 127.5) / 127.5, (uBuffer[32 * sourceIndex + 28 + 2] - 127.5) / 127.5, (uBuffer[32 * sourceIndex + 28 + 3] - 127.5) / 127.5, -(uBuffer[32 * sourceIndex + 28 + 0] - 127.5) / 127.5);
1049
+ quaternion.set((uBuffer[32 * index + 28 + 1] - 127.5) / 127.5, (uBuffer[32 * index + 28 + 2] - 127.5) / 127.5, (uBuffer[32 * index + 28 + 3] - 127.5) / 127.5, -(uBuffer[32 * index + 28 + 0] - 127.5) / 127.5);
774
1050
  quaternion.toRotationMatrix(matrixRotation);
775
- Matrix.ScalingToRef(fBuffer[8 * sourceIndex + 3 + 0] * 2, fBuffer[8 * sourceIndex + 3 + 1] * 2, fBuffer[8 * sourceIndex + 3 + 2] * 2, matrixScale);
1051
+ Matrix.ScalingToRef(fBuffer[8 * index + 3 + 0] * 2, fBuffer[8 * index + 3 + 1] * 2, fBuffer[8 * index + 3 + 2] * 2, matrixScale);
776
1052
  const M = matrixRotation.multiplyToRef(matrixScale, TmpVectors.Matrix[0]).m;
777
1053
  const covariances = this._tmpCovariances;
778
1054
  covariances[0] = M[0] * M[0] + M[1] * M[1] + M[2] * M[2];
@@ -786,19 +1062,19 @@ export class GaussianSplattingMesh extends Mesh {
786
1062
  for (let covIndex = 0; covIndex < 6; covIndex++) {
787
1063
  factor = Math.max(factor, Math.abs(covariances[covIndex]));
788
1064
  }
789
- this._splatPositions[4 * sourceIndex + 3] = factor;
1065
+ this._splatPositions[4 * index + 3] = factor;
790
1066
  const transform = factor;
791
- covA[destinationIndex * 4 + 0] = ToHalfFloat(covariances[0] / transform);
792
- covA[destinationIndex * 4 + 1] = ToHalfFloat(covariances[1] / transform);
793
- covA[destinationIndex * 4 + 2] = ToHalfFloat(covariances[2] / transform);
794
- covA[destinationIndex * 4 + 3] = ToHalfFloat(covariances[3] / transform);
795
- covB[destinationIndex * covBSItemSize + 0] = ToHalfFloat(covariances[4] / transform);
796
- covB[destinationIndex * covBSItemSize + 1] = ToHalfFloat(covariances[5] / transform);
1067
+ covA[index * 4 + 0] = ToHalfFloat(covariances[0] / transform);
1068
+ covA[index * 4 + 1] = ToHalfFloat(covariances[1] / transform);
1069
+ covA[index * 4 + 2] = ToHalfFloat(covariances[2] / transform);
1070
+ covA[index * 4 + 3] = ToHalfFloat(covariances[3] / transform);
1071
+ covB[index * covBSItemSize + 0] = ToHalfFloat(covariances[4] / transform);
1072
+ covB[index * covBSItemSize + 1] = ToHalfFloat(covariances[5] / transform);
797
1073
  // colors
798
- colorArray[destinationIndex * 4 + 0] = uBuffer[32 * sourceIndex + 24 + 0];
799
- colorArray[destinationIndex * 4 + 1] = uBuffer[32 * sourceIndex + 24 + 1];
800
- colorArray[destinationIndex * 4 + 2] = uBuffer[32 * sourceIndex + 24 + 2];
801
- colorArray[destinationIndex * 4 + 3] = uBuffer[32 * sourceIndex + 24 + 3];
1074
+ colorArray[index * 4 + 0] = uBuffer[32 * index + 24 + 0];
1075
+ colorArray[index * 4 + 1] = uBuffer[32 * index + 24 + 1];
1076
+ colorArray[index * 4 + 2] = uBuffer[32 * index + 24 + 2];
1077
+ colorArray[index * 4 + 3] = uBuffer[32 * index + 24 + 3];
802
1078
  }
803
1079
  _updateTextures(covA, covB, colorArray, sh) {
804
1080
  const textureSize = this._getTextureSize(this._vertexCount);
@@ -880,7 +1156,7 @@ export class GaussianSplattingMesh extends Mesh {
880
1156
  const updateLine = partIndex * lineCountUpdate;
881
1157
  const splatIndexBase = updateLine * textureSize.x;
882
1158
  for (let i = 0; i < textureLengthPerUpdate; i++) {
883
- this._makeSplat(splatIndexBase + i, splatIndexBase + i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);
1159
+ this._makeSplat(splatIndexBase + i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);
884
1160
  }
885
1161
  this._updateSubTextures(this._splatPositions, covA, covB, colorArray, updateLine, Math.min(lineCountUpdate, textureSize.y - updateLine));
886
1162
  // Update the binfo
@@ -897,7 +1173,7 @@ export class GaussianSplattingMesh extends Mesh {
897
1173
  }
898
1174
  else {
899
1175
  for (let i = 0; i < vertexCount; i++) {
900
- this._makeSplat(i, i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);
1176
+ this._makeSplat(i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);
901
1177
  if (isAsync && i % GaussianSplattingMesh._SplatBatchSize === 0) {
902
1178
  yield;
903
1179
  }