@onerjs/core 8.56.4 → 9.0.1

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 (722) 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 +13 -2
  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/Native/nativeHardwareTexture.d.ts +8 -1
  51. package/Engines/Native/nativeHardwareTexture.js +7 -0
  52. package/Engines/Native/nativeHardwareTexture.js.map +1 -1
  53. package/Engines/Native/nativeHelpers.js +56 -1
  54. package/Engines/Native/nativeHelpers.js.map +1 -1
  55. package/Engines/Native/nativeInterfaces.d.ts +37 -8
  56. package/Engines/Native/nativeInterfaces.js.map +1 -1
  57. package/Engines/Native/nativeRenderTargetWrapper.d.ts +40 -0
  58. package/Engines/Native/nativeRenderTargetWrapper.js +265 -5
  59. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  60. package/Engines/Processors/shaderCodeCursor.d.ts +1 -0
  61. package/Engines/Processors/shaderCodeCursor.js +40 -3
  62. package/Engines/Processors/shaderCodeCursor.js.map +1 -1
  63. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
  64. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
  65. package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
  66. package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
  67. package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
  68. package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
  69. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js +1 -0
  70. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js.map +1 -1
  71. package/Engines/WebGPU/Extensions/index.d.ts +1 -0
  72. package/Engines/WebGPU/Extensions/index.js +1 -0
  73. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  74. package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
  75. package/Engines/WebGPU/Extensions/pure.js +1 -1
  76. package/Engines/WebGPU/Extensions/pure.js.map +1 -1
  77. package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
  78. package/Engines/WebGPU/webgpuBundleList.js +4 -0
  79. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  80. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
  81. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  82. package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
  83. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  84. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  85. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  86. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
  87. package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
  88. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
  89. package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
  90. package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
  91. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  92. package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
  93. package/Engines/WebGPU/webgpuTextureManager.js +286 -13
  94. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  95. package/Engines/abstractEngine.pure.d.ts +17 -1
  96. package/Engines/abstractEngine.pure.js +17 -5
  97. package/Engines/abstractEngine.pure.js.map +1 -1
  98. package/Engines/constants.d.ts +4 -0
  99. package/Engines/constants.js +4 -0
  100. package/Engines/constants.js.map +1 -1
  101. package/Engines/engine.pure.d.ts +0 -1
  102. package/Engines/engine.pure.js +0 -7
  103. package/Engines/engine.pure.js.map +1 -1
  104. package/Engines/nativeEngine.pure.js +1 -1
  105. package/Engines/nativeEngine.pure.js.map +1 -1
  106. package/Engines/thinEngine.pure.d.ts +15 -0
  107. package/Engines/thinEngine.pure.js +61 -14
  108. package/Engines/thinEngine.pure.js.map +1 -1
  109. package/Engines/thinNativeEngine.pure.d.ts +218 -17
  110. package/Engines/thinNativeEngine.pure.js +1438 -165
  111. package/Engines/thinNativeEngine.pure.js.map +1 -1
  112. package/Engines/thinWebGPUEngine.d.ts +4 -0
  113. package/Engines/thinWebGPUEngine.js +16 -2
  114. package/Engines/thinWebGPUEngine.js.map +1 -1
  115. package/Engines/webgpuEngine.pure.d.ts +17 -3
  116. package/Engines/webgpuEngine.pure.js +56 -13
  117. package/Engines/webgpuEngine.pure.js.map +1 -1
  118. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
  119. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
  120. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.d.ts +10 -0
  121. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js +24 -12
  122. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js.map +1 -1
  123. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
  124. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
  125. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
  126. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.d.ts +7 -0
  127. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js +43 -0
  128. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js.map +1 -1
  129. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
  130. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
  131. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
  132. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
  133. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
  134. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
  135. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
  136. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
  137. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
  138. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
  139. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
  140. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
  141. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
  142. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
  143. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
  144. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +18 -4
  145. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +24 -6
  146. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  147. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
  148. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
  149. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  150. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  151. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
  152. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +85 -25
  153. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  154. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
  155. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
  156. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
  157. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.d.ts +12 -1
  158. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +8 -0
  159. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  160. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js +4 -1
  161. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js.map +1 -1
  162. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.d.ts +12 -1
  163. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js +5 -1
  164. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js.map +1 -1
  165. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
  166. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
  167. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.d.ts +2 -0
  168. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js +14 -2
  169. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js.map +1 -1
  170. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.d.ts +5 -1
  171. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js +23 -8
  172. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js.map +1 -1
  173. package/FlowGraph/CustomTypes/flowGraphInteger.pure.d.ts +5 -0
  174. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js +7 -0
  175. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js.map +1 -1
  176. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +10 -0
  177. package/FlowGraph/CustomTypes/flowGraphMatrix.js +14 -0
  178. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  179. package/FlowGraph/flowGraph.d.ts +6 -1
  180. package/FlowGraph/flowGraph.js +41 -9
  181. package/FlowGraph/flowGraph.js.map +1 -1
  182. package/FlowGraph/flowGraphAnimationHelpers.d.ts +24 -0
  183. package/FlowGraph/flowGraphAnimationHelpers.js +21 -0
  184. package/FlowGraph/flowGraphAnimationHelpers.js.map +1 -0
  185. package/FlowGraph/flowGraphBlock.js +3 -0
  186. package/FlowGraph/flowGraphBlock.js.map +1 -1
  187. package/FlowGraph/flowGraphConnection.d.ts +7 -0
  188. package/FlowGraph/flowGraphConnection.js +7 -0
  189. package/FlowGraph/flowGraphConnection.js.map +1 -1
  190. package/FlowGraph/flowGraphContext.d.ts +2 -1
  191. package/FlowGraph/flowGraphContext.js +5 -3
  192. package/FlowGraph/flowGraphContext.js.map +1 -1
  193. package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
  194. package/FlowGraph/flowGraphCoordinator.js +47 -16
  195. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  196. package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
  197. package/FlowGraph/flowGraphEventBlock.js +7 -0
  198. package/FlowGraph/flowGraphEventBlock.js.map +1 -1
  199. package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
  200. package/FlowGraph/flowGraphHostResolver.js.map +1 -1
  201. package/FlowGraph/flowGraphParser.js +60 -2
  202. package/FlowGraph/flowGraphParser.js.map +1 -1
  203. package/FlowGraph/flowGraphValidator.js +0 -4
  204. package/FlowGraph/flowGraphValidator.js.map +1 -1
  205. package/FlowGraph/index.d.ts +2 -0
  206. package/FlowGraph/index.js +2 -0
  207. package/FlowGraph/index.js.map +1 -1
  208. package/FlowGraph/pure.d.ts +2 -0
  209. package/FlowGraph/pure.js +2 -0
  210. package/FlowGraph/pure.js.map +1 -1
  211. package/FlowGraph/serialization.d.ts +4 -2
  212. package/FlowGraph/serialization.js +12 -24
  213. package/FlowGraph/serialization.js.map +1 -1
  214. package/FlowGraph/typeDefinitions.d.ts +9 -1
  215. package/FlowGraph/typeDefinitions.js.map +1 -1
  216. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
  217. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
  218. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
  219. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
  220. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
  221. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
  222. package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
  223. package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
  224. package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
  226. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
  228. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
  229. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  230. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.d.ts +1 -0
  231. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js +4 -0
  232. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js.map +1 -0
  233. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.d.ts +54 -0
  234. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js +155 -0
  235. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js.map +1 -0
  236. package/FrameGraph/Node/Blocks/Textures/pure.d.ts +1 -0
  237. package/FrameGraph/Node/Blocks/Textures/pure.js +1 -0
  238. package/FrameGraph/Node/Blocks/Textures/pure.js.map +1 -1
  239. package/FrameGraph/Node/Blocks/allBlocks.pure.js +4 -0
  240. package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
  241. package/FrameGraph/Node/Blocks/index.d.ts +2 -0
  242. package/FrameGraph/Node/Blocks/index.js +2 -0
  243. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  244. package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
  245. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  246. package/FrameGraph/Node/Blocks/pure.d.ts +2 -0
  247. package/FrameGraph/Node/Blocks/pure.js +2 -0
  248. package/FrameGraph/Node/Blocks/pure.js.map +1 -1
  249. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
  250. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
  251. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  252. package/FrameGraph/Node/nodeRenderGraph.js +1 -1
  253. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  254. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
  255. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
  256. package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
  257. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
  258. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
  259. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  260. package/FrameGraph/Tasks/Misc/minMaxReducerTask.d.ts +62 -0
  261. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js +159 -0
  262. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js.map +1 -0
  263. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
  264. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
  265. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
  266. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
  267. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +72 -34
  268. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  269. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
  270. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  271. package/FrameGraph/frameGraph.d.ts +4 -0
  272. package/FrameGraph/frameGraph.js +14 -0
  273. package/FrameGraph/frameGraph.js.map +1 -1
  274. package/FrameGraph/frameGraphObjectList.d.ts +6 -1
  275. package/FrameGraph/frameGraphObjectList.js.map +1 -1
  276. package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
  277. package/FrameGraph/frameGraphRenderContext.js +5 -5
  278. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  279. package/FrameGraph/index.d.ts +2 -0
  280. package/FrameGraph/index.js +2 -0
  281. package/FrameGraph/index.js.map +1 -1
  282. package/FrameGraph/pure.d.ts +2 -0
  283. package/FrameGraph/pure.js +2 -0
  284. package/FrameGraph/pure.js.map +1 -1
  285. package/Inputs/scene.inputManager.d.ts +4 -0
  286. package/Inputs/scene.inputManager.js +50 -8
  287. package/Inputs/scene.inputManager.js.map +1 -1
  288. package/Lights/Clustered/clusteredLightingSceneComponent.pure.d.ts +5 -0
  289. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js +22 -1
  290. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js.map +1 -1
  291. package/Lights/Shadows/cascadedShadowGenerator.pure.js +7 -3
  292. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  293. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.d.ts +7 -0
  294. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js +8 -0
  295. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js.map +1 -0
  296. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.d.ts +54 -0
  297. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js +81 -0
  298. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js.map +1 -0
  299. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.d.ts +7 -0
  300. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js +8 -0
  301. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js.map +1 -0
  302. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.d.ts +60 -0
  303. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js +90 -0
  304. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js.map +1 -0
  305. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.d.ts +31 -0
  306. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +103 -5
  307. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
  308. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +6 -6
  309. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  310. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
  311. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +153 -49
  312. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  313. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.d.ts +1 -0
  314. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js +4 -0
  315. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js.map +1 -0
  316. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.d.ts +83 -0
  317. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js +191 -0
  318. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js.map +1 -0
  319. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.d.ts +1 -0
  320. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js +4 -0
  321. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js.map +1 -0
  322. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.d.ts +62 -0
  323. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js +125 -0
  324. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js.map +1 -0
  325. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
  326. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  327. package/Materials/GaussianSplatting/pure.d.ts +4 -0
  328. package/Materials/GaussianSplatting/pure.js +4 -0
  329. package/Materials/GaussianSplatting/pure.js.map +1 -1
  330. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.d.ts +1 -0
  331. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +12 -0
  332. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js.map +1 -1
  333. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
  334. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  335. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
  336. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  337. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
  338. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  339. package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
  340. package/Materials/Node/nodeMaterial.pure.js +4 -0
  341. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  342. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
  343. package/Materials/Node/nodeMaterialBuildState.js +25 -3
  344. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  345. package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
  346. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
  347. package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +14 -14
  348. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +37 -13
  349. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  350. package/Materials/Textures/baseTexture.pure.js +3 -0
  351. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  352. package/Materials/Textures/cubeTexture.pure.js +1 -1
  353. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  354. package/Materials/Textures/internalTexture.d.ts +8 -1
  355. package/Materials/Textures/internalTexture.js +9 -2
  356. package/Materials/Textures/internalTexture.js.map +1 -1
  357. package/Materials/Textures/mirrorTexture.pure.js +3 -1
  358. package/Materials/Textures/mirrorTexture.pure.js.map +1 -1
  359. package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
  360. package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
  361. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  362. package/Materials/Textures/rawTexture3D.js +1 -1
  363. package/Materials/Textures/rawTexture3D.js.map +1 -1
  364. package/Materials/Textures/texture.pure.js +1 -1
  365. package/Materials/Textures/texture.pure.js.map +1 -1
  366. package/Materials/Textures/textureHelper.functions.d.ts +14 -0
  367. package/Materials/Textures/textureHelper.functions.js +24 -0
  368. package/Materials/Textures/textureHelper.functions.js.map +1 -1
  369. package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
  370. package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
  371. package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
  372. package/Materials/effectRenderer.pure.d.ts +4 -0
  373. package/Materials/effectRenderer.pure.js +3 -2
  374. package/Materials/effectRenderer.pure.js.map +1 -1
  375. package/Materials/index.d.ts +5 -0
  376. package/Materials/index.js +5 -0
  377. package/Materials/index.js.map +1 -1
  378. package/Materials/material.pure.js +25 -12
  379. package/Materials/material.pure.js.map +1 -1
  380. package/Materials/materialHelper.geometryrendering.d.ts +46 -1
  381. package/Materials/materialHelper.geometryrendering.js +105 -8
  382. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  383. package/Materials/prepass.defines.d.ts +2 -0
  384. package/Materials/prepass.defines.js +2 -0
  385. package/Materials/prepass.defines.js.map +1 -1
  386. package/Materials/pure.d.ts +5 -0
  387. package/Materials/pure.js +5 -0
  388. package/Materials/pure.js.map +1 -1
  389. package/Materials/standardMaterial.pure.d.ts +10 -0
  390. package/Materials/standardMaterial.pure.js +30 -5
  391. package/Materials/standardMaterial.pure.js.map +1 -1
  392. package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
  393. package/Meshes/Builders/polygonBuilder.pure.js +3 -0
  394. package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
  395. package/Meshes/GaussianSplatting/gaussianPointSplattingController.d.ts +8 -0
  396. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js +11 -0
  397. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js.map +1 -0
  398. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.d.ts +231 -0
  399. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js +1212 -0
  400. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js.map +1 -0
  401. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.d.ts +14 -0
  402. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js +15 -0
  403. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js.map +1 -0
  404. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.d.ts +285 -0
  405. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js +812 -0
  406. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js.map +1 -0
  407. package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
  408. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
  409. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
  410. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +1 -0
  411. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +2 -0
  412. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  413. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +163 -14
  414. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +239 -24
  415. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  416. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +34 -4
  417. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +125 -25
  418. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  419. package/Meshes/GaussianSplatting/pure.d.ts +2 -0
  420. package/Meshes/GaussianSplatting/pure.js +2 -0
  421. package/Meshes/GaussianSplatting/pure.js.map +1 -1
  422. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +25 -11
  423. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  424. package/Meshes/abstractMesh.pure.d.ts +30 -0
  425. package/Meshes/abstractMesh.pure.js +54 -0
  426. package/Meshes/abstractMesh.pure.js.map +1 -1
  427. package/Meshes/index.d.ts +2 -0
  428. package/Meshes/index.js +2 -0
  429. package/Meshes/index.js.map +1 -1
  430. package/Meshes/instancedMesh.pure.d.ts +5 -0
  431. package/Meshes/instancedMesh.pure.js +12 -0
  432. package/Meshes/instancedMesh.pure.js.map +1 -1
  433. package/Meshes/mesh.pure.js +23 -8
  434. package/Meshes/mesh.pure.js.map +1 -1
  435. package/Meshes/meshBlendingTag.d.ts +47 -0
  436. package/Meshes/meshBlendingTag.js +64 -0
  437. package/Meshes/meshBlendingTag.js.map +1 -0
  438. package/Meshes/polygonMesh.js +2 -2
  439. package/Meshes/polygonMesh.js.map +1 -1
  440. package/Meshes/pure.d.ts +2 -0
  441. package/Meshes/pure.js +2 -0
  442. package/Meshes/pure.js.map +1 -1
  443. package/Meshes/subMesh.pure.d.ts +11 -2
  444. package/Meshes/subMesh.pure.js +20 -5
  445. package/Meshes/subMesh.pure.js.map +1 -1
  446. package/Meshes/thinInstanceMesh.pure.js +1 -0
  447. package/Meshes/thinInstanceMesh.pure.js.map +1 -1
  448. package/Misc/andOrNotEvaluator.js +4 -0
  449. package/Misc/andOrNotEvaluator.js.map +1 -1
  450. package/Misc/fileTools.pure.js +21 -0
  451. package/Misc/fileTools.pure.js.map +1 -1
  452. package/Misc/minMaxReducer.pure.d.ts +6 -0
  453. package/Misc/minMaxReducer.pure.js +10 -0
  454. package/Misc/minMaxReducer.pure.js.map +1 -1
  455. package/Misc/snapshotRenderingHelper.js +2 -2
  456. package/Misc/snapshotRenderingHelper.js.map +1 -1
  457. package/Misc/thinMinMaxReducer.d.ts +19 -2
  458. package/Misc/thinMinMaxReducer.js +74 -21
  459. package/Misc/thinMinMaxReducer.js.map +1 -1
  460. package/Misc/tools.pure.js +1 -1
  461. package/Misc/tools.pure.js.map +1 -1
  462. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js +19 -7
  463. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js.map +1 -1
  464. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js +3 -2
  465. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js.map +1 -1
  466. package/Particles/gpuParticleSystem.pure.d.ts +4 -0
  467. package/Particles/gpuParticleSystem.pure.js +101 -32
  468. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  469. package/Particles/particle.js +3 -2
  470. package/Particles/particle.js.map +1 -1
  471. package/Particles/solidParticleSystem.js +7 -1
  472. package/Particles/solidParticleSystem.js.map +1 -1
  473. package/Particles/thinParticleSystem.function.d.ts +6 -0
  474. package/Particles/thinParticleSystem.function.js +144 -88
  475. package/Particles/thinParticleSystem.function.js.map +1 -1
  476. package/Particles/thinParticleSystem.pure.d.ts +8 -0
  477. package/Particles/thinParticleSystem.pure.js +154 -28
  478. package/Particles/thinParticleSystem.pure.js.map +1 -1
  479. package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
  480. package/Particles/webgl2ParticleSystem.pure.js +12 -4
  481. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  482. package/Physics/v2/ragdoll.d.ts +2 -4
  483. package/Physics/v2/ragdoll.js +11 -4
  484. package/Physics/v2/ragdoll.js.map +1 -1
  485. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
  486. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
  487. package/PostProcesses/index.d.ts +2 -0
  488. package/PostProcesses/index.js +2 -0
  489. package/PostProcesses/index.js.map +1 -1
  490. package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
  491. package/PostProcesses/meshBlendingBlueNoise.js +77 -0
  492. package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
  493. package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
  494. package/PostProcesses/meshBlendingPostProcess.js +315 -0
  495. package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
  496. package/PostProcesses/pure.d.ts +2 -0
  497. package/PostProcesses/pure.js +2 -0
  498. package/PostProcesses/pure.js.map +1 -1
  499. package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
  500. package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
  501. package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
  502. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
  503. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  504. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +12 -0
  505. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +50 -25
  506. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  507. package/Rendering/boundingBoxRenderer.pure.js +2 -1
  508. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  509. package/Rendering/depthRenderer.pure.d.ts +9 -0
  510. package/Rendering/depthRenderer.pure.js +15 -4
  511. package/Rendering/depthRenderer.pure.js.map +1 -1
  512. package/Rendering/edgesRenderer.pure.d.ts +4 -2
  513. package/Rendering/edgesRenderer.pure.js +11 -2
  514. package/Rendering/edgesRenderer.pure.js.map +1 -1
  515. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +14 -0
  516. package/Rendering/fluidRenderer/fluidRenderingObject.js +26 -0
  517. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  518. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +13 -3
  519. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +22 -9
  520. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  521. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -0
  522. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  523. package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
  524. package/Rendering/geometryBufferRenderer.pure.js +130 -18
  525. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  526. package/Rendering/objectRenderer.d.ts +7 -1
  527. package/Rendering/objectRenderer.js +45 -7
  528. package/Rendering/objectRenderer.js.map +1 -1
  529. package/Rendering/outlineRenderer.pure.js +6 -2
  530. package/Rendering/outlineRenderer.pure.js.map +1 -1
  531. package/Rendering/prePassRenderer.pure.js +3 -3
  532. package/Rendering/prePassRenderer.pure.js.map +1 -1
  533. package/Rendering/renderingManager.d.ts +1 -1
  534. package/Rendering/renderingManager.js +5 -4
  535. package/Rendering/renderingManager.js.map +1 -1
  536. package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  537. package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
  538. package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  539. package/Shaders/ShadersInclude/gaussianSplatting.js +3 -1
  540. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  541. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
  542. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  543. package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
  544. package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
  545. package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  546. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +27 -3
  547. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  548. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
  549. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  550. package/Shaders/ShadersInclude/oitDeclaration.js +1 -1
  551. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  552. package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
  553. package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  554. package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
  555. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  556. package/Shaders/ShadersInclude/pbrDebug.js +6 -2
  557. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  558. package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
  559. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  560. package/Shaders/default.fragment.js +31 -40
  561. package/Shaders/default.fragment.js.map +1 -1
  562. package/Shaders/depthOfField.fragment.js +13 -9
  563. package/Shaders/depthOfField.fragment.js.map +1 -1
  564. package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
  565. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  566. package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
  567. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  568. package/Shaders/gaussianSplatting.fragment.js +63 -3
  569. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  570. package/Shaders/gaussianSplatting.vertex.js +80 -0
  571. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  572. package/Shaders/geometry.fragment.js +17 -11
  573. package/Shaders/geometry.fragment.js.map +1 -1
  574. package/Shaders/gpuRenderParticles.fragment.js +43 -1
  575. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  576. package/Shaders/gpuRenderParticles.vertex.js +96 -16
  577. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  578. package/Shaders/meshBlending.fragment.d.ts +5 -0
  579. package/Shaders/meshBlending.fragment.js +519 -0
  580. package/Shaders/meshBlending.fragment.js.map +1 -0
  581. package/Shaders/minmaxRedux.fragment.js +6 -1
  582. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  583. package/Shaders/particles.fragment.js +43 -1
  584. package/Shaders/particles.fragment.js.map +1 -1
  585. package/Shaders/particles.vertex.js +84 -3
  586. package/Shaders/particles.vertex.js.map +1 -1
  587. package/Shaders/sprites.fragment.js +52 -2
  588. package/Shaders/sprites.fragment.js.map +1 -1
  589. package/Shaders/sprites.vertex.js +62 -1
  590. package/Shaders/sprites.vertex.js.map +1 -1
  591. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  592. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
  593. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  594. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.d.ts +5 -0
  595. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js +65 -0
  596. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js.map +1 -0
  597. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.d.ts +5 -0
  598. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js +17 -0
  599. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js.map +1 -0
  600. package/ShadersWGSL/ShadersInclude/gaussianSplatting.d.ts +1 -0
  601. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +6 -78
  602. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  603. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js +2 -2
  604. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  605. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.d.ts +5 -0
  606. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js +79 -0
  607. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js.map +1 -0
  608. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
  609. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
  610. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  611. package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
  612. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  613. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +27 -3
  614. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  615. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
  616. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
  617. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
  618. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
  619. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
  620. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  621. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
  622. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
  623. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  624. package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
  625. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  626. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
  627. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  628. package/ShadersWGSL/default.fragment.js +17 -48
  629. package/ShadersWGSL/default.fragment.js.map +1 -1
  630. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
  631. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  632. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
  633. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  634. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.d.ts +5 -0
  635. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js +22 -0
  636. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js.map +1 -0
  637. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.d.ts +5 -0
  638. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js +19 -0
  639. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js.map +1 -0
  640. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.d.ts +5 -0
  641. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js +21 -0
  642. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js.map +1 -0
  643. package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
  644. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  645. package/ShadersWGSL/gaussianSplatting.vertex.js +82 -1
  646. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  647. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -1
  648. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  649. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js +2 -1
  650. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js.map +1 -1
  651. package/ShadersWGSL/geometry.fragment.js +37 -2
  652. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  653. package/ShadersWGSL/gpsHiZBuild.compute.d.ts +5 -0
  654. package/ShadersWGSL/gpsHiZBuild.compute.js +16 -0
  655. package/ShadersWGSL/gpsHiZBuild.compute.js.map +1 -0
  656. package/ShadersWGSL/gpsPartition.compute.d.ts +5 -0
  657. package/ShadersWGSL/gpsPartition.compute.js +27 -0
  658. package/ShadersWGSL/gpsPartition.compute.js.map +1 -0
  659. package/ShadersWGSL/gpsPreprocess.compute.d.ts +5 -0
  660. package/ShadersWGSL/gpsPreprocess.compute.js +86 -0
  661. package/ShadersWGSL/gpsPreprocess.compute.js.map +1 -0
  662. package/ShadersWGSL/gpsResolve.compute.d.ts +5 -0
  663. package/ShadersWGSL/gpsResolve.compute.js +41 -0
  664. package/ShadersWGSL/gpsResolve.compute.js.map +1 -0
  665. package/ShadersWGSL/gpsScanAdd.compute.d.ts +5 -0
  666. package/ShadersWGSL/gpsScanAdd.compute.js +22 -0
  667. package/ShadersWGSL/gpsScanAdd.compute.js.map +1 -0
  668. package/ShadersWGSL/gpsScanBlocks.compute.d.ts +5 -0
  669. package/ShadersWGSL/gpsScanBlocks.compute.js +23 -0
  670. package/ShadersWGSL/gpsScanBlocks.compute.js.map +1 -0
  671. package/ShadersWGSL/gpsScanSums.compute.d.ts +5 -0
  672. package/ShadersWGSL/gpsScanSums.compute.js +30 -0
  673. package/ShadersWGSL/gpsScanSums.compute.js.map +1 -0
  674. package/ShadersWGSL/gpsSplat.compute.d.ts +5 -0
  675. package/ShadersWGSL/gpsSplat.compute.js +37 -0
  676. package/ShadersWGSL/gpsSplat.compute.js.map +1 -0
  677. package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
  678. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
  679. package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
  680. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
  681. package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
  682. package/ShadersWGSL/meshBlending.fragment.js +576 -0
  683. package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
  684. package/ShadersWGSL/minmaxRedux.fragment.js +20 -3
  685. package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
  686. package/ShadersWGSL/openpbr.fragment.js +2 -1
  687. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  688. package/ShadersWGSL/particles.fragment.js +45 -1
  689. package/ShadersWGSL/particles.fragment.js.map +1 -1
  690. package/ShadersWGSL/particles.vertex.js +86 -4
  691. package/ShadersWGSL/particles.vertex.js.map +1 -1
  692. package/ShadersWGSL/pbr.fragment.js +2 -1
  693. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  694. package/ShadersWGSL/sprites.fragment.js +56 -2
  695. package/ShadersWGSL/sprites.fragment.js.map +1 -1
  696. package/ShadersWGSL/sprites.vertex.js +62 -1
  697. package/ShadersWGSL/sprites.vertex.js.map +1 -1
  698. package/Sprites/spriteManager.d.ts +13 -0
  699. package/Sprites/spriteManager.js +15 -0
  700. package/Sprites/spriteManager.js.map +1 -1
  701. package/Sprites/spriteRenderer.d.ts +24 -1
  702. package/Sprites/spriteRenderer.js +368 -50
  703. package/Sprites/spriteRenderer.js.map +1 -1
  704. package/Sprites/thinSprite.d.ts +4 -0
  705. package/Sprites/thinSprite.js +4 -0
  706. package/Sprites/thinSprite.js.map +1 -1
  707. package/States/alphaCullingState.d.ts +3 -1
  708. package/States/alphaCullingState.js +18 -3
  709. package/States/alphaCullingState.js.map +1 -1
  710. package/XR/features/WebXRSpaceWarp.pure.js +2 -1
  711. package/XR/features/WebXRSpaceWarp.pure.js.map +1 -1
  712. package/XR/webXRDefaultExperience.d.ts +5 -1
  713. package/XR/webXRDefaultExperience.js.map +1 -1
  714. package/XR/webXREnterExitUI.d.ts +2 -1
  715. package/XR/webXREnterExitUI.js.map +1 -1
  716. package/assetContainer.d.ts +1 -0
  717. package/assetContainer.js +5 -1
  718. package/assetContainer.js.map +1 -1
  719. package/package.json +1 -1
  720. package/scene.pure.d.ts +36 -2
  721. package/scene.pure.js +63 -4
  722. package/scene.pure.js.map +1 -1
