@onerjs/core 8.56.3 → 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 (484) 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/camera.pure.js +4 -0
  22. package/Cameras/camera.pure.js.map +1 -1
  23. package/Cameras/targetCamera.pure.d.ts +2 -0
  24. package/Cameras/targetCamera.pure.js +7 -1
  25. package/Cameras/targetCamera.pure.js.map +1 -1
  26. package/Collisions/gpuPicker.js +5 -5
  27. package/Collisions/gpuPicker.js.map +1 -1
  28. package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
  29. package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
  30. package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
  31. package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
  32. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
  33. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
  34. package/Engines/Extensions/engine.multiRender.pure.js +63 -0
  35. package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
  36. package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
  37. package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
  38. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
  39. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
  40. package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
  41. package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
  42. package/Engines/Extensions/index.d.ts +1 -0
  43. package/Engines/Extensions/index.js +1 -0
  44. package/Engines/Extensions/index.js.map +1 -1
  45. package/Engines/Extensions/pure.d.ts +1 -1
  46. package/Engines/Extensions/pure.js +1 -1
  47. package/Engines/Extensions/pure.js.map +1 -1
  48. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
  49. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
  50. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
  51. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
  52. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
  53. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
  54. package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
  55. package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
  56. package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
  57. package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
  58. package/Engines/WebGPU/Extensions/index.d.ts +1 -0
  59. package/Engines/WebGPU/Extensions/index.js +1 -0
  60. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  61. package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
  62. package/Engines/WebGPU/Extensions/pure.js +1 -1
  63. package/Engines/WebGPU/Extensions/pure.js.map +1 -1
  64. package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
  65. package/Engines/WebGPU/webgpuBundleList.js +4 -0
  66. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  67. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
  68. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  69. package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
  70. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  71. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  72. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  73. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
  74. package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
  75. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
  76. package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
  77. package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
  78. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  79. package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
  80. package/Engines/WebGPU/webgpuTextureManager.js +286 -13
  81. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  82. package/Engines/abstractEngine.pure.d.ts +2 -0
  83. package/Engines/abstractEngine.pure.js +7 -3
  84. package/Engines/abstractEngine.pure.js.map +1 -1
  85. package/Engines/constants.d.ts +4 -0
  86. package/Engines/constants.js +4 -0
  87. package/Engines/constants.js.map +1 -1
  88. package/Engines/thinEngine.pure.d.ts +14 -0
  89. package/Engines/thinEngine.pure.js +48 -12
  90. package/Engines/thinEngine.pure.js.map +1 -1
  91. package/Engines/thinNativeEngine.pure.d.ts +1 -0
  92. package/Engines/thinNativeEngine.pure.js +7 -1
  93. package/Engines/thinNativeEngine.pure.js.map +1 -1
  94. package/Engines/thinWebGPUEngine.d.ts +4 -0
  95. package/Engines/thinWebGPUEngine.js +10 -1
  96. package/Engines/thinWebGPUEngine.js.map +1 -1
  97. package/Engines/webgpuEngine.pure.d.ts +5 -2
  98. package/Engines/webgpuEngine.pure.js +48 -13
  99. package/Engines/webgpuEngine.pure.js.map +1 -1
  100. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
  101. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
  102. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
  103. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
  104. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
  105. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
  106. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
  107. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
  108. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
  109. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
  110. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
  111. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
  112. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
  113. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
  114. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
  115. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
  116. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
  117. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
  118. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
  119. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
  120. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
  121. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
  122. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  123. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
  124. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
  125. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
  126. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
  127. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  128. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
  129. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
  130. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
  131. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
  132. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
  133. package/FlowGraph/flowGraph.d.ts +4 -0
  134. package/FlowGraph/flowGraph.js +38 -7
  135. package/FlowGraph/flowGraph.js.map +1 -1
  136. package/FlowGraph/flowGraphBlock.js +3 -0
  137. package/FlowGraph/flowGraphBlock.js.map +1 -1
  138. package/FlowGraph/flowGraphConnection.d.ts +7 -0
  139. package/FlowGraph/flowGraphConnection.js +7 -0
  140. package/FlowGraph/flowGraphConnection.js.map +1 -1
  141. package/FlowGraph/flowGraphContext.d.ts +2 -1
  142. package/FlowGraph/flowGraphContext.js +4 -3
  143. package/FlowGraph/flowGraphContext.js.map +1 -1
  144. package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
  145. package/FlowGraph/flowGraphCoordinator.js +47 -16
  146. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  147. package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
  148. package/FlowGraph/flowGraphEventBlock.js +7 -0
  149. package/FlowGraph/flowGraphEventBlock.js.map +1 -1
  150. package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
  151. package/FlowGraph/flowGraphHostResolver.js.map +1 -1
  152. package/FlowGraph/flowGraphParser.js +60 -2
  153. package/FlowGraph/flowGraphParser.js.map +1 -1
  154. package/FlowGraph/serialization.d.ts +2 -0
  155. package/FlowGraph/serialization.js +10 -22
  156. package/FlowGraph/serialization.js.map +1 -1
  157. package/FlowGraph/typeDefinitions.d.ts +8 -0
  158. package/FlowGraph/typeDefinitions.js.map +1 -1
  159. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
  160. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
  161. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
  162. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
  163. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
  164. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
  165. package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
  166. package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
  167. package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
  168. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
  169. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  170. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
  171. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
  172. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
  174. package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  176. package/FrameGraph/Node/Blocks/index.js +1 -0
  177. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  178. package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
  179. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  180. package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
  181. package/FrameGraph/Node/Blocks/pure.js +1 -0
  182. package/FrameGraph/Node/Blocks/pure.js.map +1 -1
  183. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
  184. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
  185. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  186. package/FrameGraph/Node/nodeRenderGraph.js +1 -1
  187. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  188. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
  189. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
  190. package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
  191. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
  192. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
  193. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  194. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
  195. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
  196. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
  197. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
  198. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
  199. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  200. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
  201. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  202. package/FrameGraph/frameGraphObjectList.d.ts +6 -1
  203. package/FrameGraph/frameGraphObjectList.js.map +1 -1
  204. package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
  205. package/FrameGraph/frameGraphRenderContext.js +5 -5
  206. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  207. package/FrameGraph/index.d.ts +1 -0
  208. package/FrameGraph/index.js +1 -0
  209. package/FrameGraph/index.js.map +1 -1
  210. package/FrameGraph/pure.d.ts +1 -0
  211. package/FrameGraph/pure.js +1 -0
  212. package/FrameGraph/pure.js.map +1 -1
  213. package/Inputs/scene.inputManager.d.ts +4 -0
  214. package/Inputs/scene.inputManager.js +50 -8
  215. package/Inputs/scene.inputManager.js.map +1 -1
  216. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
  217. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
  218. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
  219. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  220. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
  221. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
  222. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  223. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
  224. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  225. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
  226. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  227. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
  228. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  229. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
  230. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  231. package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
  232. package/Materials/Node/nodeMaterial.pure.js +4 -0
  233. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  234. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
  235. package/Materials/Node/nodeMaterialBuildState.js +25 -3
  236. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  237. package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
  238. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
  239. package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
  240. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
  241. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  242. package/Materials/Textures/baseTexture.pure.js +3 -0
  243. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  244. package/Materials/Textures/cubeTexture.pure.js +1 -1
  245. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  246. package/Materials/Textures/internalTexture.d.ts +8 -1
  247. package/Materials/Textures/internalTexture.js +9 -2
  248. package/Materials/Textures/internalTexture.js.map +1 -1
  249. package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
  250. package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
  251. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  252. package/Materials/Textures/rawTexture3D.js +1 -1
  253. package/Materials/Textures/rawTexture3D.js.map +1 -1
  254. package/Materials/Textures/textureHelper.functions.d.ts +14 -0
  255. package/Materials/Textures/textureHelper.functions.js +24 -0
  256. package/Materials/Textures/textureHelper.functions.js.map +1 -1
  257. package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
  258. package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
  259. package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
  260. package/Materials/index.d.ts +1 -0
  261. package/Materials/index.js +1 -0
  262. package/Materials/index.js.map +1 -1
  263. package/Materials/materialHelper.geometryrendering.d.ts +46 -1
  264. package/Materials/materialHelper.geometryrendering.js +105 -8
  265. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  266. package/Materials/prepass.defines.d.ts +2 -0
  267. package/Materials/prepass.defines.js +2 -0
  268. package/Materials/prepass.defines.js.map +1 -1
  269. package/Materials/pure.d.ts +1 -0
  270. package/Materials/pure.js +1 -0
  271. package/Materials/pure.js.map +1 -1
  272. package/Materials/standardMaterial.pure.d.ts +2 -0
  273. package/Materials/standardMaterial.pure.js +6 -3
  274. package/Materials/standardMaterial.pure.js.map +1 -1
  275. package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
  276. package/Meshes/Builders/polygonBuilder.pure.js +4 -1
  277. package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
  278. package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
  279. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
  280. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
  281. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
  282. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
  283. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  284. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
  285. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
  286. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  287. package/Meshes/abstractMesh.pure.d.ts +18 -0
  288. package/Meshes/abstractMesh.pure.js +22 -0
  289. package/Meshes/abstractMesh.pure.js.map +1 -1
  290. package/Meshes/index.d.ts +1 -0
  291. package/Meshes/index.js +1 -0
  292. package/Meshes/index.js.map +1 -1
  293. package/Meshes/instancedMesh.pure.d.ts +5 -0
  294. package/Meshes/instancedMesh.pure.js +12 -0
  295. package/Meshes/instancedMesh.pure.js.map +1 -1
  296. package/Meshes/mesh.pure.js +23 -8
  297. package/Meshes/mesh.pure.js.map +1 -1
  298. package/Meshes/meshBlendingTag.d.ts +47 -0
  299. package/Meshes/meshBlendingTag.js +64 -0
  300. package/Meshes/meshBlendingTag.js.map +1 -0
  301. package/Meshes/polygonMesh.js +2 -2
  302. package/Meshes/polygonMesh.js.map +1 -1
  303. package/Meshes/pure.d.ts +1 -0
  304. package/Meshes/pure.js +1 -0
  305. package/Meshes/pure.js.map +1 -1
  306. package/Misc/fileTools.pure.js +21 -0
  307. package/Misc/fileTools.pure.js.map +1 -1
  308. package/Misc/snapshotRenderingHelper.js +2 -2
  309. package/Misc/snapshotRenderingHelper.js.map +1 -1
  310. package/Misc/tools.pure.js +1 -1
  311. package/Misc/tools.pure.js.map +1 -1
  312. package/Particles/gpuParticleSystem.pure.d.ts +2 -0
  313. package/Particles/gpuParticleSystem.pure.js +89 -28
  314. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  315. package/Particles/thinParticleSystem.pure.d.ts +2 -0
  316. package/Particles/thinParticleSystem.pure.js +84 -19
  317. package/Particles/thinParticleSystem.pure.js.map +1 -1
  318. package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
  319. package/Particles/webgl2ParticleSystem.pure.js +12 -4
  320. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  321. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
  322. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
  323. package/PostProcesses/index.d.ts +2 -0
  324. package/PostProcesses/index.js +2 -0
  325. package/PostProcesses/index.js.map +1 -1
  326. package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
  327. package/PostProcesses/meshBlendingBlueNoise.js +77 -0
  328. package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
  329. package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
  330. package/PostProcesses/meshBlendingPostProcess.js +315 -0
  331. package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
  332. package/PostProcesses/pure.d.ts +2 -0
  333. package/PostProcesses/pure.js +2 -0
  334. package/PostProcesses/pure.js.map +1 -1
  335. package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
  336. package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
  337. package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
  338. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
  339. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  340. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
  341. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  342. package/Rendering/boundingBoxRenderer.pure.js +2 -1
  343. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  344. package/Rendering/depthRenderer.pure.js +3 -4
  345. package/Rendering/depthRenderer.pure.js.map +1 -1
  346. package/Rendering/edgesRenderer.pure.d.ts +4 -2
  347. package/Rendering/edgesRenderer.pure.js +11 -2
  348. package/Rendering/edgesRenderer.pure.js.map +1 -1
  349. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
  350. package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
  351. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  352. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
  353. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
  354. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  355. package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
  356. package/Rendering/geometryBufferRenderer.pure.js +126 -17
  357. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  358. package/Rendering/objectRenderer.d.ts +7 -1
  359. package/Rendering/objectRenderer.js +45 -7
  360. package/Rendering/objectRenderer.js.map +1 -1
  361. package/Rendering/outlineRenderer.pure.js +6 -2
  362. package/Rendering/outlineRenderer.pure.js.map +1 -1
  363. package/Rendering/renderingManager.d.ts +1 -1
  364. package/Rendering/renderingManager.js +5 -4
  365. package/Rendering/renderingManager.js.map +1 -1
  366. package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  367. package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
  368. package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  369. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
  370. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  371. package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
  372. package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
  373. package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  374. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
  375. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  376. package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
  377. package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  378. package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
  379. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  380. package/Shaders/ShadersInclude/pbrDebug.js +6 -2
  381. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  382. package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
  383. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  384. package/Shaders/default.fragment.js +31 -40
  385. package/Shaders/default.fragment.js.map +1 -1
  386. package/Shaders/depthOfField.fragment.js +13 -9
  387. package/Shaders/depthOfField.fragment.js.map +1 -1
  388. package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
  389. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  390. package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
  391. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  392. package/Shaders/gaussianSplatting.fragment.js +63 -3
  393. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  394. package/Shaders/gaussianSplatting.vertex.js +80 -0
  395. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  396. package/Shaders/geometry.fragment.js +17 -11
  397. package/Shaders/geometry.fragment.js.map +1 -1
  398. package/Shaders/gpuRenderParticles.fragment.js +43 -1
  399. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  400. package/Shaders/gpuRenderParticles.vertex.js +96 -16
  401. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  402. package/Shaders/meshBlending.fragment.d.ts +5 -0
  403. package/Shaders/meshBlending.fragment.js +519 -0
  404. package/Shaders/meshBlending.fragment.js.map +1 -0
  405. package/Shaders/particles.fragment.js +43 -1
  406. package/Shaders/particles.fragment.js.map +1 -1
  407. package/Shaders/particles.vertex.js +84 -3
  408. package/Shaders/particles.vertex.js.map +1 -1
  409. package/Shaders/sprites.fragment.js +52 -2
  410. package/Shaders/sprites.fragment.js.map +1 -1
  411. package/Shaders/sprites.vertex.js +62 -1
  412. package/Shaders/sprites.vertex.js.map +1 -1
  413. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  414. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
  415. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  416. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
  417. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
  418. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  419. package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
  420. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  421. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
  422. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
  423. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
  424. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
  425. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
  426. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  427. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
  428. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
  429. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  430. package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
  431. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  432. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
  433. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  434. package/ShadersWGSL/default.fragment.js +17 -48
  435. package/ShadersWGSL/default.fragment.js.map +1 -1
  436. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
  437. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  438. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
  439. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  440. package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
  441. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  442. package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
  443. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  444. package/ShadersWGSL/geometry.fragment.js +37 -2
  445. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  446. package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
  447. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
  448. package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
  449. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
  450. package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
  451. package/ShadersWGSL/meshBlending.fragment.js +576 -0
  452. package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
  453. package/ShadersWGSL/openpbr.fragment.js +2 -1
  454. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  455. package/ShadersWGSL/particles.fragment.js +45 -1
  456. package/ShadersWGSL/particles.fragment.js.map +1 -1
  457. package/ShadersWGSL/particles.vertex.js +86 -4
  458. package/ShadersWGSL/particles.vertex.js.map +1 -1
  459. package/ShadersWGSL/pbr.fragment.js +2 -1
  460. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  461. package/ShadersWGSL/sprites.fragment.js +56 -2
  462. package/ShadersWGSL/sprites.fragment.js.map +1 -1
  463. package/ShadersWGSL/sprites.vertex.js +62 -1
  464. package/ShadersWGSL/sprites.vertex.js.map +1 -1
  465. package/Sprites/spriteManager.d.ts +13 -0
  466. package/Sprites/spriteManager.js +15 -0
  467. package/Sprites/spriteManager.js.map +1 -1
  468. package/Sprites/spriteRenderer.d.ts +24 -1
  469. package/Sprites/spriteRenderer.js +368 -50
  470. package/Sprites/spriteRenderer.js.map +1 -1
  471. package/Sprites/thinSprite.d.ts +4 -0
  472. package/Sprites/thinSprite.js +4 -0
  473. package/Sprites/thinSprite.js.map +1 -1
  474. package/States/alphaCullingState.d.ts +3 -1
  475. package/States/alphaCullingState.js +18 -3
  476. package/States/alphaCullingState.js.map +1 -1
  477. package/XR/webXRDefaultExperience.d.ts +5 -1
  478. package/XR/webXRDefaultExperience.js.map +1 -1
  479. package/XR/webXREnterExitUI.d.ts +2 -1
  480. package/XR/webXREnterExitUI.js.map +1 -1
  481. package/package.json +1 -1
  482. package/scene.pure.d.ts +23 -0
  483. package/scene.pure.js +35 -0
  484. package/scene.pure.js.map +1 -1
