@onerjs/core 8.54.3 → 8.54.5

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 (211) hide show
  1. package/DeviceInput/webDeviceInputSystem.js +4 -0
  2. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  3. package/Engines/WebGPU/Extensions/engine.cubeTexture.pure.js +1 -1
  4. package/Engines/WebGPU/Extensions/engine.cubeTexture.pure.js.map +1 -1
  5. package/Engines/WebGPU/Extensions/engine.rawTexture.pure.js +2 -2
  6. package/Engines/WebGPU/Extensions/engine.rawTexture.pure.js.map +1 -1
  7. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -0
  8. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +18 -4
  9. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  10. package/Engines/WebGPU/webgpuCacheTextureView.d.ts +13 -0
  11. package/Engines/WebGPU/webgpuCacheTextureView.js +32 -0
  12. package/Engines/WebGPU/webgpuCacheTextureView.js.map +1 -0
  13. package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +10 -0
  14. package/Engines/WebGPU/webgpuRenderTargetWrapper.js +10 -0
  15. package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
  16. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.pure.js +57 -4
  17. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.pure.js.map +1 -1
  18. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -1
  19. package/Engines/WebGPU/webgpuTextureManager.js +4 -2
  20. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  21. package/Engines/abstractEngine.pure.js +2 -2
  22. package/Engines/abstractEngine.pure.js.map +1 -1
  23. package/Engines/thinNativeEngine.pure.d.ts +5 -0
  24. package/Engines/thinNativeEngine.pure.js +29 -6
  25. package/Engines/thinNativeEngine.pure.js.map +1 -1
  26. package/Engines/webgpuEngine.pure.d.ts +1 -0
  27. package/Engines/webgpuEngine.pure.js +21 -8
  28. package/Engines/webgpuEngine.pure.js.map +1 -1
  29. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.d.ts +95 -1
  30. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +169 -4
  31. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
  32. package/FlowGraph/Blocks/Data/Math/flowGraphMathCombineExtractBlocks.pure.d.ts +21 -6
  33. package/FlowGraph/Blocks/Data/Math/flowGraphMathCombineExtractBlocks.pure.js +28 -26
  34. package/FlowGraph/Blocks/Data/Math/flowGraphMathCombineExtractBlocks.pure.js.map +1 -1
  35. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixMathBlocks.pure.d.ts +30 -2
  36. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixMathBlocks.pure.js +111 -29
  37. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixMathBlocks.pure.js.map +1 -1
  38. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.pure.d.ts +56 -2
  39. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.pure.js +99 -14
  40. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.pure.js.map +1 -1
  41. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js +10 -2
  42. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js.map +1 -1
  43. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +21 -1
  44. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
  45. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +18 -0
  46. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +29 -2
  47. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  48. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +15 -0
  49. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +44 -7
  50. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
  51. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +9 -0
  52. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +9 -1
  53. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
  54. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +7 -0
  55. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +8 -1
  56. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  57. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.d.ts +5 -0
  58. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.js +8 -0
  59. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.js.map +1 -0
  60. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.pure.d.ts +37 -0
  61. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.pure.js +44 -0
  62. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.pure.js.map +1 -0
  63. package/FlowGraph/Blocks/Event/index.d.ts +1 -0
  64. package/FlowGraph/Blocks/Event/index.js +1 -0
  65. package/FlowGraph/Blocks/Event/index.js.map +1 -1
  66. package/FlowGraph/Blocks/Event/pure.d.ts +1 -0
  67. package/FlowGraph/Blocks/Event/pure.js +1 -0
  68. package/FlowGraph/Blocks/Event/pure.js.map +1 -1
  69. package/FlowGraph/Blocks/Execution/Animation/flowGraphBezierCurveEasingBlock.pure.d.ts +4 -1
  70. package/FlowGraph/Blocks/Execution/Animation/flowGraphBezierCurveEasingBlock.pure.js +67 -2
  71. package/FlowGraph/Blocks/Execution/Animation/flowGraphBezierCurveEasingBlock.pure.js.map +1 -1
  72. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +13 -0
  73. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +102 -7
  74. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  75. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +5 -1
  76. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
  77. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +5 -1
  78. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  79. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.d.ts +11 -2
  80. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js +21 -3
  81. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js.map +1 -1
  82. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.pure.js +25 -4
  83. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.pure.js.map +1 -1
  84. package/FlowGraph/Blocks/flowGraphBlockFactory.js +18 -0
  85. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  86. package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +9 -0
  87. package/FlowGraph/Blocks/flowGraphBlockNames.js +9 -0
  88. package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
  89. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +17 -3
  90. package/FlowGraph/CustomTypes/flowGraphMatrix.js +27 -21
  91. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  92. package/FlowGraph/flowGraphContext.d.ts +23 -0
  93. package/FlowGraph/flowGraphContext.js +29 -0
  94. package/FlowGraph/flowGraphContext.js.map +1 -1
  95. package/FlowGraph/flowGraphCoordinator.d.ts +58 -1
  96. package/FlowGraph/flowGraphCoordinator.js +72 -0
  97. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  98. package/FlowGraph/flowGraphDelayRegistry.d.ts +31 -0
  99. package/FlowGraph/flowGraphDelayRegistry.js +50 -0
  100. package/FlowGraph/flowGraphDelayRegistry.js.map +1 -0
  101. package/FlowGraph/flowGraphHostResolver.d.ts +69 -0
  102. package/FlowGraph/flowGraphHostResolver.js +25 -0
  103. package/FlowGraph/flowGraphHostResolver.js.map +1 -0
  104. package/FlowGraph/flowGraphMath.d.ts +48 -1
  105. package/FlowGraph/flowGraphMath.js +169 -4
  106. package/FlowGraph/flowGraphMath.js.map +1 -1
  107. package/FlowGraph/flowGraphPathConverterComponent.d.ts +14 -3
  108. package/FlowGraph/flowGraphPathConverterComponent.js +110 -18
  109. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  110. package/FlowGraph/flowGraphSignalConnection.pure.js +7 -1
  111. package/FlowGraph/flowGraphSignalConnection.pure.js.map +1 -1
  112. package/FlowGraph/index.d.ts +2 -0
  113. package/FlowGraph/index.js +2 -0
  114. package/FlowGraph/index.js.map +1 -1
  115. package/FlowGraph/pure.d.ts +2 -0
  116. package/FlowGraph/pure.js +2 -0
  117. package/FlowGraph/pure.js.map +1 -1
  118. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +3 -1
  119. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  120. package/Maths/math.vector.pure.d.ts +10 -0
  121. package/Maths/math.vector.pure.js +13 -0
  122. package/Maths/math.vector.pure.js.map +1 -1
  123. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +216 -1
  124. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +714 -67
  125. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  126. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +81 -4
  127. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +487 -54
  128. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  129. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.d.ts +19 -0
  130. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js +24 -0
  131. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js.map +1 -1
  132. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +48 -10
  133. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -1
  134. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +5 -1
  135. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js.map +1 -1
  136. package/Meshes/abstractMesh.pure.js +5 -3
  137. package/Meshes/abstractMesh.pure.js.map +1 -1
  138. package/Misc/greasedLineTools.js +1 -1
  139. package/Misc/greasedLineTools.js.map +1 -1
  140. package/Misc/tools.pure.js +14 -2
  141. package/Misc/tools.pure.js.map +1 -1
  142. package/Particles/gpuParticleSystem.pure.d.ts +66 -1
  143. package/Particles/gpuParticleSystem.pure.js +189 -49
  144. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  145. package/Physics/v2/Plugins/havokPlugin.d.ts +15 -0
  146. package/Physics/v2/Plugins/havokPlugin.js +16 -6
  147. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  148. package/Physics/v2/characterController.js +71 -19
  149. package/Physics/v2/characterController.js.map +1 -1
  150. package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.d.ts +5 -0
  151. package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.js +29 -0
  152. package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.js.map +1 -0
  153. package/ShadersWGSL/ShadersInclude/lightFragment.js +2 -3
  154. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  155. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  156. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +2 -17
  157. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  158. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.d.ts +6 -0
  159. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js +123 -0
  160. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -0
  161. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.d.ts +1 -1
  162. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +2 -111
  163. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  164. package/ShadersWGSL/background.fragment.js +2 -1
  165. package/ShadersWGSL/background.fragment.js.map +1 -1
  166. package/ShadersWGSL/default.fragment.js +2 -1
  167. package/ShadersWGSL/default.fragment.js.map +1 -1
  168. package/ShadersWGSL/openpbr.fragment.js +2 -1
  169. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  170. package/ShadersWGSL/pbr.fragment.js +2 -1
  171. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  172. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +3 -9
  173. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +4 -11
  174. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -1
  175. package/XR/features/WebXRAbstractFeature.d.ts +9 -0
  176. package/XR/features/WebXRAbstractFeature.js +16 -0
  177. package/XR/features/WebXRAbstractFeature.js.map +1 -1
  178. package/XR/features/WebXRDepthSensing.pure.d.ts +7 -0
  179. package/XR/features/WebXRDepthSensing.pure.js +350 -39
  180. package/XR/features/WebXRDepthSensing.pure.js.map +1 -1
  181. package/XR/features/WebXRImageTracking.pure.js.map +1 -1
  182. package/XR/features/WebXRLayers.pure.d.ts +6 -5
  183. package/XR/features/WebXRLayers.pure.js +65 -8
  184. package/XR/features/WebXRLayers.pure.js.map +1 -1
  185. package/XR/features/WebXRRawCameraAccess.pure.js +9 -2
  186. package/XR/features/WebXRRawCameraAccess.pure.js.map +1 -1
  187. package/XR/features/WebXRSpaceWarp.pure.d.ts +0 -1
  188. package/XR/features/WebXRSpaceWarp.pure.js +13 -4
  189. package/XR/features/WebXRSpaceWarp.pure.js.map +1 -1
  190. package/XR/features/WebXRWalkingLocomotion.pure.js.map +1 -1
  191. package/XR/webXRCamera.js +27 -0
  192. package/XR/webXRCamera.js.map +1 -1
  193. package/XR/webXRFeatureWarningRegistry.d.ts +14 -0
  194. package/XR/webXRFeatureWarningRegistry.js +19 -0
  195. package/XR/webXRFeatureWarningRegistry.js.map +1 -0
  196. package/XR/webXRFeaturesManager.d.ts +5 -0
  197. package/XR/webXRFeaturesManager.js +23 -4
  198. package/XR/webXRFeaturesManager.js.map +1 -1
  199. package/XR/webXRGraphicsBinding.d.ts +17 -10
  200. package/XR/webXRGraphicsBinding.js +8 -5
  201. package/XR/webXRGraphicsBinding.js.map +1 -1
  202. package/XR/webXRSessionManager.d.ts +3 -5
  203. package/XR/webXRSessionManager.js +1 -3
  204. package/XR/webXRSessionManager.js.map +1 -1
  205. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +21 -5
  206. package/XR/webXRWebGPURenderTargetTextureProvider.js +38 -10
  207. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -1
  208. package/package.json +1 -1
  209. package/scene.pure.d.ts +7 -0
  210. package/scene.pure.js +8 -0
  211. package/scene.pure.js.map +1 -1