@@ -0,0 +1,191 @@
1
+ /** This file must only contain pure code and pure imports */
2
+ import { __esDecorate, __runInitializers } from "../../tslib.es6.js";
3
+ import { serialize } from "../../Misc/decorators.js";
4
+ import { RegisterClass } from "../../Misc/typeStore.js";
5
+
6
+ import { MaterialPluginBase } from "../materialPluginBase.pure.js";
7
+ /**
8
+ * Displays equal-contribution Gaussian fragment overdraw, independently of color and Gaussian opacity.
9
+ * Uses additive ONE+ONE RGB blending and disables depth writes while active; keeps depth testing.
10
+ * Restores the material's prior blending/depth settings on disable or disposal.
11
+ * See https://playground.babylonjs.com/#D4U720#1
12
+ */
13
+ let GaussianSplattingOverdrawMaterialPlugin = (() => {
14
+ var _a;
15
+ let _classSuper = MaterialPluginBase;
16
+ let _instanceExtraInitializers = [];
17
+ let _get_isEnabled_decorators;
18
+ let _get_intensity_decorators;
19
+ return _a = class GaussianSplattingOverdrawMaterialPlugin extends _classSuper {
20
+ /**
21
+ * Whether equal-contribution additive rendering is active. Defaults to true.
22
+ */
23
+ get isEnabled() {
24
+ return this._isEnabled;
25
+ }
26
+ set isEnabled(value) {
27
+ if (value === this._isEnabled) {
28
+ return;
29
+ }
30
+ this._isEnabled = value;
31
+ if (value) {
32
+ this._originalAlphaMode = this._material.alphaMode;
33
+ this._originalDisableDepthWrite = this._material.disableDepthWrite;
34
+ this._originalForceDepthWrite = this._material.forceDepthWrite;
35
+ }
36
+ this._applyBlendState();
37
+ }
38
+ /**
39
+ * Equal RGB contribution per surviving fragment. Defaults to 1/256 (256 overlaps reach white).
40
+ */
41
+ get intensity() {
42
+ return this._intensity;
43
+ }
44
+ set intensity(value) {
45
+ if (!Number.isFinite(value) || value <= 0) {
46
+ throw new RangeError("intensity must be a positive finite number.");
47
+ }
48
+ this._intensity = value;
49
+ }
50
+ /**
51
+ * Attaches the additive overdraw visualization to a Gaussian splat material.
52
+ * @param material The material to visualize
53
+ */
54
+ constructor(material) {
55
+ super(material, "GaussianSplattingOverdraw", 220);
56
+ this._isEnabled = (__runInitializers(this, _instanceExtraInitializers), true);
57
+ this._intensity = 1 / 256;
58
+ this._originalAlphaMode = material.alphaMode;
59
+ this._originalDisableDepthWrite = material.disableDepthWrite;
60
+ this._originalForceDepthWrite = material.forceDepthWrite;
61
+ this._applyBlendState();
62
+ this._enable(true);
63
+ }
64
+ _applyBlendState() {
65
+ if (this._isEnabled) {
66
+ this._material.alphaMode = 6;
67
+ this._material.disableDepthWrite = true;
68
+ this._material.forceDepthWrite = false;
69
+ }
70
+ else {
71
+ if (this._material.alphaMode === 6) {
72
+ this._material.alphaMode = this._originalAlphaMode;
73
+ }
74
+ if (this._material.disableDepthWrite) {
75
+ this._material.disableDepthWrite = this._originalDisableDepthWrite;
76
+ }
77
+ if (!this._material.forceDepthWrite) {
78
+ this._material.forceDepthWrite = this._originalForceDepthWrite;
79
+ }
80
+ }
81
+ }
82
+ /** @returns The registered plugin class name */
83
+ getClassName() {
84
+ return "GaussianSplattingOverdrawMaterialPlugin";
85
+ }
86
+ /**
87
+ * @param shaderLanguage Shader language to test
88
+ * @returns Whether the shader language is supported
89
+ */
90
+ isCompatible(shaderLanguage) {
91
+ return shaderLanguage === 0 /* ShaderLanguage.GLSL */ || shaderLanguage === 1 /* ShaderLanguage.WGSL */;
92
+ }
93
+ /**
94
+ * @param shaderType Vertex or fragment
95
+ * @param shaderLanguage GLSL or WGSL
96
+ * @returns Code inserted into the Gaussian shader, or null
97
+ */
98
+ getCustomCode(shaderType, shaderLanguage = 0 /* ShaderLanguage.GLSL */) {
99
+ if (shaderType !== "fragment") {
100
+ return null;
101
+ }
102
+ const wgsl = shaderLanguage === 1 /* ShaderLanguage.WGSL */;
103
+ return {
104
+ CUSTOM_FRAGMENT_DEFINITIONS: wgsl
105
+ ? "uniform splatOverdrawEnabled: f32;\nuniform splatOverdrawIntensity: f32;"
106
+ : "uniform float splatOverdrawEnabled;\nuniform float splatOverdrawIntensity;",
107
+ CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: wgsl
108
+ ? "if (uniforms.splatOverdrawEnabled > 0.5) { if (finalColor.a <= 0.0) { discard; } finalColor = vec4f(vec3f(uniforms.splatOverdrawIntensity), 1.0); }"
109
+ : "if (splatOverdrawEnabled > 0.5) { if (finalColor.a <= 0.0) discard; finalColor = vec4(vec3(splatOverdrawIntensity), 1.0); }",
110
+ };
111
+ }
112
+ /** @returns Shader uniforms for both languages */
113
+ getUniforms() {
114
+ return { externalUniforms: ["splatOverdrawEnabled", "splatOverdrawIntensity"] };
115
+ }
116
+ /**
117
+ * Binds the overdraw visualization uniforms for the rendered submesh.
118
+ * @param _uniformBuffer Unused
119
+ * @param _scene Current scene
120
+ * @param _engine Current engine
121
+ * @param subMesh Rendered submesh
122
+ */
123
+ bindForSubMesh(_uniformBuffer, _scene, _engine, subMesh) {
124
+ subMesh.effect?.setFloat("splatOverdrawEnabled", this._isEnabled ? 1 : 0);
125
+ subMesh.effect?.setFloat("splatOverdrawIntensity", this._intensity);
126
+ }
127
+ /** Restores blend/depth settings owned by this plugin. */
128
+ dispose() {
129
+ this.isEnabled = false;
130
+ }
131
+ /** @returns Serialized settings, including the pre-plugin blend/depth state */
132
+ serialize() {
133
+ return {
134
+ ...super.serialize(),
135
+ originalAlphaMode: this._originalAlphaMode,
136
+ originalDisableDepthWrite: this._originalDisableDepthWrite,
137
+ originalForceDepthWrite: this._originalForceDepthWrite,
138
+ };
139
+ }
140
+ /**
141
+ * Restores original blend settings after material parsing.
142
+ * @param source Serialized plugin
143
+ * @param scene Scene containing the material
144
+ * @param rootUrl Asset root URL
145
+ */
146
+ parse(source, scene, rootUrl) {
147
+ super.parse(source, scene, rootUrl);
148
+ if (!this._isEnabled) {
149
+ return;
150
+ }
151
+ this._originalAlphaMode = source.originalAlphaMode ?? this._originalAlphaMode;
152
+ this._originalDisableDepthWrite = source.originalDisableDepthWrite ?? this._originalDisableDepthWrite;
153
+ this._originalForceDepthWrite = source.originalForceDepthWrite ?? this._originalForceDepthWrite;
154
+ this._applyBlendState();
155
+ }
156
+ /**
157
+ * Copies the original blend state as well as the public settings.
158
+ * @param plugin Destination plugin
159
+ */
160
+ copyTo(plugin) {
161
+ const target = plugin;
162
+ super.copyTo(plugin);
163
+ if (!target._isEnabled) {
164
+ return;
165
+ }
166
+ target._originalAlphaMode = this._originalAlphaMode;
167
+ target._originalDisableDepthWrite = this._originalDisableDepthWrite;
168
+ target._originalForceDepthWrite = this._originalForceDepthWrite;
169
+ target._applyBlendState();
170
+ }
171
+ },
172
+ (() => {
173
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
174
+ _get_isEnabled_decorators = [serialize()];
175
+ _get_intensity_decorators = [serialize()];
176
+ __esDecorate(_a, null, _get_isEnabled_decorators, { kind: "getter", name: "isEnabled", static: false, private: false, access: { has: obj => "isEnabled" in obj, get: obj => obj.isEnabled }, metadata: _metadata }, null, _instanceExtraInitializers);
177
+ __esDecorate(_a, null, _get_intensity_decorators, { kind: "getter", name: "intensity", static: false, private: false, access: { has: obj => "intensity" in obj, get: obj => obj.intensity }, metadata: _metadata }, null, _instanceExtraInitializers);
178
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
179
+ })(),
180
+ _a;
181
+ })();
182
+ export { GaussianSplattingOverdrawMaterialPlugin };
183
+ let _Registered = false;
184
+ /** Registers the plugin for material parsing; safe to call repeatedly. */
185
+ export function RegisterGaussianSplattingOverdrawMaterialPlugin() {
186
+ if (!_Registered) {
187
+ _Registered = true;
188
+ RegisterClass("BABYLON.GaussianSplattingOverdrawMaterialPlugin", GaussianSplattingOverdrawMaterialPlugin);
189
+ }
190
+ }
191
+ //# sourceMappingURL=gaussianSplattingOverdrawMaterialPlugin.pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaussianSplattingOverdrawMaterialPlugin.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type UniformBuffer } from \"../uniformBuffer\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { type GaussianSplattingMaterial } from \"./gaussianSplattingMaterial.pure\";\r\n\r\n/**\r\n * Displays equal-contribution Gaussian fragment overdraw, independently of color and Gaussian opacity.\r\n * Uses additive ONE+ONE RGB blending and disables depth writes while active; keeps depth testing.\r\n * Restores the material's prior blending/depth settings on disable or disposal.\r\n * See https://playground.babylonjs.com/#D4U720#1\r\n */\r\nexport class GaussianSplattingOverdrawMaterialPlugin extends MaterialPluginBase {\r\n private _isEnabled = true;\r\n private _intensity = 1 / 256;\r\n private _originalAlphaMode: number;\r\n private _originalDisableDepthWrite: boolean;\r\n private _originalForceDepthWrite: boolean;\r\n\r\n /**\r\n * Whether equal-contribution additive rendering is active. Defaults to true.\r\n */\r\n @serialize()\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n public set isEnabled(value: boolean) {\r\n if (value === this._isEnabled) {\r\n return;\r\n }\r\n this._isEnabled = value;\r\n if (value) {\r\n this._originalAlphaMode = this._material.alphaMode;\r\n this._originalDisableDepthWrite = this._material.disableDepthWrite;\r\n this._originalForceDepthWrite = this._material.forceDepthWrite;\r\n }\r\n this._applyBlendState();\r\n }\r\n\r\n /**\r\n * Equal RGB contribution per surviving fragment. Defaults to 1/256 (256 overlaps reach white).\r\n */\r\n @serialize()\r\n public get intensity(): number {\r\n return this._intensity;\r\n }\r\n public set intensity(value: number) {\r\n if (!Number.isFinite(value) || value <= 0) {\r\n throw new RangeError(\"intensity must be a positive finite number.\");\r\n }\r\n this._intensity = value;\r\n }\r\n\r\n /**\r\n * Attaches the additive overdraw visualization to a Gaussian splat material.\r\n * @param material The material to visualize\r\n */\r\n constructor(material: GaussianSplattingMaterial) {\r\n super(material, \"GaussianSplattingOverdraw\", 220);\r\n this._originalAlphaMode = material.alphaMode;\r\n this._originalDisableDepthWrite = material.disableDepthWrite;\r\n this._originalForceDepthWrite = material.forceDepthWrite;\r\n this._applyBlendState();\r\n this._enable(true);\r\n }\r\n\r\n private _applyBlendState(): void {\r\n if (this._isEnabled) {\r\n this._material.alphaMode = Constants.ALPHA_ONEONE;\r\n this._material.disableDepthWrite = true;\r\n this._material.forceDepthWrite = false;\r\n } else {\r\n if (this._material.alphaMode === Constants.ALPHA_ONEONE) {\r\n this._material.alphaMode = this._originalAlphaMode;\r\n }\r\n if (this._material.disableDepthWrite) {\r\n this._material.disableDepthWrite = this._originalDisableDepthWrite;\r\n }\r\n if (!this._material.forceDepthWrite) {\r\n this._material.forceDepthWrite = this._originalForceDepthWrite;\r\n }\r\n }\r\n }\r\n\r\n /** @returns The registered plugin class name */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingOverdrawMaterialPlugin\";\r\n }\r\n\r\n /**\r\n * @param shaderLanguage Shader language to test\r\n * @returns Whether the shader language is supported\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n return shaderLanguage === ShaderLanguage.GLSL || shaderLanguage === ShaderLanguage.WGSL;\r\n }\r\n\r\n /**\r\n * @param shaderType Vertex or fragment\r\n * @param shaderLanguage GLSL or WGSL\r\n * @returns Code inserted into the Gaussian shader, or null\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType !== \"fragment\") {\r\n return null;\r\n }\r\n const wgsl = shaderLanguage === ShaderLanguage.WGSL;\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: wgsl\r\n ? \"uniform splatOverdrawEnabled: f32;\\nuniform splatOverdrawIntensity: f32;\"\r\n : \"uniform float splatOverdrawEnabled;\\nuniform float splatOverdrawIntensity;\",\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: wgsl\r\n ? \"if (uniforms.splatOverdrawEnabled > 0.5) { if (finalColor.a <= 0.0) { discard; } finalColor = vec4f(vec3f(uniforms.splatOverdrawIntensity), 1.0); }\"\r\n : \"if (splatOverdrawEnabled > 0.5) { if (finalColor.a <= 0.0) discard; finalColor = vec4(vec3(splatOverdrawIntensity), 1.0); }\",\r\n };\r\n }\r\n\r\n /** @returns Shader uniforms for both languages */\r\n public override getUniforms(): { externalUniforms: string[] } {\r\n return { externalUniforms: [\"splatOverdrawEnabled\", \"splatOverdrawIntensity\"] };\r\n }\r\n\r\n /**\r\n * Binds the overdraw visualization uniforms for the rendered submesh.\r\n * @param _uniformBuffer Unused\r\n * @param _scene Current scene\r\n * @param _engine Current engine\r\n * @param subMesh Rendered submesh\r\n */\r\n public override bindForSubMesh(_uniformBuffer: UniformBuffer, _scene: Scene, _engine: AbstractEngine, subMesh: SubMesh): void {\r\n subMesh.effect?.setFloat(\"splatOverdrawEnabled\", this._isEnabled ? 1 : 0);\r\n subMesh.effect?.setFloat(\"splatOverdrawIntensity\", this._intensity);\r\n }\r\n\r\n /** Restores blend/depth settings owned by this plugin. */\r\n public override dispose(): void {\r\n this.isEnabled = false;\r\n }\r\n\r\n /** @returns Serialized settings, including the pre-plugin blend/depth state */\r\n public override serialize(): any {\r\n return {\r\n ...super.serialize(),\r\n originalAlphaMode: this._originalAlphaMode,\r\n originalDisableDepthWrite: this._originalDisableDepthWrite,\r\n originalForceDepthWrite: this._originalForceDepthWrite,\r\n };\r\n }\r\n\r\n /**\r\n * Restores original blend settings after material parsing.\r\n * @param source Serialized plugin\r\n * @param scene Scene containing the material\r\n * @param rootUrl Asset root URL\r\n */\r\n public override parse(source: any, scene: Scene, rootUrl: string): void {\r\n super.parse(source, scene, rootUrl);\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n this._originalAlphaMode = source.originalAlphaMode ?? this._originalAlphaMode;\r\n this._originalDisableDepthWrite = source.originalDisableDepthWrite ?? this._originalDisableDepthWrite;\r\n this._originalForceDepthWrite = source.originalForceDepthWrite ?? this._originalForceDepthWrite;\r\n this._applyBlendState();\r\n }\r\n\r\n /**\r\n * Copies the original blend state as well as the public settings.\r\n * @param plugin Destination plugin\r\n */\r\n public override copyTo(plugin: MaterialPluginBase): void {\r\n const target = plugin as GaussianSplattingOverdrawMaterialPlugin;\r\n super.copyTo(plugin);\r\n if (!target._isEnabled) {\r\n return;\r\n }\r\n target._originalAlphaMode = this._originalAlphaMode;\r\n target._originalDisableDepthWrite = this._originalDisableDepthWrite;\r\n target._originalForceDepthWrite = this._originalForceDepthWrite;\r\n target._applyBlendState();\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/** Registers the plugin for material parsing; safe to call repeatedly. */\r\nexport function RegisterGaussianSplattingOverdrawMaterialPlugin(): void {\r\n if (!_Registered) {\r\n _Registered = true;\r\n RegisterClass(\"BABYLON.GaussianSplattingOverdrawMaterialPlugin\", GaussianSplattingOverdrawMaterialPlugin);\r\n }\r\n}\r\n"]}
@@ -0,0 +1 @@
1
+ export * from "./gaussianSplattingSizeMaterialPlugin.pure.js";
@@ -0,0 +1,4 @@
1
+ export * from "./gaussianSplattingSizeMaterialPlugin.pure.js";
2
+ import { RegisterGaussianSplattingSizeMaterialPlugin } from "./gaussianSplattingSizeMaterialPlugin.pure.js";
3
+ RegisterGaussianSplattingSizeMaterialPlugin();
4
+ //# sourceMappingURL=gaussianSplattingSizeMaterialPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaussianSplattingSizeMaterialPlugin.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.ts"],"names":[],"mappings":"AAAA,cAAc,4CAA4C,CAAC;AAE3D,OAAO,EAAE,2CAA2C,EAAE,MAAM,4CAA4C,CAAC;AACzG,2CAA2C,EAAE,CAAC","sourcesContent":["export * from \"./gaussianSplattingSizeMaterialPlugin.pure\";\r\n\r\nimport { RegisterGaussianSplattingSizeMaterialPlugin } from \"./gaussianSplattingSizeMaterialPlugin.pure\";\r\nRegisterGaussianSplattingSizeMaterialPlugin();\r\n"]}
@@ -0,0 +1,62 @@
1
+ /** This file must only contain pure code and pure imports */
2
+ import { type Nullable } from "../../types.js";
3
+ import { type Scene } from "../../scene.pure.js";
4
+ import { type AbstractEngine } from "../../Engines/abstractEngine.pure.js";
5
+ import { type SubMesh } from "../../Meshes/subMesh.pure.js";
6
+ import { type UniformBuffer } from "../uniformBuffer.js";
7
+ import { MaterialPluginBase } from "../materialPluginBase.pure.js";
8
+ import { ShaderLanguage } from "../shaderLanguage.js";
9
+ import { type GaussianSplattingMaterial } from "./gaussianSplattingMaterial.pure.js";
10
+ /**
11
+ * Visualizes the longest projected Gaussian ellipse diameter in render-target pixels.
12
+ * Smaller splats are whiter: brightness = sizeScale / (sizeScale + diameter).
13
+ * See https://playground.babylonjs.com/#8FOB3C#0
14
+ */
15
+ export declare class GaussianSplattingSizeMaterialPlugin extends MaterialPluginBase {
16
+ private _isEnabled;
17
+ private _sizeScale;
18
+ /**
19
+ * Whether this plugin replaces the splat's RGB color. Disabling it restores normal color without removing the plugin.
20
+ */
21
+ get isEnabled(): boolean;
22
+ set isEnabled(value: boolean);
23
+ /**
24
+ * Positive half-brightness diameter, measured in render-target pixels. Defaults to 16.
25
+ */
26
+ get sizeScale(): number;
27
+ set sizeScale(value: number);
28
+ /**
29
+ * Attaches the projected-size visualization to a Gaussian splat material.
30
+ * @param material The material to visualize
31
+ */
32
+ constructor(material: GaussianSplattingMaterial);
33
+ /** @returns The registered plugin class name */
34
+ getClassName(): string;
35
+ /**
36
+ * @param shaderLanguage Shader language to test
37
+ * @returns Whether the shader language is supported
38
+ */
39
+ isCompatible(shaderLanguage: ShaderLanguage): boolean;
40
+ /**
41
+ * @param shaderType Vertex or fragment
42
+ * @param shaderLanguage GLSL or WGSL
43
+ * @returns Code inserted into the Gaussian shader, or null
44
+ */
45
+ getCustomCode(shaderType: string, shaderLanguage?: ShaderLanguage): Nullable<{
46
+ [pointName: string]: string;
47
+ }>;
48
+ /** @returns Shader uniforms for both languages */
49
+ getUniforms(): {
50
+ externalUniforms: string[];
51
+ };
52
+ /**
53
+ * Binds the projected-size visualization uniforms for the rendered submesh.
54
+ * @param _uniformBuffer Unused
55
+ * @param _scene Current scene
56
+ * @param _engine Current engine
57
+ * @param subMesh Rendered submesh
58
+ */
59
+ bindForSubMesh(_uniformBuffer: UniformBuffer, _scene: Scene, _engine: AbstractEngine, subMesh: SubMesh): void;
60
+ }
61
+ /** Registers the plugin for material parsing; safe to call repeatedly. */
62
+ export declare function RegisterGaussianSplattingSizeMaterialPlugin(): void;
@@ -0,0 +1,125 @@
1
+ /** This file must only contain pure code and pure imports */
2
+ import { __esDecorate, __runInitializers } from "../../tslib.es6.js";
3
+ import { serialize } from "../../Misc/decorators.js";
4
+ import { RegisterClass } from "../../Misc/typeStore.js";
5
+ import { MaterialPluginBase } from "../materialPluginBase.pure.js";
6
+ /**
7
+ * Visualizes the longest projected Gaussian ellipse diameter in render-target pixels.
8
+ * Smaller splats are whiter: brightness = sizeScale / (sizeScale + diameter).
9
+ * See https://playground.babylonjs.com/#8FOB3C#0
10
+ */
11
+ let GaussianSplattingSizeMaterialPlugin = (() => {
12
+ var _a;
13
+ let _classSuper = MaterialPluginBase;
14
+ let _instanceExtraInitializers = [];
15
+ let _get_isEnabled_decorators;
16
+ let _get_sizeScale_decorators;
17
+ return _a = class GaussianSplattingSizeMaterialPlugin extends _classSuper {
18
+ /**
19
+ * Whether this plugin replaces the splat's RGB color. Disabling it restores normal color without removing the plugin.
20
+ */
21
+ get isEnabled() {
22
+ return this._isEnabled;
23
+ }
24
+ set isEnabled(value) {
25
+ this._isEnabled = value;
26
+ }
27
+ /**
28
+ * Positive half-brightness diameter, measured in render-target pixels. Defaults to 16.
29
+ */
30
+ get sizeScale() {
31
+ return this._sizeScale;
32
+ }
33
+ set sizeScale(value) {
34
+ if (!Number.isFinite(value) || value <= 0) {
35
+ throw new RangeError("sizeScale must be a positive finite number of pixels.");
36
+ }
37
+ this._sizeScale = value;
38
+ }
39
+ /**
40
+ * Attaches the projected-size visualization to a Gaussian splat material.
41
+ * @param material The material to visualize
42
+ */
43
+ constructor(material) {
44
+ super(material, "GaussianSplattingSize", 210);
45
+ this._isEnabled = (__runInitializers(this, _instanceExtraInitializers), true);
46
+ this._sizeScale = 16;
47
+ this._enable(true);
48
+ }
49
+ /** @returns The registered plugin class name */
50
+ getClassName() {
51
+ return "GaussianSplattingSizeMaterialPlugin";
52
+ }
53
+ /**
54
+ * @param shaderLanguage Shader language to test
55
+ * @returns Whether the shader language is supported
56
+ */
57
+ isCompatible(shaderLanguage) {
58
+ return shaderLanguage === 0 /* ShaderLanguage.GLSL */ || shaderLanguage === 1 /* ShaderLanguage.WGSL */;
59
+ }
60
+ /**
61
+ * @param shaderType Vertex or fragment
62
+ * @param shaderLanguage GLSL or WGSL
63
+ * @returns Code inserted into the Gaussian shader, or null
64
+ */
65
+ getCustomCode(shaderType, shaderLanguage = 0 /* ShaderLanguage.GLSL */) {
66
+ const wgsl = shaderLanguage === 1 /* ShaderLanguage.WGSL */;
67
+ if (shaderType === "vertex") {
68
+ return {
69
+ CUSTOM_VERTEX_DEFINITIONS: wgsl
70
+ ? "varying vSplatSizeBrightness: f32;\nuniform splatSizeScale: f32;"
71
+ : "varying float vSplatSizeBrightness;\nuniform float splatSizeScale;",
72
+ CUSTOM_VERTEX_UPDATE: wgsl ? "vertexOutputs.vSplatSizeBrightness = 0.0;" : "vSplatSizeBrightness = 0.0;",
73
+ CUSTOM_GAUSSIAN_SPLAT_PROJECTED_SIZE: wgsl
74
+ ? "vertexOutputs.vSplatSizeBrightness = uniforms.splatSizeScale / (uniforms.splatSizeScale + 2.0 * max(length(majorAxis * scale), length(minorAxis * scale)));"
75
+ : "vSplatSizeBrightness = splatSizeScale / (splatSizeScale + 2.0 * max(length(majorAxis * scale), length(minorAxis * scale)));",
76
+ };
77
+ }
78
+ if (shaderType === "fragment") {
79
+ return {
80
+ CUSTOM_FRAGMENT_DEFINITIONS: wgsl
81
+ ? "varying vSplatSizeBrightness: f32;\nuniform splatSizeEnabled: f32;"
82
+ : "varying float vSplatSizeBrightness;\nuniform float splatSizeEnabled;",
83
+ CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: wgsl
84
+ ? "if (uniforms.splatSizeEnabled > 0.5) { finalColor = vec4f(vec3f(fragmentInputs.vSplatSizeBrightness), finalColor.a); }"
85
+ : "if (splatSizeEnabled > 0.5) { finalColor = vec4(vec3(vSplatSizeBrightness), finalColor.a); }",
86
+ };
87
+ }
88
+ return null;
89
+ }
90
+ /** @returns Shader uniforms for both languages */
91
+ getUniforms() {
92
+ return { externalUniforms: ["splatSizeScale", "splatSizeEnabled"] };
93
+ }
94
+ /**
95
+ * Binds the projected-size visualization uniforms for the rendered submesh.
96
+ * @param _uniformBuffer Unused
97
+ * @param _scene Current scene
98
+ * @param _engine Current engine
99
+ * @param subMesh Rendered submesh
100
+ */
101
+ bindForSubMesh(_uniformBuffer, _scene, _engine, subMesh) {
102
+ subMesh.effect?.setFloat("splatSizeScale", this._sizeScale);
103
+ subMesh.effect?.setFloat("splatSizeEnabled", this._isEnabled ? 1 : 0);
104
+ }
105
+ },
106
+ (() => {
107
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
108
+ _get_isEnabled_decorators = [serialize()];
109
+ _get_sizeScale_decorators = [serialize()];
110
+ __esDecorate(_a, null, _get_isEnabled_decorators, { kind: "getter", name: "isEnabled", static: false, private: false, access: { has: obj => "isEnabled" in obj, get: obj => obj.isEnabled }, metadata: _metadata }, null, _instanceExtraInitializers);
111
+ __esDecorate(_a, null, _get_sizeScale_decorators, { kind: "getter", name: "sizeScale", static: false, private: false, access: { has: obj => "sizeScale" in obj, get: obj => obj.sizeScale }, metadata: _metadata }, null, _instanceExtraInitializers);
112
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
113
+ })(),
114
+ _a;
115
+ })();
116
+ export { GaussianSplattingSizeMaterialPlugin };
117
+ let _Registered = false;
118
+ /** Registers the plugin for material parsing; safe to call repeatedly. */
119
+ export function RegisterGaussianSplattingSizeMaterialPlugin() {
120
+ if (!_Registered) {
121
+ _Registered = true;
122
+ RegisterClass("BABYLON.GaussianSplattingSizeMaterialPlugin", GaussianSplattingSizeMaterialPlugin);
123
+ }
124
+ }
125
+ //# sourceMappingURL=gaussianSplattingSizeMaterialPlugin.pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaussianSplattingSizeMaterialPlugin.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type UniformBuffer } from \"../uniformBuffer\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { type GaussianSplattingMaterial } from \"./gaussianSplattingMaterial.pure\";\r\n\r\n/**\r\n * Visualizes the longest projected Gaussian ellipse diameter in render-target pixels.\r\n * Smaller splats are whiter: brightness = sizeScale / (sizeScale + diameter).\r\n * See https://playground.babylonjs.com/#8FOB3C#0\r\n */\r\nexport class GaussianSplattingSizeMaterialPlugin extends MaterialPluginBase {\r\n private _isEnabled = true;\r\n private _sizeScale = 16;\r\n\r\n /**\r\n * Whether this plugin replaces the splat's RGB color. Disabling it restores normal color without removing the plugin.\r\n */\r\n @serialize()\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n public set isEnabled(value: boolean) {\r\n this._isEnabled = value;\r\n }\r\n\r\n /**\r\n * Positive half-brightness diameter, measured in render-target pixels. Defaults to 16.\r\n */\r\n @serialize()\r\n public get sizeScale(): number {\r\n return this._sizeScale;\r\n }\r\n public set sizeScale(value: number) {\r\n if (!Number.isFinite(value) || value <= 0) {\r\n throw new RangeError(\"sizeScale must be a positive finite number of pixels.\");\r\n }\r\n this._sizeScale = value;\r\n }\r\n\r\n /**\r\n * Attaches the projected-size visualization to a Gaussian splat material.\r\n * @param material The material to visualize\r\n */\r\n constructor(material: GaussianSplattingMaterial) {\r\n super(material, \"GaussianSplattingSize\", 210);\r\n this._enable(true);\r\n }\r\n\r\n /** @returns The registered plugin class name */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingSizeMaterialPlugin\";\r\n }\r\n\r\n /**\r\n * @param shaderLanguage Shader language to test\r\n * @returns Whether the shader language is supported\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n return shaderLanguage === ShaderLanguage.GLSL || shaderLanguage === ShaderLanguage.WGSL;\r\n }\r\n\r\n /**\r\n * @param shaderType Vertex or fragment\r\n * @param shaderLanguage GLSL or WGSL\r\n * @returns Code inserted into the Gaussian shader, or null\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n const wgsl = shaderLanguage === ShaderLanguage.WGSL;\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: wgsl\r\n ? \"varying vSplatSizeBrightness: f32;\\nuniform splatSizeScale: f32;\"\r\n : \"varying float vSplatSizeBrightness;\\nuniform float splatSizeScale;\",\r\n CUSTOM_VERTEX_UPDATE: wgsl ? \"vertexOutputs.vSplatSizeBrightness = 0.0;\" : \"vSplatSizeBrightness = 0.0;\",\r\n CUSTOM_GAUSSIAN_SPLAT_PROJECTED_SIZE: wgsl\r\n ? \"vertexOutputs.vSplatSizeBrightness = uniforms.splatSizeScale / (uniforms.splatSizeScale + 2.0 * max(length(majorAxis * scale), length(minorAxis * scale)));\"\r\n : \"vSplatSizeBrightness = splatSizeScale / (splatSizeScale + 2.0 * max(length(majorAxis * scale), length(minorAxis * scale)));\",\r\n };\r\n }\r\n if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: wgsl\r\n ? \"varying vSplatSizeBrightness: f32;\\nuniform splatSizeEnabled: f32;\"\r\n : \"varying float vSplatSizeBrightness;\\nuniform float splatSizeEnabled;\",\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: wgsl\r\n ? \"if (uniforms.splatSizeEnabled > 0.5) { finalColor = vec4f(vec3f(fragmentInputs.vSplatSizeBrightness), finalColor.a); }\"\r\n : \"if (splatSizeEnabled > 0.5) { finalColor = vec4(vec3(vSplatSizeBrightness), finalColor.a); }\",\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n /** @returns Shader uniforms for both languages */\r\n public override getUniforms(): { externalUniforms: string[] } {\r\n return { externalUniforms: [\"splatSizeScale\", \"splatSizeEnabled\"] };\r\n }\r\n\r\n /**\r\n * Binds the projected-size visualization uniforms for the rendered submesh.\r\n * @param _uniformBuffer Unused\r\n * @param _scene Current scene\r\n * @param _engine Current engine\r\n * @param subMesh Rendered submesh\r\n */\r\n public override bindForSubMesh(_uniformBuffer: UniformBuffer, _scene: Scene, _engine: AbstractEngine, subMesh: SubMesh): void {\r\n subMesh.effect?.setFloat(\"splatSizeScale\", this._sizeScale);\r\n subMesh.effect?.setFloat(\"splatSizeEnabled\", this._isEnabled ? 1 : 0);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/** Registers the plugin for material parsing; safe to call repeatedly. */\r\nexport function RegisterGaussianSplattingSizeMaterialPlugin(): void {\r\n if (!_Registered) {\r\n _Registered = true;\r\n RegisterClass(\"BABYLON.GaussianSplattingSizeMaterialPlugin\", GaussianSplattingSizeMaterialPlugin);\r\n }\r\n}\r\n"]}
@@ -2,7 +2,7 @@
2
2
  import { __esDecorate, __runInitializers } from "../../tslib.es6.js";