@@ -1,4 +1,5 @@
1
1
  /** This file must only contain pure code and pure imports */
2
+ import { Matrix } from "../../Maths/math.vector.pure.js";
2
3
  import { SerializationHelper } from "../../Misc/decorators.serialization.js";
3
4
  import { Logger } from "../../Misc/logger.js";
4
5
  import { VertexBuffer } from "../../Buffers/buffer.pure.js";
@@ -12,6 +13,9 @@ import { Material } from "../material.pure.js";
12
13
  import { BindFogParameters, BindLogDepth, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForMisc, PrepareUniformsAndSamplersList, } from "../materialHelper.functions.js";
13
14
  import { Engine } from "../../Engines/engine.pure.js";
14
15
  import { RegisterClass } from "../../Misc/typeStore.js";
16
+ import { PrepassDefinesMixin } from "../prepass.defines.js";
17
+ import { MaterialHelperGeometryRendering } from "../materialHelper.geometryrendering.js";
18
+ import { Observable } from "../../Misc/observable.pure.js";
15
19
  /**
16
20
  * Computes the maximum number of Gaussian Splatting compound parts supported by the given engine.
17
21
  * The limit is derived from the engine's maximum vertex uniform vectors capability.
@@ -33,10 +37,35 @@ export function GetGaussianSplattingMaxPartCount(engine) {
33
37
  * @deprecated Use {@link GetGaussianSplattingMaxPartCount} with an engine instance instead.
34
38
  */