@@ -7,6 +7,7 @@ import { type AbstractMesh } from "../abstractMesh.pure.js";
7
7
  import { Mesh } from "../mesh.pure.js";
8
8
  import { Matrix, Vector2, Vector3 } from "../../Maths/math.vector.pure.js";
9
9
  import { Observable } from "../../Misc/observable.js";
10
+ import { MultiRenderTarget } from "../../Materials/Textures/multiRenderTarget.pure.js";
10
11
  import { type InternalTexture } from "../../Materials/Textures/internalTexture.js";
11
12
  import { type Material } from "../../Materials/material.pure.js";
12
13
  import { type Effect } from "../../Materials/effect.pure.js";
@@ -303,9 +304,16 @@ export declare class GaussianSplattingMeshBase extends Mesh {
303
304
  protected _covariancesBTexture: Nullable<BaseTexture>;
304
305
  protected _centersTexture: Nullable<BaseTexture>;
305
306
  protected _colorsTexture: Nullable<BaseTexture>;
307
+ protected _mrtAtlas: Nullable<MultiRenderTarget>;
308
+ protected _useMrtAtlas: boolean;
309
+ protected _shMrtAtlas: Nullable<MultiRenderTarget[]>;
310
+ protected _useShMrtAtlas: boolean;
311
+ protected _shMrtAtlasTextureCount: number;
306
312
  protected _rotationsATexture: Nullable<BaseTexture>;
307
313
  protected _rotationsBTexture: Nullable<BaseTexture>;
308
314
  protected _rotationScaleTexture: Nullable<BaseTexture>;
315
+ protected _rotMrtAtlas: Nullable<MultiRenderTarget>;
316
+ protected _useRotMrtAtlas: boolean;
309
317
  private _rotationDataA;
310
318
  private _rotationDataB;
311
319
  private _rotationScaleData;
@@ -341,7 +349,7 @@ export declare class GaussianSplattingMeshBase extends Mesh {
341
349
  private static _PlyConversionBatchSize;
342
350
  /** @internal */
343
351
  _shDegree: number;
344
- private _maxShDegree;
352
+ protected _maxShDegree: number;
345
353
  private static readonly _BatchSize;
346
354
  private _cameraViewInfos;
347
355
  protected static readonly _DefaultViewUpdateThreshold = 0.0001;
@@ -350,6 +358,19 @@ export declare class GaussianSplattingMeshBase extends Mesh {
350
358
  /** Fired after part-removal validation passes but before the mesh is rebuilt.
351
359
  * Payload is the original (pre-removal) part index. */
352
360
  readonly onPartRemovedObservable: Observable<number>;
361
+ /**
362
+ * Fired just before an existing MRT-backed atlas is recreated to grow it (e.g. adding a part while a streaming
363
+ * part exists). Payload is the OLD atlas. Streaming parts subscribe to back up their GPU-only region before it
364
+ * is disposed. Only fires when growing an existing MRT atlas (not on first creation).
365
+ * @internal
366
+ */
367
+ readonly _onBeforeAtlasRebuildObservable: Observable<MultiRenderTarget>;
368
+ /**
369
+ * Fired after the new (grown) MRT-backed atlas has been created and its CPU data uploaded. Payload is the NEW
370
+ * atlas. Streaming parts subscribe to rebind to it and restore their backed-up region.
371
+ * @internal
372
+ */
373
+ readonly _onAfterAtlasRebuildObservable: Observable<MultiRenderTarget>;
353
374
  /**
354
375
  * Returns a byte-accurate view for retained splat data, preserving any non-zero byte offset.
355
376
  * @param data The retained splat source bytes.
@@ -433,8 +454,15 @@ export declare class GaussianSplattingMeshBase extends Mesh {
433
454
  * @param colors color texture
434
455
  * @param splatPositions stride-4 CPU centers for depth sorting (length vertexCount*4)
435
456
  * @param vertexCount number of splats addressable in the work buffer
457
+ * @param shTextures optional baked higher-order SH textures (packed-u32) produced by the work buffer's SH decode.
458
+ * When provided, the draw path lights the decoded splats with view-dependent SH (the non-SOG `shTexture0..N`
459
+ * path). `shDegree` sets both the max and active SH degree.
460
+ * @param shDegree SH degree of the baked SH textures (0 = none). Ignored when `shTextures` is empty/omitted.
461
+ * @param rotationTextures optional decoded rotation/scale textures ([rotA, rotB, rotScale]) produced by the work
462
+ * buffer's rotation decode. When provided, they drive the voxel-IBL rotation/scale samplers so the streamed
463
+ * splats participate in voxel-based IBL shadowing.
436
464
  */
437
- protected _setExternalWorkBuffer(centers: BaseTexture, covariancesA: BaseTexture, covariancesB: BaseTexture, colors: BaseTexture, splatPositions: Float32Array, vertexCount: number): void;
465
+ protected _setExternalWorkBuffer(centers: BaseTexture, covariancesA: BaseTexture, covariancesB: BaseTexture, colors: BaseTexture, splatPositions: Float32Array, vertexCount: number, shTextures?: Nullable<BaseTexture[]>, shDegree?: number, rotationTextures?: Nullable<BaseTexture[]>): void;
438
466
  /**
439
467
  * returns the splats data array buffer that contains in order : postions (3 floats), size (3 floats), color (4 bytes), orientation quaternion (4 bytes)
440
468
  * Only available if the mesh was created with keepInRam: true
@@ -669,8 +697,10 @@ export declare class GaussianSplattingMeshBase extends Mesh {
669
697
  * @param maximum - accumulated bounding maximum (updated in-place)
670
698
  * @param flipY - whether to negate the Y position
671
699
  * @param srcIndex - source splat index (defaults to dstIndex when omitted)
700
+ * @param dstArrayIndex - index into the covA/covB/colorArray transients (defaults to dstIndex). Lets a streaming
701
+ * write pass count-sized transients indexed from 0 while dstIndex still addresses the atlas-sized _splatPositions.
672
702
  */
673
- protected _makeSplat(dstIndex: number, fBuffer: Float32Array, uBuffer: Uint8Array, covA: Uint16Array, covB: Uint16Array, colorArray: Uint8Array, minimum: Vector3, maximum: Vector3, flipY: boolean, srcIndex?: number): void;
703
+ protected _makeSplat(dstIndex: number, fBuffer: Float32Array, uBuffer: Uint8Array, covA: Uint16Array, covB: Uint16Array, colorArray: Uint8Array, minimum: Vector3, maximum: Vector3, flipY: boolean, srcIndex?: number, dstArrayIndex?: number): void;
674
704
  protected _onUpdateTextures(_textureSize: Vector2): void;
675
705
  /**
676
706
  * Called when part index data is received during a data load. Override to store and manage
@@ -696,6 +726,34 @@ export declare class GaussianSplattingMeshBase extends Mesh {
696
726
  */
697
727
  get isCompound(): boolean;
698
728
  protected _setDelayedTextureUpdate(covA: Uint16Array, covB: Uint16Array, colorArray: Uint8Array, sh?: Uint8Array[]): void;
729
+ /**
730
+ * Creates (or recreates) the MRT-backed data atlas at the given size and points the four core data
731
+ * textures at its attachments. The attachments use the same decoded GS layout as {@link GaussianSplattingWorkBuffer}
732
+ * — [centers F32, covA HALF_FLOAT, covB HALF_FLOAT, colors U8], all RGBA — so a streaming engine can render
733
+ * (decode/relayout) directly into the same textures the GS material samples, while static parts CPU-upload
734
+ * into them via {@link _updateSubTextures}. Covariance B is RGBA here (its extra channels unused), so the
735
+ * atlas forces {@link _useRGBACovariants}.
736
+ * @param textureSize atlas dimensions (width, height)
737
+ */
738
+ protected _createMrtAtlas(textureSize: Vector2): void;
739
+ /**
740
+ * Creates the shared higher-order SH atlas: `_shMrtAtlasTextureCount` single-attachment integer render targets
741
+ * (RGBA_INTEGER / UNSIGNED_INTEGER, packed-u32), sized to the whole atlas, so a streaming engine can GPU-decode
742
+ * baked SH into the reserved region and static SH parts CPU-upload into the same attachments. `_shTextures` (the
743
+ * draw path's `shTexture0..N` samplers) are the attachments. One MRT per attachment keeps within WebGPU's
744
+ * per-sample color-attachment byte budget. No-op without a real GPU backend (mirrors {@link _createMrtAtlas}).
745
+ * @param textureSize atlas dimensions (width, height)
746
+ */
747
+ protected _createShMrtAtlas(textureSize: Vector2): void;
748
+ /**
749
+ * Creates the shared rotation/scale atlas: one 3-attachment half-float render target ([rotA, rotB, rotScale])
750
+ * sized to the whole atlas, so a streaming engine can GPU-decode rotation/scale into the reserved region and
751
+ * static parts CPU-upload into the same attachments. `_rotationsATexture`/`_rotationsBTexture`/
752
+ * `_rotationScaleTexture` (the voxel-IBL samplers) become the three attachments. No-op without a real GPU
753
+ * backend (mirrors {@link _createMrtAtlas}).
754
+ * @param textureSize atlas dimensions (width, height)
755
+ */
756
+ protected _createRotMrtAtlas(textureSize: Vector2): void;
699
757
  protected _updateTextures(covA: Uint16Array, covB: Uint16Array, colorArray: Uint8Array, sh?: Uint8Array[]): void;
700
758
  /**
701
759
  * Checks whether the GPU textures can be incrementally updated for a new addPart operation,
@@ -703,9 +761,10 @@ export declare class GaussianSplattingMeshBase extends Mesh {
703
761
  * Requires that the GPU textures already exist and the texture height won't change.
704
762
  * @param previousVertexCount - The number of splats previously committed to GPU
705
763
  * @param vertexCount - The new total number of splats
764
+ * @param requiredShTextureCount - SH texture count this update requires (the merged `sh.length`), 0 when no SH
706
765
  * @returns true when only the new splat region needs to be uploaded
707
766
  */
708
- protected _canReuseCachedData(previousVertexCount: number, vertexCount: number): boolean;
767
+ protected _canReuseCachedData(previousVertexCount: number, vertexCount: number, requiredShTextureCount?: number): boolean;
709
768
  /**
710
769
  * Posts updated positions to the sort worker and marks the sort as dirty.
711
770
  * Called after processing new splats so the worker can re-sort with the complete position set.
@@ -722,6 +781,24 @@ export declare class GaussianSplattingMeshBase extends Mesh {
722
781
  * @param splatCount number of splats in the updated range
723
782
  */
724
783
  protected _postWorkerPositionsRange(splatOffset: number, splatCount: number): void;
784
+ /**
785
+ * Decodes raw `.splat` bytes (32 bytes/splat) into a contiguous sub-range of the already-allocated atlas,
786
+ * uploading only the affected texels (never touching neighboring parts' texels) and patching just that
787
+ * range of positions in the sort worker. Used to populate a region reserved by
788
+ * {@link GaussianSplattingMesh.reserveStreamingPart} — the CPU path a streaming engine uses when GPU
789
+ * decode/readback is unavailable, and the seam that verifies reservation + interleaving before the
790
+ * streaming engine exists.
791
+ *
792
+ * The atlas textures and `_splatPositions` must already be sized to cover `[globalOffset, globalOffset+count)`
793
+ * (guaranteed after `reserveStreamingPart`). Bounds of the written centers are accumulated into `min`/`max`
794
+ * when provided (so the caller can grow the owning part's bounding info).
795
+ * @param globalOffset first atlas splat index to write
796
+ * @param count number of splats to write
797
+ * @param splatsData raw `.splat` bytes for `count` splats (stride 32)
798
+ * @param min optional running min accumulator for the written centers
799
+ * @param max optional running max accumulator for the written centers
800
+ */
801
+ protected _writeStreamingSplats(globalOffset: number, count: number, splatsData: ArrayBuffer | ArrayBufferView, min?: Vector3, max?: Vector3): void;
725
802
  private _updateData;
726
803
  /**
727
804
  * Update asynchronously the buffer