3
3
  import { serialize } from "../../Misc/decorators.js";
4
4
  import { MaterialPluginBase } from "../materialPluginBase.pure.js";
5
- import { GetGaussianSplattingMaxPartCount } from "./gaussianSplattingMaterial.pure.js";
5
+ import { GetGaussianSplattingMaxPartCount, GetPartIndexVaryingDeclaration } from "./gaussianSplattingMaterial.pure.js";
6
6
  import { RegisterClass } from "../../Misc/typeStore.js";
7
7
  /**
8
8
  * Plugin for GaussianSplattingMaterial that replaces per-splat colors with a
@@ -106,7 +106,7 @@ let GaussianSplattingSolidColorMaterialPlugin = (() => {
106
106
  _getCustomCodeGLSL(shaderType, maxPartCount) {
107
107
  if (shaderType === "vertex") {
108
108
  return {
109
- CUSTOM_VERTEX_DEFINITIONS: `varying float vPartIndex;`,
109
+ CUSTOM_VERTEX_DEFINITIONS: GetPartIndexVaryingDeclaration(0 /* ShaderLanguage.GLSL */),
110
110
  CUSTOM_VERTEX_UPDATE: `
111
111
  #if IS_COMPOUND
112
112
  vPartIndex = float(splat.partIndex);
@@ -119,7 +119,7 @@ let GaussianSplattingSolidColorMaterialPlugin = (() => {
119
119
  else if (shaderType === "fragment") {
120
120
  return {
121
121
  CUSTOM_FRAGMENT_DEFINITIONS: `