35
39
  export const GaussianSplattingMaxPartCount = 128;
40
+ /**
41
+ * Returns an include-guarded declaration of the `vPartIndex` varying shared by the Gaussian
42
+ * Splatting material plugins (debug, solid-color, GPU picking). More than one of these plugins can
43
+ * be attached to the same material at once; each needs `vPartIndex` to carry `splat.partIndex` from
44
+ * the vertex to the fragment stage. Without a guard each plugin injects its own `varying vPartIndex`,
45
+ * which is a duplicate declaration — fatal under WGSL ("redefinition of 'vPartIndex'"). The guard
46
+ * makes the declaration idempotent so exactly one survives regardless of how many plugins inject it.
47
+ * Inject the result at a CUSTOM_VERTEX_DEFINITIONS / CUSTOM_FRAGMENT_DEFINITIONS point.
48
+ * @param shaderLanguage - The shader language the host material is compiling.
49
+ * @returns The guarded `vPartIndex` varying declaration.
50
+ */
51
+ export function GetPartIndexVaryingDeclaration(shaderLanguage) {
52
+ const decl = shaderLanguage === 1 /* ShaderLanguage.WGSL */ ? "varying vPartIndex: f32;" : "varying float vPartIndex;";
53
+ return `
54
+ #if !defined(VPARTINDEX_VARYING_DECLARED)
55
+ #define VPARTINDEX_VARYING_DECLARED
56
+ ${decl}
57
+ #endif
58
+ `;
59
+ }
60
+ /**
61
+ * @internal
62
+ */
63
+ class GaussianSplattingMaterialDefinesBase extends PrepassDefinesMixin(MaterialDefines) {
64
+ }
36
65
  /**
37
66
  * @internal
38
67
  */