122
- varying float vPartIndex;
122
+ ${GetPartIndexVaryingDeclaration(0 /* ShaderLanguage.GLSL */)}
123
123
  uniform float solidColorEnabled;
124
124
  uniform vec3 partColors[${maxPartCount}];
125
125
  `,
@@ -136,7 +136,7 @@ if (solidColorEnabled > 0.5) {
136
136
  _getCustomCodeWGSL(shaderType, maxPartCount) {
137
137
  if (shaderType === "vertex") {
138
138
  return {
139
- CUSTOM_VERTEX_DEFINITIONS: `varying vPartIndex: f32;`,
139
+ CUSTOM_VERTEX_DEFINITIONS: GetPartIndexVaryingDeclaration(1 /* ShaderLanguage.WGSL */),
140
140
  CUSTOM_VERTEX_UPDATE: `
141
141
  #if IS_COMPOUND
142
142
  vertexOutputs.vPartIndex = f32(splat.partIndex);
@@ -149,7 +149,7 @@ if (solidColorEnabled > 0.5) {
149
149
  else if (shaderType === "fragment") {
150
150
  return {
151
151
  CUSTOM_FRAGMENT_DEFINITIONS: `
152
- varying vPartIndex: f32;
152
+ ${GetPartIndexVaryingDeclaration(1 /* ShaderLanguage.WGSL */)}
153
153
  uniform solidColorEnabled: f32;
154
154
  uniform partColors: array<vec3f, ${maxPartCount}>;
155
155
  `,
@@ -1 +1 @@
1
- {"version":3,"file":"gaussianSplattingSolidColorMaterialPlugin.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type UniformBuffer } from \"../uniformBuffer\";\r\nimport { type MaterialDefines } from \"../materialDefines\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type Color3 } from \"../../Maths/math.color.pure\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { GetGaussianSplattingMaxPartCount, type GaussianSplattingMaterial } from \"./gaussianSplattingMaterial.pure\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\n\r\n/**\r\n * Plugin for GaussianSplattingMaterial that replaces per-splat colors with a\r\n * solid color per compound-mesh part. Each part index maps to a single Color3\r\n * value, which is looked up in a uniform array in the fragment shader.\r\n */\r\nexport class GaussianSplattingSolidColorMaterialPlugin extends MaterialPluginBase {\r\n private _partColors: Color3[];\r\n private _maxPartCount: number;\r\n private _isEnabled = true;\r\n private readonly _partColorArray: number[] = [];\r\n /**\r\n * Whether the solid-color override is active. When false, splats\r\n * render with their original per-splat colors.\r\n * Toggled via a shader uniform so no recompilation is required.\r\n */\r\n @serialize()\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n this._isEnabled = value;\r\n this._onIsEnabledChanged();\r\n }\r\n\r\n /** @internal */\r\n public _onIsEnabledChanged(): void {\r\n // Intentional no-op: isEnabled is applied via a uniform in\r\n // bindForSubMesh, so no dirty-marking or recompilation is needed.\r\n }\r\n\r\n /**\r\n * Creates a new GaussianSplatSolidColorPlugin.\r\n * @param material The GaussianSplattingMaterial to attach the plugin to.\r\n * @param partColors A map from part index to the solid Color3 for that part.\r\n * @param maxPartCount The maximum number of parts supported. This determines the size of the uniform array.\r\n */\r\n constructor(material: GaussianSplattingMaterial, partColors: Color3[], maxPartCount?: number) {\r\n super(material, \"GaussianSplatSolidColor\", 200);\r\n\r\n this._partColors = partColors;\r\n this._maxPartCount = maxPartCount ?? GetGaussianSplattingMaxPartCount(material.getScene().getEngine());\r\n this._enable(true);\r\n }\r\n\r\n /**\r\n * Updates the part colors dynamically.\r\n * @param partColors A map from part index to the solid Color3 for that part.\r\n */\r\n public updatePartColors(partColors: Color3[]): void {\r\n this._partColors = partColors;\r\n }\r\n\r\n // --- Plugin overrides ---\r\n\r\n /**\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingSolidColorMaterialPlugin\";\r\n }\r\n\r\n /**\r\n * Indicates this plugin supports both GLSL and WGSL.\r\n * @param shaderLanguage the shader language to check\r\n * @returns true for GLSL and WGSL\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n switch (shaderLanguage) {\r\n case ShaderLanguage.GLSL:\r\n case ShaderLanguage.WGSL:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Always ready — no textures or async resources to wait on.\r\n * @param _defines the defines\r\n * @param _scene the scene\r\n * @param _engine the engine\r\n * @param _subMesh the submesh\r\n * @returns true\r\n */\r\n public override isReadyForSubMesh(_defines: MaterialDefines, _scene: Scene, _engine: AbstractEngine, _subMesh: SubMesh): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns custom shader code fragments to inject solid-color rendering.\r\n *\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @param shaderLanguage the shader language to use (default: GLSL)\r\n * @returns null or a map of injection point names to code strings\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n const maxPartCount = this._maxPartCount;\r\n\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n return this._getCustomCodeWGSL(shaderType, maxPartCount);\r\n }\r\n return this._getCustomCodeGLSL(shaderType, maxPartCount);\r\n }\r\n\r\n private _getCustomCodeGLSL(shaderType: string, maxPartCount: number): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: `varying float vPartIndex;`,\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vPartIndex = float(splat.partIndex);\r\n#else\r\n vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\nvarying float vPartIndex;\r\nuniform float solidColorEnabled;\r\nuniform vec3 partColors[${maxPartCount}];\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\nif (solidColorEnabled > 0.5) {\r\n int partIdx = int(vPartIndex + 0.5);\r\n finalColor = vec4(partColors[partIdx], finalColor.w);\r\n}\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n private _getCustomCodeWGSL(shaderType: string, maxPartCount: number): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: `varying vPartIndex: f32;`,\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vertexOutputs.vPartIndex = f32(splat.partIndex);\r\n#else\r\n vertexOutputs.vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\nvarying vPartIndex: f32;\r\nuniform solidColorEnabled: f32;\r\nuniform partColors: array<vec3f, ${maxPartCount}>;\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\nif (uniforms.solidColorEnabled > 0.5) {\r\n var partIdx: i32 = i32(fragmentInputs.vPartIndex + 0.5);\r\n finalColor = vec4f(uniforms.partColors[partIdx], finalColor.w);\r\n}\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Registers the plugin uniforms with the engine so that\r\n * the Effect can resolve their locations.\r\n * @returns uniform descriptions\r\n */\r\n public override getUniforms(): {\r\n ubo?: Array<{ name: string; size?: number; type?: string; arraySize?: number }>;\r\n vertex?: string;\r\n fragment?: string;\r\n externalUniforms?: string[];\r\n } {\r\n return {\r\n externalUniforms: [\"partColors\", \"solidColorEnabled\"],\r\n };\r\n }\r\n\r\n /**\r\n * Binds the plugin uniforms each frame.\r\n * @param _uniformBuffer the uniform buffer (unused — we bind directly on the effect)\r\n * @param _scene the current scene\r\n * @param _engine the current engine\r\n * @param subMesh the submesh being rendered\r\n */\r\n public override bindForSubMesh(_uniformBuffer: UniformBuffer, _scene: Scene, _engine: AbstractEngine, subMesh: SubMesh): void {\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n effect.setFloat(\"solidColorEnabled\", this._isEnabled ? 1.0 : 0.0);\r\n\r\n const colorArray = this._partColorArray;\r\n colorArray.length = 0;\r\n for (let i = 0; i < this._maxPartCount; i++) {\r\n const color = this._partColors[i];\r\n if (color) {\r\n colorArray.push(color.r, color.g, color.b);\r\n } else {\r\n colorArray.push(0, 0, 0);\r\n }\r\n }\r\n\r\n effect.setArray3(\"partColors\", colorArray);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for gaussianSplattingSolidColorMaterialPlugin.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterGaussianSplattingSolidColorMaterialPlugin(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GaussianSplattingSolidColorMaterialPlugin\", GaussianSplattingSolidColorMaterialPlugin);\r\n}\r\n"]}
1
+ {"version":3,"file":"gaussianSplattingSolidColorMaterialPlugin.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;;AAQ7D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,gCAAgC,EAAE,8BAA8B,EAAkC,MAAM,kCAAkC,CAAC;AACpJ,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;GAIG;IACU,yCAAyC;;sBAAS,kBAAkB;;;sBAApE,yCAA0C,SAAQ,WAAkB;YAK7E;;;;eAIG;YAEH,IAAW,SAAS;gBAChB,OAAO,IAAI,CAAC,UAAU,CAAC;YAC3B,CAAC;YAED,IAAW,SAAS,CAAC,KAAc;gBAC/B,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;oBAC5B,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/B,CAAC;YAED,gBAAgB;YACT,mBAAmB;gBACtB,2DAA2D;gBAC3D,kEAAkE;YACtE,CAAC;YAED;;;;;eAKG;YACH,YAAY,QAAmC,EAAE,UAAoB,EAAE,YAAqB;gBACxF,KAAK,CAAC,QAAQ,EAAE,yBAAyB,EAAE,GAAG,CAAC,CAAC;gBAnC5C,gBAAW,GADV,mDAAyC,CACpB;gBAEtB,eAAU,GAAG,IAAI,CAAC;gBACT,oBAAe,GAAa,EAAE,CAAC;gBAkC5C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;gBAC9B,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,gCAAgC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;gBACvG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAED;;;eAGG;YACI,gBAAgB,CAAC,UAAoB;gBACxC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAClC,CAAC;YAED,2BAA2B;YAE3B;;eAEG;YACa,YAAY;gBACxB,OAAO,2CAA2C,CAAC;YACvD,CAAC;YAED;;;;eAIG;YACa,YAAY,CAAC,cAA8B;gBACvD,QAAQ,cAAc,EAAE,CAAC;oBACrB,iCAAyB;oBACzB;wBACI,OAAO,IAAI,CAAC;oBAChB;wBACI,OAAO,KAAK,CAAC;gBACrB,CAAC;YACL,CAAC;YAED;;;;;;;eAOG;YACa,iBAAiB,CAAC,QAAyB,EAAE,MAAa,EAAE,OAAuB,EAAE,QAAiB;gBAClH,OAAO,IAAI,CAAC;YAChB,CAAC;YAED;;;;;;eAMG;YACa,aAAa,CAAC,UAAkB,EAAE,cAAc,8BAAsB;gBAClF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;gBAExC,IAAI,cAAc,gCAAwB,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAC7D,CAAC;YAEO,kBAAkB,CAAC,UAAkB,EAAE,YAAoB;gBAC/D,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC1B,OAAO;wBACH,yBAAyB,EAAE,8BAA8B,6BAAqB;wBAC9E,oBAAoB,EAAE;;;;;;iBAMrB;qBACJ,CAAC;gBACN,CAAC;qBAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;oBACnC,OAAO;wBACH,2BAA2B,EAAE;EAC3C,8BAA8B,6BAAqB;;0BAE3B,YAAY;iBACrB;wBACD,gCAAgC,EAAE;;;;;iBAKjC;qBACJ,CAAC;gBACN,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAEO,kBAAkB,CAAC,UAAkB,EAAE,YAAoB;gBAC/D,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC1B,OAAO;wBACH,yBAAyB,EAAE,8BAA8B,6BAAqB;wBAC9E,oBAAoB,EAAE;;;;;;iBAMrB;qBACJ,CAAC;gBACN,CAAC;qBAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;oBACnC,OAAO;wBACH,2BAA2B,EAAE;EAC3C,8BAA8B,6BAAqB;;mCAElB,YAAY;iBAC9B;wBACD,gCAAgC,EAAE;;;;;iBAKjC;qBACJ,CAAC;gBACN,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAED;;;;eAIG;YACa,WAAW;gBAMvB,OAAO;oBACH,gBAAgB,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;iBACxD,CAAC;YACN,CAAC;YAED;;;;;;eAMG;YACa,cAAc,CAAC,cAA6B,EAAE,MAAa,EAAE,OAAuB,EAAE,OAAgB;gBAClH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO;gBACX,CAAC;gBAED,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAElE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;gBACxC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAClC,IAAI,KAAK,EAAE,CAAC;wBACR,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC;gBAED,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC;;;;yCApMA,SAAS,EAAE;YACZ,gLAAW,SAAS,6DAEnB;;;;;SAbQ,yCAAyC;AAiNtD,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,iDAAiD;IAC7D,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,aAAa,CAAC,mDAAmD,EAAE,yCAAyC,CAAC,CAAC;AAClH,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type UniformBuffer } from \"../uniformBuffer\";\r\nimport { type MaterialDefines } from \"../materialDefines\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type Color3 } from \"../../Maths/math.color.pure\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { GetGaussianSplattingMaxPartCount, GetPartIndexVaryingDeclaration, type GaussianSplattingMaterial } from \"./gaussianSplattingMaterial.pure\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\n\r\n/**\r\n * Plugin for GaussianSplattingMaterial that replaces per-splat colors with a\r\n * solid color per compound-mesh part. Each part index maps to a single Color3\r\n * value, which is looked up in a uniform array in the fragment shader.\r\n */\r\nexport class GaussianSplattingSolidColorMaterialPlugin extends MaterialPluginBase {\r\n private _partColors: Color3[];\r\n private _maxPartCount: number;\r\n private _isEnabled = true;\r\n private readonly _partColorArray: number[] = [];\r\n /**\r\n * Whether the solid-color override is active. When false, splats\r\n * render with their original per-splat colors.\r\n * Toggled via a shader uniform so no recompilation is required.\r\n */\r\n @serialize()\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n this._isEnabled = value;\r\n this._onIsEnabledChanged();\r\n }\r\n\r\n /** @internal */\r\n public _onIsEnabledChanged(): void {\r\n // Intentional no-op: isEnabled is applied via a uniform in\r\n // bindForSubMesh, so no dirty-marking or recompilation is needed.\r\n }\r\n\r\n /**\r\n * Creates a new GaussianSplatSolidColorPlugin.\r\n * @param material The GaussianSplattingMaterial to attach the plugin to.\r\n * @param partColors A map from part index to the solid Color3 for that part.\r\n * @param maxPartCount The maximum number of parts supported. This determines the size of the uniform array.\r\n */\r\n constructor(material: GaussianSplattingMaterial, partColors: Color3[], maxPartCount?: number) {\r\n super(material, \"GaussianSplatSolidColor\", 200);\r\n\r\n this._partColors = partColors;\r\n this._maxPartCount = maxPartCount ?? GetGaussianSplattingMaxPartCount(material.getScene().getEngine());\r\n this._enable(true);\r\n }\r\n\r\n /**\r\n * Updates the part colors dynamically.\r\n * @param partColors A map from part index to the solid Color3 for that part.\r\n */\r\n public updatePartColors(partColors: Color3[]): void {\r\n this._partColors = partColors;\r\n }\r\n\r\n // --- Plugin overrides ---\r\n\r\n /**\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingSolidColorMaterialPlugin\";\r\n }\r\n\r\n /**\r\n * Indicates this plugin supports both GLSL and WGSL.\r\n * @param shaderLanguage the shader language to check\r\n * @returns true for GLSL and WGSL\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n switch (shaderLanguage) {\r\n case ShaderLanguage.GLSL:\r\n case ShaderLanguage.WGSL:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Always ready — no textures or async resources to wait on.\r\n * @param _defines the defines\r\n * @param _scene the scene\r\n * @param _engine the engine\r\n * @param _subMesh the submesh\r\n * @returns true\r\n */\r\n public override isReadyForSubMesh(_defines: MaterialDefines, _scene: Scene, _engine: AbstractEngine, _subMesh: SubMesh): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns custom shader code fragments to inject solid-color rendering.\r\n *\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @param shaderLanguage the shader language to use (default: GLSL)\r\n * @returns null or a map of injection point names to code strings\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n const maxPartCount = this._maxPartCount;\r\n\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n return this._getCustomCodeWGSL(shaderType, maxPartCount);\r\n }\r\n return this._getCustomCodeGLSL(shaderType, maxPartCount);\r\n }\r\n\r\n private _getCustomCodeGLSL(shaderType: string, maxPartCount: number): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: GetPartIndexVaryingDeclaration(ShaderLanguage.GLSL),\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vPartIndex = float(splat.partIndex);\r\n#else\r\n vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\n${GetPartIndexVaryingDeclaration(ShaderLanguage.GLSL)}\r\nuniform float solidColorEnabled;\r\nuniform vec3 partColors[${maxPartCount}];\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\nif (solidColorEnabled > 0.5) {\r\n int partIdx = int(vPartIndex + 0.5);\r\n finalColor = vec4(partColors[partIdx], finalColor.w);\r\n}\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n private _getCustomCodeWGSL(shaderType: string, maxPartCount: number): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: GetPartIndexVaryingDeclaration(ShaderLanguage.WGSL),\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vertexOutputs.vPartIndex = f32(splat.partIndex);\r\n#else\r\n vertexOutputs.vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\n${GetPartIndexVaryingDeclaration(ShaderLanguage.WGSL)}\r\nuniform solidColorEnabled: f32;\r\nuniform partColors: array<vec3f, ${maxPartCount}>;\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\nif (uniforms.solidColorEnabled > 0.5) {\r\n var partIdx: i32 = i32(fragmentInputs.vPartIndex + 0.5);\r\n finalColor = vec4f(uniforms.partColors[partIdx], finalColor.w);\r\n}\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Registers the plugin uniforms with the engine so that\r\n * the Effect can resolve their locations.\r\n * @returns uniform descriptions\r\n */\r\n public override getUniforms(): {\r\n ubo?: Array<{ name: string; size?: number; type?: string; arraySize?: number }>;\r\n vertex?: string;\r\n fragment?: string;\r\n externalUniforms?: string[];\r\n } {\r\n return {\r\n externalUniforms: [\"partColors\", \"solidColorEnabled\"],\r\n };\r\n }\r\n\r\n /**\r\n * Binds the plugin uniforms each frame.\r\n * @param _uniformBuffer the uniform buffer (unused — we bind directly on the effect)\r\n * @param _scene the current scene\r\n * @param _engine the current engine\r\n * @param subMesh the submesh being rendered\r\n */\r\n public override bindForSubMesh(_uniformBuffer: UniformBuffer, _scene: Scene, _engine: AbstractEngine, subMesh: SubMesh): void {\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n effect.setFloat(\"solidColorEnabled\", this._isEnabled ? 1.0 : 0.0);\r\n\r\n const colorArray = this._partColorArray;\r\n colorArray.length = 0;\r\n for (let i = 0; i < this._maxPartCount; i++) {\r\n const color = this._partColors[i];\r\n if (color) {\r\n colorArray.push(color.r, color.g, color.b);\r\n } else {\r\n colorArray.push(0, 0, 0);\r\n }\r\n }\r\n\r\n effect.setArray3(\"partColors\", colorArray);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for gaussianSplattingSolidColorMaterialPlugin.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterGaussianSplattingSolidColorMaterialPlugin(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GaussianSplattingSolidColorMaterialPlugin\", GaussianSplattingSolidColorMaterialPlugin);\r\n}\r\n"]}
@@ -1,5 +1,9 @@
1
1
  /** Pure barrel — re-exports only side-effect-free modules */
2
+ export * from "./gaussianPointSplattingBlitMaterial.pure.js";
3
+ export * from "./gaussianPointSplattingDepthBlitMaterial.pure.js";
2
4
  export * from "./gaussianSplattingDebugMaterialPlugin.pure.js";
3
5
  export * from "./gaussianSplattingGpuPickingMaterialPlugin.pure.js";
4
6
  export * from "./gaussianSplattingMaterial.pure.js";
7
+ export * from "./gaussianSplattingOverdrawMaterialPlugin.pure.js";
8
+ export * from "./gaussianSplattingSizeMaterialPlugin.pure.js";
5
9
  export * from "./gaussianSplattingSolidColorMaterialPlugin.pure.js";
@@ -1,6 +1,10 @@
1
1
  /** Pure barrel — re-exports only side-effect-free modules */
2
+ export * from "./gaussianPointSplattingBlitMaterial.pure.js";
3
+ export * from "./gaussianPointSplattingDepthBlitMaterial.pure.js";
2
4
  export * from "./gaussianSplattingDebugMaterialPlugin.pure.js";
3
5
  export * from "./gaussianSplattingGpuPickingMaterialPlugin.pure.js";
4
6
  export * from "./gaussianSplattingMaterial.pure.js";
7
+ export * from "./gaussianSplattingOverdrawMaterialPlugin.pure.js";
8
+ export * from "./gaussianSplattingSizeMaterialPlugin.pure.js";
5
9
  export * from "./gaussianSplattingSolidColorMaterialPlugin.pure.js";
6
10
  //# sourceMappingURL=pure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,kCAAkC,CAAC;AACjD,cAAc,kDAAkD,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./gaussianSplattingDebugMaterialPlugin.pure\";\nexport * from \"./gaussianSplattingGpuPickingMaterialPlugin.pure\";\nexport * from \"./gaussianSplattingMaterial.pure\";\nexport * from \"./gaussianSplattingSolidColorMaterialPlugin.pure\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,kCAAkC,CAAC;AACjD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kDAAkD,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./gaussianPointSplattingBlitMaterial.pure\";\nexport * from \"./gaussianPointSplattingDepthBlitMaterial.pure\";\nexport * from \"./gaussianSplattingDebugMaterialPlugin.pure\";\nexport * from \"./gaussianSplattingGpuPickingMaterialPlugin.pure\";\nexport * from \"./gaussianSplattingMaterial.pure\";\nexport * from \"./gaussianSplattingOverdrawMaterialPlugin.pure\";\nexport * from \"./gaussianSplattingSizeMaterialPlugin.pure\";\nexport * from \"./gaussianSplattingSolidColorMaterialPlugin.pure\";\n"]}
@@ -13,6 +13,7 @@ import { type Scene } from "../../../../scene.pure.js";
13
13
  export declare class ImageSourceBlock extends NodeMaterialBlock {
14
14
  private static _DefaultTextureByEngine;
15
15
  private _samplerName;
16
+ private _dimensionsUniformName;
16
17
  protected _texture: Nullable<Texture>;
17
18
  private static _GetDefaultTexture;
18
19
  /**