39
- class GaussianSplattingMaterialDefines extends MaterialDefines {
68
+ class GaussianSplattingMaterialDefines extends GaussianSplattingMaterialDefinesBase {
40
69
  /**
41
70
  * Constructor of the defines.
42
71
  * @param externalProperties External properties (e.g. from material plugins) to add to the defines.
@@ -108,6 +137,10 @@ export class GaussianSplattingMaterial extends PushMaterial {
108
137
  // set to true when material defines are dirty
109
138
  this._isDirty = false;
110
139
  this._sourceMesh = null;
140
+ this._inverseProjection = Matrix.Identity();
141
+ this._geometryProjectionUpdateFlag = -1;
142
+ this._partMotionHistory = new Map();
143
+ this._renderPassObserver = null;
111
144
  this._voxelMissingTextureWarned = new Set();
112
145
  this._voxelPartWorldData = new Float32Array(0);
113
146
  this._voxelPartVisibilityData = [];
@@ -147,6 +180,16 @@ export class GaussianSplattingMaterial extends PushMaterial {
147
180
  needAlphaBlending() {
148
181
  return true;
149
182
  }
183
+ static _BindViewportAndFocal(effect, camera, renderWidth, renderHeight, invViewportWidth = renderWidth) {
184
+ effect.setFloat2("invViewport", 1 / invViewportWidth, 1 / renderHeight);
185
+ if (camera) {
186
+ const projection = camera.getProjectionMatrix();
187
+ effect.setFloat2("focal", (renderWidth * projection.m[0]) / 2, (renderHeight * projection.m[5]) / 2);
188
+ }
189
+ else {
190
+ effect.setFloat2("focal", 1000, 1000);
191
+ }
192
+ }
150
193
  /**
151
194
  * Checks whether the material is ready to be rendered for a given mesh.
152
195
  * @param mesh The mesh to render
@@ -190,6 +233,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
190
233
  }
191
234
  const engine = scene.getEngine();
192
235
  const gsMesh = this._sourceMesh;
236
+ MaterialHelperGeometryRendering.PrepareDefines(engine.currentRenderPassId, gsMesh, defines);
193
237
  // Misc.
194
238
  PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, false, defines, undefined, undefined, undefined, this._isVertexOutputInvariant);
195
239
  // Values that need to be evaluated on every frame
@@ -208,6 +252,13 @@ export class GaussianSplattingMaterial extends PushMaterial {
208
252
  }
209
253
  defines["IS_COMPOUND"] = gsMesh.isCompound;
210
254
  defines["MAX_PART_COUNT"] = GetGaussianSplattingMaxPartCount(engine);
255
+ if (gsMesh.isCompound && (defines.PREPASS_VELOCITY || defines.PREPASS_VELOCITY_LINEAR)) {
256
+ // Reserve the regular 40 vectors plus projection/history matrices and the depth range.
257
+ defines.MAX_PART_COUNT = Math.min(defines.MAX_PART_COUNT, Math.max(1, Math.floor((engine.getCaps().maxVertexUniformVectors - 53) / 9)));
258
+ if (gsMesh.partCount > defines.MAX_PART_COUNT) {
259
+ throw new Error(`GaussianSplattingMaterial "${this.name}": geometry velocity supports at most ${defines.MAX_PART_COUNT} compound parts on this engine`);
260
+ }
261
+ }
211
262
  defines["USE_SOG"] = gsMesh.useSog;
212
263
  defines["USE_SOG_V2"] = gsMesh.useSog && gsMesh.sogParams?.version === 2;
213
264
  // Compensation
@@ -223,6 +274,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
223
274
  const uniforms = GaussianSplattingMaterial._Uniforms.slice();
224
275
  const samplers = GaussianSplattingMaterial._Samplers.slice();
225
276
  const uniformBuffers = GaussianSplattingMaterial._UniformBuffers.slice();
277
+ MaterialHelperGeometryRendering.AddUniformsAndSamplers(uniforms, samplers);
226
278
  PrepareUniformsAndSamplersList({
227
279
  uniformsNames: uniforms,
228
280
  uniformBuffersNames: uniformBuffers,
@@ -253,8 +305,9 @@ export class GaussianSplattingMaterial extends PushMaterial {
253
305
  defines: join,
254
306
  onCompiled: this.onCompiled,
255
307
  onError: this.onError,
256
- indexParameters: {},
308
+ indexParameters: { SCENE_MRT_COUNT: defines.SCENE_MRT_COUNT },
257
309
  processCodeAfterIncludes: this._eventInfo.customCode,
310
+ multiTarget: defines.PREPASS,
258
311
  shaderLanguage: this._shaderLanguage,
259
312
  extraInitializationsAsync: async () => {
260
313
  if (this._shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
@@ -281,6 +334,9 @@ export class GaussianSplattingMaterial extends PushMaterial {
281
334
  * @param mesh mesh this material belongs to
282
335
  */
283
336
  setSourceMesh(mesh) {
337
+ if (this._sourceMesh !== mesh) {
338
+ this._partMotionHistory.clear();
339
+ }
284
340
  this._sourceMesh = mesh;
285
341
  }
286
342
  /**
@@ -299,37 +355,20 @@ export class GaussianSplattingMaterial extends PushMaterial {
299
355
  static BindEffect(mesh, effect, scene) {
300
356
  const engine = scene.getEngine();
301
357
  const camera = scene.activeCamera;
302
- const renderWidth = engine.getRenderWidth() * camera.viewport.width;
303
- const renderHeight = engine.getRenderHeight() * camera.viewport.height;
304
- const gsMaterial = mesh.material;
305
- if (!gsMaterial._sourceMesh) {
358
+ const renderWidth = engine.getRenderWidth() * (camera?.viewport.width ?? 1);
359
+ const renderHeight = engine.getRenderHeight() * (camera?.viewport.height ?? 1);
360
+ const material = mesh.material;
361
+ const gsMaterial = material instanceof GaussianSplattingMaterial ? material : null;
362
+ const gsMesh = gsMaterial?._sourceMesh ?? mesh.reservedDataStore?._gaussianSplattingSourceMesh;
363
+ if (!gsMesh) {
306
364
  return;
307
365
  }
308
- const gsMesh = gsMaterial._sourceMesh;
309
366
  // check if rigcamera, get number of rigs
310
367
  const numberOfRigs = camera?.rigParent?.rigCameras.length || 1;
311
- effect.setFloat2("invViewport", 1 / (renderWidth / numberOfRigs), 1 / renderHeight);
312
- let focal = 1000;
313
- if (camera) {
314
- /*
315
- more explicit version:
316
- const t = camera.getProjectionMatrix().m[5];
317
- const FovY = Math.atan(1.0 / t) * 2.0;
318
- focal = renderHeight / 2.0 / Math.tan(FovY / 2.0);
319
- Using a shorter version here to not have tan(atan) and 2.0 factor
320
- */
321
- const t = camera.getProjectionMatrix().m[5];
322
- if (camera.fovMode == Camera.FOVMODE_VERTICAL_FIXED) {
323
- focal = (renderHeight * t) / 2.0;
324
- }
325
- else {
326
- focal = (renderWidth * t) / 2.0;
327
- }
328
- }
329
- effect.setFloat2("focal", focal, focal);
330
- effect.setFloat("kernelSize", gsMaterial && gsMaterial.kernelSize ? gsMaterial.kernelSize : GaussianSplattingMaterial.KernelSize);
368
+ GaussianSplattingMaterial._BindViewportAndFocal(effect, camera, renderWidth, renderHeight, renderWidth / numberOfRigs);
369
+ effect.setFloat("kernelSize", gsMaterial?.kernelSize || GaussianSplattingMaterial.KernelSize);
331
370
  effect.setFloat("minPixelSize", gsMaterial ? gsMaterial.minPixelSize : GaussianSplattingMaterial.MinPixelSize);
332
- effect.setFloat("alpha", gsMaterial.alpha);
371
+ effect.setFloat("alpha", material?.alpha ?? 1);
333
372
  scene.bindEyePosition(effect, "eyePosition", true);
334
373
  if (gsMesh.covariancesATexture) {
335
374
  const textureSize = gsMesh.covariancesATexture.getSize();
@@ -350,6 +389,84 @@ export class GaussianSplattingMaterial extends PushMaterial {
350
389
  gsMesh.bindExtraEffectUniforms(effect);
351
390
  }
352
391
  }
392
+ _bindGeometryRendering(effect, defines, mustRebind) {
393
+ const sourceMesh = this._sourceMesh;
394
+ if (!sourceMesh || !defines.PREPASS) {
395
+ return;
396
+ }
397
+ const scene = this.getScene();
398
+ const engine = scene.getEngine();
399
+ const renderPassId = engine.currentRenderPassId;
400
+ const configuration = MaterialHelperGeometryRendering.GetConfiguration(renderPassId);
401
+ if (!configuration) {
402
+ return;
403
+ }
404
+ MaterialHelperGeometryRendering.Bind(renderPassId, effect, sourceMesh, sourceMesh.getWorldMatrix(), this);
405
+ MaterialHelperGeometryRendering._BindZeroAlphaDiscard(engine, effect);
406
+ const camera = scene.activeCamera;
407
+ if (camera) {
408
+ if (defines.PREPASS_POSITION || defines.PREPASS_LOCAL_POSITION || defines.PREPASS_VELOCITY || defines.PREPASS_VELOCITY_LINEAR) {
409
+ const projection = camera.getProjectionMatrix();
410
+ if (projection.updateFlag !== this._geometryProjectionUpdateFlag) {
411
+ projection.invertToRef(this._inverseProjection);
412
+ this._geometryProjectionUpdateFlag = projection.updateFlag;
413
+ }
414
+ effect.setMatrix("inverseProjection", this._inverseProjection);
415
+ }
416
+ if (defines.PREPASS_NORMALIZED_VIEW_DEPTH) {
417
+ effect.setFloat2("geometryDepthRange", camera.minZ, camera.maxZ);
418
+ }
419
+ }
420
+ if (!mustRebind) {
421
+ sourceMesh.bindExtraEffectUniforms(effect);
422
+ }
423
+ if (!sourceMesh.isCompound || (!defines.PREPASS_VELOCITY && !defines.PREPASS_VELOCITY_LINEAR)) {
424
+ return;
425
+ }
426
+ const partCount = sourceMesh.partCount;
427
+ let history = this._partMotionHistory.get(renderPassId);
428
+ if (!history || history.configuration !== configuration || history.currentPartWorldMatrices.length !== partCount) {
429
+ if (partCount > defines.MAX_PART_COUNT) {
430
+ throw new Error(`GaussianSplattingMaterial "${this.name}": geometry velocity supports at most ${defines.MAX_PART_COUNT} compound parts on this engine`);
431
+ }
432
+ const currentPartWorldMatrices = new Array(partCount);
433
+ for (let i = 0; i < partCount; i++) {
434
+ currentPartWorldMatrices[i] = sourceMesh.getWorldMatrixForPart(i).clone();
435
+ }
436
+ history = {
437
+ configuration,
438
+ currentPartWorldMatrices,
439
+ previousPartWorldData: new Float32Array(partCount * 16),
440
+ lastUpdateFrameId: -1,
441
+ };
442
+ this._partMotionHistory.set(renderPassId, history);
443
+ this._renderPassObserver ?? (this._renderPassObserver = (engine._onReleaseRenderPassObservable ?? (engine._onReleaseRenderPassObservable = new Observable())).add((id) => this._partMotionHistory.delete(id)));
444
+ }
445
+ if (history.lastUpdateFrameId !== engine.frameId) {
446
+ const consecutiveFrame = history.lastUpdateFrameId === engine.frameId - 1;
447
+ for (let i = 0; i < partCount; i++) {
448
+ const previous = consecutiveFrame ? history.currentPartWorldMatrices[i] : sourceMesh.getWorldMatrixForPart(i);
449
+ previous.toArray(history.previousPartWorldData, i * 16);
450
+ }
451
+ history.lastUpdateFrameId = engine.frameId;
452
+ }
453
+ effect.setMatrices("previousPartWorld", history.previousPartWorldData);
454
+ for (let i = 0; i < partCount; i++) {
455
+ history.currentPartWorldMatrices[i].copyFrom(sourceMesh.getWorldMatrixForPart(i));
456
+ }
457
+ }
458
+ /**
459
+ * Releases the material and its render-pass motion histories.
460
+ * @param forceDisposeEffect whether associated effects should be disposed
461
+ * @param forceDisposeTextures whether associated textures should be disposed
462
+ * @param notBoundToMesh whether mesh references can be left unchanged
463
+ */
464
+ dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh) {
465
+ this.getScene().getEngine()._onReleaseRenderPassObservable?.remove(this._renderPassObserver);
466
+ this._renderPassObserver = null;
467
+ this._partMotionHistory.clear();
468
+ super.dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh);
469
+ }
353
470
  /**
354
471
  * Bind SOG dequantization uniforms + raw textures.
355
472
  * @internal
@@ -413,6 +530,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
413
530
  else if (scene.getEngine()._features.needToAlwaysBindUniformBuffers) {
414
531
  this._needToBindSceneUbo = true;
415
532
  }
533
+ this._bindGeometryRendering(effect, defines, mustRebind);
416
534
  // Fog
417
535
  BindFogParameters(scene, mesh, effect);
418
536
  // Log. depth
@@ -436,25 +554,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
436
554
  shaderMaterial.bindViewProjection(effect);
437
555
  const renderWidth = engine.getRenderWidth() * camera.viewport.width;
438
556
  const renderHeight = engine.getRenderHeight() * camera.viewport.height;
439
- effect.setFloat2("invViewport", 1 / renderWidth, 1 / renderHeight);
440
- let focal = 1000;
441
- if (camera) {
442
- /*
443
- more explicit version:
444
- const t = camera.getProjectionMatrix().m[5];
445
- const FovY = Math.atan(1.0 / t) * 2.0;
446
- focal = renderHeight / 2.0 / Math.tan(FovY / 2.0);
447
- Using a shorter version here to not have tan(atan) and 2.0 factor
448
- */
449
- const t = camera.getProjectionMatrix().m[5];
450
- if (camera.fovMode == Camera.FOVMODE_VERTICAL_FIXED) {
451
- focal = (renderHeight * t) / 2.0;
452
- }
453
- else {
454
- focal = (renderWidth * t) / 2.0;
455
- }
456
- }
457
- effect.setFloat2("focal", focal, focal);
557
+ GaussianSplattingMaterial._BindViewportAndFocal(effect, camera, renderWidth, renderHeight);
458
558
  effect.setFloat("kernelSize", gsMaterial && gsMaterial.kernelSize ? gsMaterial.kernelSize : GaussianSplattingMaterial.KernelSize);
459
559
  effect.setFloat("minPixelSize", gsMaterial ? gsMaterial.minPixelSize : GaussianSplattingMaterial.MinPixelSize);
460
560
  effect.setFloat("alpha", gsMaterial.alpha);
@@ -731,6 +831,7 @@ GaussianSplattingMaterial._Uniforms = [
731
831
  "world",
732
832
  "view",
733
833
  "projection",
834
+ "inverseProjection",
734
835
  "vFogInfos",
735
836
  "vFogColor",
736
837
  "logarithmicDepthConstant",
@@ -742,7 +843,10 @@ GaussianSplattingMaterial._Uniforms = [
742
843
  "minPixelSize",
743
844
  "alpha",
744
845
  "depthValues",
846
+ "geometryDepthRange",
847
+ "geometryZeroAlphaDiscard",
745
848
  "partWorld",
849
+ "previousPartWorld",
746
850
  "partVisibility",
747
851
  "sogMeansMin",
748
852
  "sogMeansMax",