gaussian-splat-lite 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/CHANGELOG.md +32 -2
  2. package/CONTRIBUTING.md +4 -2
  3. package/README.md +4 -3
  4. package/dist/gaussian-splat-lite.cjs +6379 -1441
  5. package/dist/gaussian-splat-lite.cjs.map +1 -1
  6. package/dist/gaussian-splat-lite.min.cjs +978 -11
  7. package/dist/gaussian-splat-lite.min.cjs.map +1 -1
  8. package/dist/gaussian-splat-lite.module.js +5920 -982
  9. package/dist/gaussian-splat-lite.module.js.map +1 -1
  10. package/dist/gaussian-splat-lite.module.min.js +7882 -3373
  11. package/dist/gaussian-splat-lite.module.min.js.map +1 -1
  12. package/dist/types/addons/NeuralDenoiseNode.d.cts +72 -0
  13. package/dist/types/addons/NeuralDenoiseNode.d.ts +72 -0
  14. package/dist/types/addons/NeuralDenoisePass.d.cts +34 -0
  15. package/dist/types/addons/NeuralDenoisePass.d.ts +34 -0
  16. package/dist/types/addons/TAANode.d.cts +46 -33
  17. package/dist/types/addons/TAANode.d.ts +46 -33
  18. package/dist/types/addons/TAAPass.d.cts +47 -32
  19. package/dist/types/addons/TAAPass.d.ts +47 -32
  20. package/dist/types/addons/neuralDenoiseGL.d.cts +25 -0
  21. package/dist/types/addons/neuralDenoiseGL.d.ts +25 -0
  22. package/dist/types/addons/neuralDenoiseGLSL.d.cts +8 -0
  23. package/dist/types/addons/neuralDenoiseGLSL.d.ts +8 -0
  24. package/dist/types/addons/neuralDenoisePasses.d.cts +26 -0
  25. package/dist/types/addons/neuralDenoisePasses.d.ts +26 -0
  26. package/dist/types/addons/neuralDenoiseShaders.d.cts +38 -0
  27. package/dist/types/addons/neuralDenoiseShaders.d.ts +38 -0
  28. package/dist/types/addons/neuralDenoiseWeights.d.cts +118 -0
  29. package/dist/types/addons/neuralDenoiseWeights.d.ts +118 -0
  30. package/dist/types/addons/stochasticCoverage.d.cts +14 -0
  31. package/dist/types/addons/stochasticCoverage.d.ts +14 -0
  32. package/dist/types/addons/taaShared.d.cts +58 -39
  33. package/dist/types/addons/taaShared.d.ts +58 -39
  34. package/dist/types/capture/SplatCapture.d.cts +54 -53
  35. package/dist/types/capture/SplatCapture.d.ts +54 -53
  36. package/dist/types/capture/WebGLCapture.d.cts +10 -10
  37. package/dist/types/capture/WebGLCapture.d.ts +10 -10
  38. package/dist/types/capture/WebGPUCapture.d.cts +14 -14
  39. package/dist/types/capture/WebGPUCapture.d.ts +14 -14
  40. package/dist/types/capture/pixels.d.cts +15 -4
  41. package/dist/types/capture/pixels.d.ts +15 -4
  42. package/dist/types/capture/rendererState.d.cts +5 -2
  43. package/dist/types/capture/rendererState.d.ts +5 -2
  44. package/dist/types/data/IndexedSplats.d.cts +76 -58
  45. package/dist/types/data/IndexedSplats.d.ts +76 -58
  46. package/dist/types/data/RadPagedSplats.d.cts +65 -61
  47. package/dist/types/data/RadPagedSplats.d.ts +65 -61
  48. package/dist/types/data/SogRegionSplats.d.cts +25 -19
  49. package/dist/types/data/SogRegionSplats.d.ts +25 -19
  50. package/dist/types/data/SplatOpacityTable.d.cts +29 -29
  51. package/dist/types/data/SplatOpacityTable.d.ts +29 -29
  52. package/dist/types/data/Splats.d.cts +99 -69
  53. package/dist/types/data/Splats.d.ts +99 -69
  54. package/dist/types/data/defines.d.cts +24 -24
  55. package/dist/types/data/defines.d.ts +24 -24
  56. package/dist/types/data/raycast.d.cts +13 -9
  57. package/dist/types/data/raycast.d.ts +13 -9
  58. package/dist/types/data/splatCodec.d.cts +29 -5
  59. package/dist/types/data/splatCodec.d.ts +29 -5
  60. package/dist/types/data/splatData.d.cts +18 -11
  61. package/dist/types/data/splatData.d.ts +18 -11
  62. package/dist/types/data/splatRange.d.cts +6 -2
  63. package/dist/types/data/splatRange.d.ts +6 -2
  64. package/dist/types/data/textureLayout.d.cts +9 -6
  65. package/dist/types/data/textureLayout.d.ts +9 -6
  66. package/dist/types/data/unpack.d.cts +16 -9
  67. package/dist/types/data/unpack.d.ts +16 -9
  68. package/dist/types/index.d.cts +65 -19
  69. package/dist/types/index.d.ts +65 -19
  70. package/dist/types/loaders/SplatLoader.d.cts +27 -14
  71. package/dist/types/loaders/SplatLoader.d.ts +27 -14
  72. package/dist/types/loaders/loadSplatData.d.cts +35 -17
  73. package/dist/types/loaders/loadSplatData.d.ts +35 -17
  74. package/dist/types/loaders/loadTypes.d.cts +46 -40
  75. package/dist/types/loaders/loadTypes.d.ts +46 -40
  76. package/dist/types/loaders/morton.d.cts +9 -3
  77. package/dist/types/loaders/morton.d.ts +9 -3
  78. package/dist/types/loaders/postDecode/builder.d.cts +222 -127
  79. package/dist/types/loaders/postDecode/builder.d.ts +222 -127
  80. package/dist/types/loaders/postDecode/compiler.d.cts +25 -11
  81. package/dist/types/loaders/postDecode/compiler.d.ts +25 -11
  82. package/dist/types/loaders/postDecode/operations.d.cts +22 -3
  83. package/dist/types/loaders/postDecode/operations.d.ts +22 -3
  84. package/dist/types/loaders/postDecode/optimizer.d.cts +5 -2
  85. package/dist/types/loaders/postDecode/optimizer.d.ts +5 -2
  86. package/dist/types/loaders/postDecode/program.d.cts +13 -6
  87. package/dist/types/loaders/postDecode/program.d.ts +13 -6
  88. package/dist/types/loaders/postDecode/protocol.d.cts +136 -111
  89. package/dist/types/loaders/postDecode/protocol.d.ts +136 -111
  90. package/dist/types/loaders/postDecode/registers.d.cts +12 -7
  91. package/dist/types/loaders/postDecode/registers.d.ts +12 -7
  92. package/dist/types/loaders/postDecode/runtime.d.cts +9 -2
  93. package/dist/types/loaders/postDecode/runtime.d.ts +9 -2
  94. package/dist/types/loaders/rad/RadSource.d.cts +81 -66
  95. package/dist/types/loaders/rad/RadSource.d.ts +81 -66
  96. package/dist/types/loaders/rad/radFormat.d.cts +41 -36
  97. package/dist/types/loaders/rad/radFormat.d.ts +41 -36
  98. package/dist/types/loaders/rad.d.cts +4 -4
  99. package/dist/types/loaders/rad.d.ts +4 -4
  100. package/dist/types/loaders/sog/SogSource.d.cts +14 -4
  101. package/dist/types/loaders/sog/SogSource.d.ts +14 -4
  102. package/dist/types/loaders/sog/sogZip.d.cts +12 -12
  103. package/dist/types/loaders/sog/sogZip.d.ts +12 -12
  104. package/dist/types/loaders/sog.d.cts +3 -3
  105. package/dist/types/loaders/sog.d.ts +3 -3
  106. package/dist/types/loaders/source.d.cts +43 -15
  107. package/dist/types/loaders/source.d.ts +43 -15
  108. package/dist/types/loaders/stream/StreamByteBudget.d.cts +4 -4
  109. package/dist/types/loaders/stream/StreamByteBudget.d.ts +4 -4
  110. package/dist/types/loaders/stream/StreamCameras.d.cts +27 -18
  111. package/dist/types/loaders/stream/StreamCameras.d.ts +27 -18
  112. package/dist/types/loaders/stream/StreamWorkerPool.d.cts +37 -34
  113. package/dist/types/loaders/stream/StreamWorkerPool.d.ts +37 -34
  114. package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.cts +15 -11
  115. package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.ts +15 -11
  116. package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.cts +13 -9
  117. package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.ts +13 -9
  118. package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.cts +64 -49
  119. package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.ts +64 -49
  120. package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.cts +110 -102
  121. package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.ts +110 -102
  122. package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.cts +3 -3
  123. package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.ts +3 -3
  124. package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.cts +27 -15
  125. package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.ts +27 -15
  126. package/dist/types/loaders/stream/rad-stream/radFade.d.cts +13 -8
  127. package/dist/types/loaders/stream/rad-stream/radFade.d.ts +13 -8
  128. package/dist/types/loaders/stream/rad-stream/radLod.d.cts +26 -26
  129. package/dist/types/loaders/stream/rad-stream/radLod.d.ts +26 -26
  130. package/dist/types/loaders/stream/rad-stream/worker.d.cts +3 -59
  131. package/dist/types/loaders/stream/rad-stream/worker.d.ts +3 -59
  132. package/dist/types/loaders/stream/rad-stream/workerHandlers.d.cts +85 -59
  133. package/dist/types/loaders/stream/rad-stream/workerHandlers.d.ts +85 -59
  134. package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.cts +17 -12
  135. package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.ts +17 -12
  136. package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.cts +56 -41
  137. package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.ts +56 -41
  138. package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.cts +82 -81
  139. package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.ts +82 -81
  140. package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.cts +3 -3
  141. package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.ts +3 -3
  142. package/dist/types/loaders/stream/sog-stream/sogLod.d.cts +59 -44
  143. package/dist/types/loaders/stream/sog-stream/sogLod.d.ts +59 -44
  144. package/dist/types/loaders/stream/sog-stream/sogVisibility.d.cts +30 -22
  145. package/dist/types/loaders/stream/sog-stream/sogVisibility.d.ts +30 -22
  146. package/dist/types/loaders/stream/sog-stream/worker.d.cts +7 -40
  147. package/dist/types/loaders/stream/sog-stream/worker.d.ts +7 -40
  148. package/dist/types/loaders/stream/sog-stream/workerHandlers.d.cts +69 -44
  149. package/dist/types/loaders/stream/sog-stream/workerHandlers.d.ts +69 -44
  150. package/dist/types/loaders/stream/streamOptions.d.cts +41 -32
  151. package/dist/types/loaders/stream/streamOptions.d.ts +41 -32
  152. package/dist/types/loaders/workerDecode.d.cts +30 -12
  153. package/dist/types/loaders/workerDecode.d.ts +30 -12
  154. package/dist/types/patches/threeR186.d.cts +3 -0
  155. package/dist/types/patches/threeR186.d.ts +3 -0
  156. package/dist/types/rendering/GaussianSplatRenderer.d.cts +393 -376
  157. package/dist/types/rendering/GaussianSplatRenderer.d.ts +393 -376
  158. package/dist/types/rendering/MaterialState.d.cts +9 -0
  159. package/dist/types/rendering/MaterialState.d.ts +9 -0
  160. package/dist/types/rendering/SortCenterCache.d.cts +17 -17
  161. package/dist/types/rendering/SortCenterCache.d.ts +17 -17
  162. package/dist/types/rendering/SplatAccumulator.d.cts +93 -77
  163. package/dist/types/rendering/SplatAccumulator.d.ts +93 -77
  164. package/dist/types/rendering/SplatGeometry.d.cts +2 -2
  165. package/dist/types/rendering/SplatGeometry.d.ts +2 -2
  166. package/dist/types/rendering/StochasticSplatMaterial.d.cts +14 -0
  167. package/dist/types/rendering/StochasticSplatMaterial.d.ts +14 -0
  168. package/dist/types/rendering/backend.d.cts +30 -18
  169. package/dist/types/rendering/backend.d.ts +30 -18
  170. package/dist/types/rendering/blueNoise.d.cts +1 -1
  171. package/dist/types/rendering/blueNoise.d.ts +1 -1
  172. package/dist/types/rendering/rendererUtils.d.cts +25 -10
  173. package/dist/types/rendering/rendererUtils.d.ts +25 -10
  174. package/dist/types/rendering/tsl/GenerateProgram.d.cts +19 -17
  175. package/dist/types/rendering/tsl/GenerateProgram.d.ts +19 -17
  176. package/dist/types/rendering/tsl/ProjectionProgram.d.cts +38 -33
  177. package/dist/types/rendering/tsl/ProjectionProgram.d.ts +38 -33
  178. package/dist/types/rendering/tsl/SplatBackend.d.cts +22 -10
  179. package/dist/types/rendering/tsl/SplatBackend.d.ts +22 -10
  180. package/dist/types/rendering/tsl/SplatMaterial.d.cts +38 -25
  181. package/dist/types/rendering/tsl/SplatMaterial.d.ts +38 -25
  182. package/dist/types/rendering/tsl/shaderUtils.d.cts +55 -17
  183. package/dist/types/rendering/tsl/shaderUtils.d.ts +55 -17
  184. package/dist/types/rendering/tsl/stochasticCoverage.d.cts +7 -0
  185. package/dist/types/rendering/tsl/stochasticCoverage.d.ts +7 -0
  186. package/dist/types/rendering/tsl/viewUniforms.d.cts +19 -9
  187. package/dist/types/rendering/tsl/viewUniforms.d.ts +19 -9
  188. package/dist/types/rendering/uniforms.d.cts +83 -83
  189. package/dist/types/rendering/uniforms.d.ts +83 -83
  190. package/dist/types/rendering/webgl/AccumulatorGenerator.d.cts +28 -12
  191. package/dist/types/rendering/webgl/AccumulatorGenerator.d.ts +28 -12
  192. package/dist/types/rendering/webgl/OrderingTexture.d.cts +10 -7
  193. package/dist/types/rendering/webgl/OrderingTexture.d.ts +10 -7
  194. package/dist/types/rendering/webgl/SplatBackend.d.cts +20 -15
  195. package/dist/types/rendering/webgl/SplatBackend.d.ts +20 -15
  196. package/dist/types/rendering/webgl/SplatMaterial.d.cts +9 -4
  197. package/dist/types/rendering/webgl/SplatMaterial.d.ts +9 -4
  198. package/dist/types/rendering/webgl/textureUtils.d.cts +10 -3
  199. package/dist/types/rendering/webgl/textureUtils.d.ts +10 -3
  200. package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.cts +8 -10
  201. package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.ts +8 -10
  202. package/dist/types/rendering/webgl-fallback/SplatBackend.d.cts +18 -14
  203. package/dist/types/rendering/webgl-fallback/SplatBackend.d.ts +18 -14
  204. package/dist/types/rendering/webgpu/ProjectedSplats.d.cts +76 -66
  205. package/dist/types/rendering/webgpu/ProjectedSplats.d.ts +76 -66
  206. package/dist/types/rendering/webgpu/ProjectionCache.d.cts +43 -28
  207. package/dist/types/rendering/webgpu/ProjectionCache.d.ts +43 -28
  208. package/dist/types/rendering/webgpu/ProjectionKernel.d.cts +22 -0
  209. package/dist/types/rendering/webgpu/ProjectionKernel.d.ts +22 -0
  210. package/dist/types/rendering/webgpu/RadixSort.d.cts +44 -40
  211. package/dist/types/rendering/webgpu/RadixSort.d.ts +44 -40
  212. package/dist/types/rendering/webgpu/SplatBackend.d.cts +14 -12
  213. package/dist/types/rendering/webgpu/SplatBackend.d.ts +14 -12
  214. package/dist/types/runtime/SplatWorker.d.cts +17 -13
  215. package/dist/types/runtime/SplatWorker.d.ts +17 -13
  216. package/dist/types/runtime/WorkerRpc.d.cts +26 -20
  217. package/dist/types/runtime/WorkerRpc.d.ts +26 -20
  218. package/dist/types/runtime/abort.d.cts +10 -5
  219. package/dist/types/runtime/abort.d.ts +10 -5
  220. package/dist/types/runtime/retry.d.cts +6 -6
  221. package/dist/types/runtime/retry.d.ts +6 -6
  222. package/dist/types/runtime/wasmCall.d.cts +3 -3
  223. package/dist/types/runtime/wasmCall.d.ts +3 -3
  224. package/dist/types/runtime/worker.d.cts +44 -24
  225. package/dist/types/runtime/worker.d.ts +44 -24
  226. package/dist/types/runtime/workerServer.d.cts +3 -1
  227. package/dist/types/runtime/workerServer.d.ts +3 -1
  228. package/dist/types/scene/SplatEdit.d.cts +74 -67
  229. package/dist/types/scene/SplatEdit.d.ts +74 -67
  230. package/dist/types/scene/SplatMesh.d.cts +92 -70
  231. package/dist/types/scene/SplatMesh.d.ts +92 -70
  232. package/dist/types/utils/index.d.cts +15 -7
  233. package/dist/types/utils/index.d.ts +15 -7
  234. package/dist/types/utils/three.d.cts +3 -3
  235. package/dist/types/utils/three.d.ts +3 -3
  236. package/dist/types/utils/transforms.d.cts +10 -3
  237. package/dist/types/utils/transforms.d.ts +10 -3
  238. package/docs/GaussianSplatRenderer.md +3 -1
  239. package/docs/NeuralDenoiseNode.md +148 -0
  240. package/docs/SplatMesh.md +1 -1
  241. package/docs/StochasticRendering.md +36 -10
  242. package/docs/TAAPass.md +20 -3
  243. package/package.json +9 -11
  244. package/dist/types/capture/sceneView.d.cts +0 -3
  245. package/dist/types/capture/sceneView.d.ts +0 -3
  246. package/dist/types/rendering/tsl/tslCompat.d.cts +0 -68
  247. package/dist/types/rendering/tsl/tslCompat.d.ts +0 -68
  248. package/docs/Architecture.md +0 -200
@@ -1,35 +1,43 @@
1
- import { SogLodIndex } from './sogLod.cjs';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { SogLodIndex } from "./sogLod.cjs";
3
3
  export type SogCamera = {
4
- modelView: number[];
5
- projection: number[];
6
- coordinateSystem: THREE.CoordinateSystem;
7
- reversedDepth: boolean;
4
+ modelView: number[];
5
+ projection: number[];
6
+ coordinateSystem: THREE.CoordinateSystem;
7
+ reversedDepth: boolean;
8
8
  };
9
9
  export type SogView = {
10
- /** The registered cameras that see the group; selection serves all of them. */
11
- cameras: SogCamera[];
12
- shown: boolean;
10
+ /** The registered cameras that see the group; selection serves all of them. */
11
+ cameras: SogCamera[];
12
+ shown: boolean;
13
13
  };
14
14
  /**
15
15
  * Capture the cameras that see the group without traversing the manifest or
16
16
  * reducing matrix precision. WebXR selects detail from each eye's current pose and frustum.
17
17
  */
18
- export declare function captureSogView(cameras: readonly THREE.Camera[], group: THREE.Object3D): SogView;
18
+ export declare function captureSogView(
19
+ cameras: readonly THREE.Camera[],
20
+ group: THREE.Object3D,
21
+ ): SogView;
19
22
  /** Stable key of a view, for skipping unchanged selection requests. */
20
23
  export declare function getSogViewKey(view: SogView): string;
21
24
  /** Worker traversal state keeps leaf identities stable between selections. */
22
25
  export declare class SogVisibility {
23
- private readonly manifest;
24
- private readonly leaves;
25
- private readonly cameras;
26
- private readonly clip;
27
- private readonly bound;
28
- private readonly closest;
29
- private readonly inverseModelView;
30
- constructor(manifest: Pick<SogLodIndex, "nodes" | "leafOffsets" | "lods" | "upgradeRatios">);
31
- private prepareCameras;
32
- private collect;
33
- /** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
34
- select(view: SogView, budget: number): Uint32Array;
26
+ private readonly manifest;
27
+ private readonly leaves;
28
+ private readonly cameras;
29
+ private readonly clip;
30
+ private readonly bound;
31
+ private readonly closest;
32
+ private readonly inverseModelView;
33
+ constructor(
34
+ manifest: Pick<
35
+ SogLodIndex,
36
+ "nodes" | "leafOffsets" | "lods" | "upgradeRatios"
37
+ >,
38
+ );
39
+ private prepareCameras;
40
+ private collect;
41
+ /** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
42
+ select(view: SogView, budget: number): Uint32Array;
35
43
  }
@@ -1,35 +1,43 @@
1
- import { SogLodIndex } from './sogLod';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { SogLodIndex } from "./sogLod.js";
3
3
  export type SogCamera = {
4
- modelView: number[];
5
- projection: number[];
6
- coordinateSystem: THREE.CoordinateSystem;
7
- reversedDepth: boolean;
4
+ modelView: number[];
5
+ projection: number[];
6
+ coordinateSystem: THREE.CoordinateSystem;
7
+ reversedDepth: boolean;
8
8
  };
9
9
  export type SogView = {
10
- /** The registered cameras that see the group; selection serves all of them. */
11
- cameras: SogCamera[];
12
- shown: boolean;
10
+ /** The registered cameras that see the group; selection serves all of them. */
11
+ cameras: SogCamera[];
12
+ shown: boolean;
13
13
  };
14
14
  /**
15
15
  * Capture the cameras that see the group without traversing the manifest or
16
16
  * reducing matrix precision. WebXR selects detail from each eye's current pose and frustum.
17
17
  */
18
- export declare function captureSogView(cameras: readonly THREE.Camera[], group: THREE.Object3D): SogView;
18
+ export declare function captureSogView(
19
+ cameras: readonly THREE.Camera[],
20
+ group: THREE.Object3D,
21
+ ): SogView;
19
22
  /** Stable key of a view, for skipping unchanged selection requests. */
20
23
  export declare function getSogViewKey(view: SogView): string;
21
24
  /** Worker traversal state keeps leaf identities stable between selections. */
22
25
  export declare class SogVisibility {
23
- private readonly manifest;
24
- private readonly leaves;
25
- private readonly cameras;
26
- private readonly clip;
27
- private readonly bound;
28
- private readonly closest;
29
- private readonly inverseModelView;
30
- constructor(manifest: Pick<SogLodIndex, "nodes" | "leafOffsets" | "lods" | "upgradeRatios">);
31
- private prepareCameras;
32
- private collect;
33
- /** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
34
- select(view: SogView, budget: number): Uint32Array;
26
+ private readonly manifest;
27
+ private readonly leaves;
28
+ private readonly cameras;
29
+ private readonly clip;
30
+ private readonly bound;
31
+ private readonly closest;
32
+ private readonly inverseModelView;
33
+ constructor(
34
+ manifest: Pick<
35
+ SogLodIndex,
36
+ "nodes" | "leafOffsets" | "lods" | "upgradeRatios"
37
+ >,
38
+ );
39
+ private prepareCameras;
40
+ private collect;
41
+ /** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
42
+ select(view: SogView, budget: number): Uint32Array;
35
43
  }
@@ -1,41 +1,8 @@
1
- import { resolveAsset } from '../../workerDecode.cjs';
2
- declare const rpcHandlers: {
3
- resolveAsset: typeof resolveAsset;
4
- loadSogChunk: ({ id, ...args }: import('../../loadTypes.cjs').SplatLoadArgs & {
5
- id: number;
6
- }, options: {
7
- sendStatus: (data: import('../../loadTypes.cjs').SplatLoadStatus) => void;
8
- }) => Promise<import('./workerHandlers.cjs').SogChunkInfo>;
9
- cacheSogChunk: ({ id, data, }: {
10
- id: number;
11
- data: import('../../../data/defines.cjs').SplatResult;
12
- }) => import('./workerHandlers.cjs').SogChunkInfo;
13
- extractSogRegions: ({ id, ranges, }: {
14
- id: number;
15
- ranges: {
16
- start: number;
17
- count: number;
18
- }[];
19
- }) => import('../../../data/defines.cjs').ReorderedSplatResult[];
20
- releaseSogChunk: ({ id }: {
21
- id: number;
22
- }) => void;
23
- parseSogIndex: ({ bytes, baseUrl, }: {
24
- bytes: ArrayBuffer;
25
- baseUrl: string;
26
- }) => {
27
- bounds: Float64Array<ArrayBuffer>;
28
- leafOffsets: Uint32Array<ArrayBuffer>;
29
- lods: Float64Array<ArrayBuffer>;
30
- retainedIndexBytes: number;
31
- urls: string[];
32
- counts: Float64Array;
33
- environment?: string;
34
- };
35
- selectSogLod: ({ view, budget }: {
36
- view: import('./sogVisibility.cjs').SogView;
37
- budget: number;
38
- }) => Uint32Array<ArrayBufferLike>;
1
+ import type { resolveAsset } from "../../workerDecode.cjs";
2
+ import type { createSogStreamHandlers } from "./workerHandlers.cjs";
3
+
4
+ export type SogStreamRpcHandlers = ReturnType<
5
+ typeof createSogStreamHandlers
6
+ > & {
7
+ resolveAsset: typeof resolveAsset;
39
8
  };
40
- export type SogStreamRpcHandlers = typeof rpcHandlers;
41
- export {};
@@ -1,41 +1,8 @@
1
- import { resolveAsset } from '../../workerDecode';
2
- declare const rpcHandlers: {
3
- resolveAsset: typeof resolveAsset;
4
- loadSogChunk: ({ id, ...args }: import('../../loadTypes').SplatLoadArgs & {
5
- id: number;
6
- }, options: {
7
- sendStatus: (data: import('../../loadTypes').SplatLoadStatus) => void;
8
- }) => Promise<import('./workerHandlers').SogChunkInfo>;
9
- cacheSogChunk: ({ id, data, }: {
10
- id: number;
11
- data: import('../../../data/defines').SplatResult;
12
- }) => import('./workerHandlers').SogChunkInfo;
13
- extractSogRegions: ({ id, ranges, }: {
14
- id: number;
15
- ranges: {
16
- start: number;
17
- count: number;
18
- }[];
19
- }) => import('../../../data/defines').ReorderedSplatResult[];
20
- releaseSogChunk: ({ id }: {
21
- id: number;
22
- }) => void;
23
- parseSogIndex: ({ bytes, baseUrl, }: {
24
- bytes: ArrayBuffer;
25
- baseUrl: string;
26
- }) => {
27
- bounds: Float64Array<ArrayBuffer>;
28
- leafOffsets: Uint32Array<ArrayBuffer>;
29
- lods: Float64Array<ArrayBuffer>;
30
- retainedIndexBytes: number;
31
- urls: string[];
32
- counts: Float64Array;
33
- environment?: string;
34
- };
35
- selectSogLod: ({ view, budget }: {
36
- view: import('./sogVisibility').SogView;
37
- budget: number;
38
- }) => Uint32Array<ArrayBufferLike>;
1
+ import type { resolveAsset } from "../../workerDecode.js";
2
+ import type { createSogStreamHandlers } from "./workerHandlers.js";
3
+
4
+ export type SogStreamRpcHandlers = ReturnType<
5
+ typeof createSogStreamHandlers
6
+ > & {
7
+ resolveAsset: typeof resolveAsset;
39
8
  };
40
- export type SogStreamRpcHandlers = typeof rpcHandlers;
41
- export {};
@@ -1,48 +1,73 @@
1
- import { SplatResult } from '../../../data/defines.cjs';
2
- import { SplatLoadArgs, SplatLoadStatus } from '../../loadTypes.cjs';
3
- import { SogView } from './sogVisibility.cjs';
1
+ import type { SplatResult } from "../../../data/defines.cjs";
2
+ import type { SplatLoadArgs, SplatLoadStatus } from "../../loadTypes.cjs";
3
+ import type { SogView } from "./sogVisibility.cjs";
4
4
  export type SogChunkInfo = {
5
- numSplats: number;
6
- numSh: number;
7
- byteLength: number;
5
+ numSplats: number;
6
+ numSh: number;
7
+ byteLength: number;
8
8
  };
9
9
  /** LOD workers parse the index once before selection; other workers own chunk caches. */
10
- export declare function createSogStreamHandlers(decodeSplats: (args: SplatLoadArgs, options: {
11
- sendStatus: (data: SplatLoadStatus) => void;
12
- }) => Promise<SplatResult>): {
13
- loadSogChunk: ({ id, ...args }: SplatLoadArgs & {
14
- id: number;
15
- }, options: {
16
- sendStatus: (data: SplatLoadStatus) => void;
17
- }) => Promise<SogChunkInfo>;
18
- cacheSogChunk: ({ id, data, }: {
19
- id: number;
20
- data: SplatResult;
21
- }) => SogChunkInfo;
22
- extractSogRegions: ({ id, ranges, }: {
23
- id: number;
24
- ranges: {
25
- start: number;
26
- count: number;
27
- }[];
28
- }) => import('../../../data/defines.cjs').ReorderedSplatResult[];
29
- releaseSogChunk: ({ id }: {
30
- id: number;
31
- }) => void;
32
- parseSogIndex: ({ bytes, baseUrl, }: {
33
- bytes: ArrayBuffer;
34
- baseUrl: string;
35
- }) => {
36
- bounds: Float64Array<ArrayBuffer>;
37
- leafOffsets: Uint32Array<ArrayBuffer>;
38
- lods: Float64Array<ArrayBuffer>;
39
- retainedIndexBytes: number;
40
- urls: string[];
41
- counts: Float64Array;
42
- environment?: string;
43
- };
44
- selectSogLod: ({ view, budget }: {
45
- view: SogView;
46
- budget: number;
47
- }) => Uint32Array<ArrayBufferLike>;
10
+ export declare function createSogStreamHandlers(
11
+ decodeSplats: (
12
+ args: SplatLoadArgs,
13
+ options: {
14
+ sendStatus: (data: SplatLoadStatus) => void;
15
+ },
16
+ ) => Promise<SplatResult>,
17
+ ): {
18
+ loadSogChunk: (
19
+ {
20
+ id,
21
+ ...args
22
+ }: SplatLoadArgs & {
23
+ id: number;
24
+ },
25
+ options: {
26
+ sendStatus: (data: SplatLoadStatus) => void;
27
+ },
28
+ ) => Promise<SogChunkInfo>;
29
+ cacheSogChunk: ({
30
+ id,
31
+ data,
32
+ }: {
33
+ id: number;
34
+ data: SplatResult;
35
+ }) => SogChunkInfo;
36
+ extractSogRegions: ({
37
+ id,
38
+ ranges,
39
+ }: {
40
+ id: number;
41
+ ranges: {
42
+ start: number;
43
+ count: number;
44
+ }[];
45
+ }) => import("../../../data/defines.cjs").ReorderedSplatResult[];
46
+ releaseSogChunk: ({
47
+ id,
48
+ }: {
49
+ id: number;
50
+ }) => void;
51
+ parseSogIndex: ({
52
+ bytes,
53
+ baseUrl,
54
+ }: {
55
+ bytes: ArrayBuffer;
56
+ baseUrl: string;
57
+ }) => {
58
+ bounds: Float64Array<ArrayBuffer>;
59
+ leafOffsets: Uint32Array<ArrayBuffer>;
60
+ lods: Float64Array<ArrayBuffer>;
61
+ retainedIndexBytes: number;
62
+ urls: string[];
63
+ counts: Float64Array;
64
+ environment?: string;
65
+ };
66
+ selectSogLod: ({
67
+ view,
68
+ budget,
69
+ }: {
70
+ view: SogView;
71
+ budget: number;
72
+ }) => Uint32Array<ArrayBufferLike>;
48
73
  };
@@ -1,48 +1,73 @@
1
- import { SplatResult } from '../../../data/defines';
2
- import { SplatLoadArgs, SplatLoadStatus } from '../../loadTypes';
3
- import { SogView } from './sogVisibility';
1
+ import type { SplatResult } from "../../../data/defines.js";
2
+ import type { SplatLoadArgs, SplatLoadStatus } from "../../loadTypes.js";
3
+ import type { SogView } from "./sogVisibility.js";
4
4
  export type SogChunkInfo = {
5
- numSplats: number;
6
- numSh: number;
7
- byteLength: number;
5
+ numSplats: number;
6
+ numSh: number;
7
+ byteLength: number;
8
8
  };
9
9
  /** LOD workers parse the index once before selection; other workers own chunk caches. */
10
- export declare function createSogStreamHandlers(decodeSplats: (args: SplatLoadArgs, options: {
11
- sendStatus: (data: SplatLoadStatus) => void;
12
- }) => Promise<SplatResult>): {
13
- loadSogChunk: ({ id, ...args }: SplatLoadArgs & {
14
- id: number;
15
- }, options: {
16
- sendStatus: (data: SplatLoadStatus) => void;
17
- }) => Promise<SogChunkInfo>;
18
- cacheSogChunk: ({ id, data, }: {
19
- id: number;
20
- data: SplatResult;
21
- }) => SogChunkInfo;
22
- extractSogRegions: ({ id, ranges, }: {
23
- id: number;
24
- ranges: {
25
- start: number;
26
- count: number;
27
- }[];
28
- }) => import('../../../data/defines').ReorderedSplatResult[];
29
- releaseSogChunk: ({ id }: {
30
- id: number;
31
- }) => void;
32
- parseSogIndex: ({ bytes, baseUrl, }: {
33
- bytes: ArrayBuffer;
34
- baseUrl: string;
35
- }) => {
36
- bounds: Float64Array<ArrayBuffer>;
37
- leafOffsets: Uint32Array<ArrayBuffer>;
38
- lods: Float64Array<ArrayBuffer>;
39
- retainedIndexBytes: number;
40
- urls: string[];
41
- counts: Float64Array;
42
- environment?: string;
43
- };
44
- selectSogLod: ({ view, budget }: {
45
- view: SogView;
46
- budget: number;
47
- }) => Uint32Array<ArrayBufferLike>;
10
+ export declare function createSogStreamHandlers(
11
+ decodeSplats: (
12
+ args: SplatLoadArgs,
13
+ options: {
14
+ sendStatus: (data: SplatLoadStatus) => void;
15
+ },
16
+ ) => Promise<SplatResult>,
17
+ ): {
18
+ loadSogChunk: (
19
+ {
20
+ id,
21
+ ...args
22
+ }: SplatLoadArgs & {
23
+ id: number;
24
+ },
25
+ options: {
26
+ sendStatus: (data: SplatLoadStatus) => void;
27
+ },
28
+ ) => Promise<SogChunkInfo>;
29
+ cacheSogChunk: ({
30
+ id,
31
+ data,
32
+ }: {
33
+ id: number;
34
+ data: SplatResult;
35
+ }) => SogChunkInfo;
36
+ extractSogRegions: ({
37
+ id,
38
+ ranges,
39
+ }: {
40
+ id: number;
41
+ ranges: {
42
+ start: number;
43
+ count: number;
44
+ }[];
45
+ }) => import("../../../data/defines.js").ReorderedSplatResult[];
46
+ releaseSogChunk: ({
47
+ id,
48
+ }: {
49
+ id: number;
50
+ }) => void;
51
+ parseSogIndex: ({
52
+ bytes,
53
+ baseUrl,
54
+ }: {
55
+ bytes: ArrayBuffer;
56
+ baseUrl: string;
57
+ }) => {
58
+ bounds: Float64Array<ArrayBuffer>;
59
+ leafOffsets: Uint32Array<ArrayBuffer>;
60
+ lods: Float64Array<ArrayBuffer>;
61
+ retainedIndexBytes: number;
62
+ urls: string[];
63
+ counts: Float64Array;
64
+ environment?: string;
65
+ };
66
+ selectSogLod: ({
67
+ view,
68
+ budget,
69
+ }: {
70
+ view: SogView;
71
+ budget: number;
72
+ }) => Uint32Array<ArrayBufferLike>;
48
73
  };
@@ -1,44 +1,53 @@
1
- import { Group, LoadingManager } from 'three';
2
- import { SplatRequestOptions } from '../loadTypes.cjs';
1
+ import type { Group, LoadingManager } from "three";
2
+ import type { SplatRequestOptions } from "../loadTypes.cjs";
3
3
  export type StreamRequestOptions = SplatRequestOptions & {
4
- manager?: LoadingManager;
4
+ manager?: LoadingManager;
5
5
  };
6
6
  export type StreamSchedulerOptions = {
7
- group?: Group;
8
- /** Initial Splat budget; update scheduler.splatBudget to change it at runtime. */
9
- splatBudget?: number;
10
- /** Milliseconds to retain unused data after fade-out; defaults to 2000. */
11
- cooldownMs?: number;
12
- fadeDurationMs?: number;
13
- /** Active downloads/decodes. Ready copies use a separate bounded byte queue. */
14
- maxConcurrentLoads?: number;
15
- onChange?: () => void;
16
- onError?: (error: unknown, url: string) => void;
7
+ group?: Group;
8
+ /** Initial Splat budget; update scheduler.splatBudget to change it at runtime. */
9
+ splatBudget?: number;
10
+ /** Milliseconds to retain unused data after fade-out; defaults to 2000. */
11
+ cooldownMs?: number;
12
+ fadeDurationMs?: number;
13
+ /** Active downloads/decodes. Ready copies use a separate bounded byte queue. */
14
+ maxConcurrentLoads?: number;
15
+ onChange?: () => void;
16
+ onError?: (error: unknown, url: string) => void;
17
17
  };
18
18
  export type StreamStats = {
19
- visibleSplats: number;
20
- visibleMeshes: number;
21
- residentMeshes: number;
22
- /** Decoded chunks, including cached chunks that are not currently drawn. */
23
- residentChunks: number;
24
- /** Retained CPU and estimated GPU bytes, excluding pending copies and WASM. */
25
- residentBytes: number;
26
- /** Reserved or ready copies awaiting publication into source storage. */
27
- pendingBytes: number;
28
- loadingChunks: number;
29
- downloadedBytes: number;
30
- peakWasmMemoryBytes: number;
19
+ visibleSplats: number;
20
+ visibleMeshes: number;
21
+ residentMeshes: number;
22
+ /** Decoded chunks, including cached chunks that are not currently drawn. */
23
+ residentChunks: number;
24
+ /** Retained CPU and estimated GPU bytes, excluding pending copies and WASM. */
25
+ residentBytes: number;
26
+ /** Reserved or ready copies awaiting publication into source storage. */
27
+ pendingBytes: number;
28
+ loadingChunks: number;
29
+ downloadedBytes: number;
30
+ peakWasmMemoryBytes: number;
31
31
  };
32
32
  export declare function positiveInteger(value: number, name: string): number;
33
33
  export declare function streamSettings(options: StreamSchedulerOptions): {
34
- splatBudget: number;
35
- cooldownMs: number;
36
- fadeDurationMs: number;
37
- maxConcurrentLoads: number;
34
+ splatBudget: number;
35
+ cooldownMs: number;
36
+ fadeDurationMs: number;
37
+ maxConcurrentLoads: number;
38
38
  };
39
39
  /** Bound queued decode/extraction copies independently of per-update publication. */
40
- export declare function streamPendingLimit(concurrency: number, unitBytes?: number): number;
40
+ export declare function streamPendingLimit(
41
+ concurrency: number,
42
+ unitBytes?: number,
43
+ ): number;
41
44
  /** Format errors are permanent; transient failures retry with capped backoff. */
42
45
  export declare function streamRetryAt(error: unknown, failures: number): number;
43
- export declare function notifyStreamChange(options: StreamSchedulerOptions): void;
44
- export declare function notifyStreamError(options: StreamSchedulerOptions, error: unknown, url: string): void;
46
+ export declare function notifyStreamChange(
47
+ options: StreamSchedulerOptions,
48
+ ): void;
49
+ export declare function notifyStreamError(
50
+ options: StreamSchedulerOptions,
51
+ error: unknown,
52
+ url: string,
53
+ ): void;
@@ -1,44 +1,53 @@
1
- import { Group, LoadingManager } from 'three';
2
- import { SplatRequestOptions } from '../loadTypes';
1
+ import type { Group, LoadingManager } from "three";
2
+ import type { SplatRequestOptions } from "../loadTypes.js";
3
3
  export type StreamRequestOptions = SplatRequestOptions & {
4
- manager?: LoadingManager;
4
+ manager?: LoadingManager;
5
5
  };
6
6
  export type StreamSchedulerOptions = {
7
- group?: Group;
8
- /** Initial Splat budget; update scheduler.splatBudget to change it at runtime. */
9
- splatBudget?: number;
10
- /** Milliseconds to retain unused data after fade-out; defaults to 2000. */
11
- cooldownMs?: number;
12
- fadeDurationMs?: number;
13
- /** Active downloads/decodes. Ready copies use a separate bounded byte queue. */
14
- maxConcurrentLoads?: number;
15
- onChange?: () => void;
16
- onError?: (error: unknown, url: string) => void;
7
+ group?: Group;
8
+ /** Initial Splat budget; update scheduler.splatBudget to change it at runtime. */
9
+ splatBudget?: number;
10
+ /** Milliseconds to retain unused data after fade-out; defaults to 2000. */
11
+ cooldownMs?: number;
12
+ fadeDurationMs?: number;
13
+ /** Active downloads/decodes. Ready copies use a separate bounded byte queue. */
14
+ maxConcurrentLoads?: number;
15
+ onChange?: () => void;
16
+ onError?: (error: unknown, url: string) => void;
17
17
  };
18
18
  export type StreamStats = {
19
- visibleSplats: number;
20
- visibleMeshes: number;
21
- residentMeshes: number;
22
- /** Decoded chunks, including cached chunks that are not currently drawn. */
23
- residentChunks: number;
24
- /** Retained CPU and estimated GPU bytes, excluding pending copies and WASM. */
25
- residentBytes: number;
26
- /** Reserved or ready copies awaiting publication into source storage. */
27
- pendingBytes: number;
28
- loadingChunks: number;
29
- downloadedBytes: number;
30
- peakWasmMemoryBytes: number;
19
+ visibleSplats: number;
20
+ visibleMeshes: number;
21
+ residentMeshes: number;
22
+ /** Decoded chunks, including cached chunks that are not currently drawn. */
23
+ residentChunks: number;
24
+ /** Retained CPU and estimated GPU bytes, excluding pending copies and WASM. */
25
+ residentBytes: number;
26
+ /** Reserved or ready copies awaiting publication into source storage. */
27
+ pendingBytes: number;
28
+ loadingChunks: number;
29
+ downloadedBytes: number;
30
+ peakWasmMemoryBytes: number;
31
31
  };
32
32
  export declare function positiveInteger(value: number, name: string): number;
33
33
  export declare function streamSettings(options: StreamSchedulerOptions): {
34
- splatBudget: number;
35
- cooldownMs: number;
36
- fadeDurationMs: number;
37
- maxConcurrentLoads: number;
34
+ splatBudget: number;
35
+ cooldownMs: number;
36
+ fadeDurationMs: number;
37
+ maxConcurrentLoads: number;
38
38
  };
39
39
  /** Bound queued decode/extraction copies independently of per-update publication. */
40
- export declare function streamPendingLimit(concurrency: number, unitBytes?: number): number;
40
+ export declare function streamPendingLimit(
41
+ concurrency: number,
42
+ unitBytes?: number,
43
+ ): number;
41
44
  /** Format errors are permanent; transient failures retry with capped backoff. */
42
45
  export declare function streamRetryAt(error: unknown, failures: number): number;
43
- export declare function notifyStreamChange(options: StreamSchedulerOptions): void;
44
- export declare function notifyStreamError(options: StreamSchedulerOptions, error: unknown, url: string): void;
46
+ export declare function notifyStreamChange(
47
+ options: StreamSchedulerOptions,
48
+ ): void;
49
+ export declare function notifyStreamError(
50
+ options: StreamSchedulerOptions,
51
+ error: unknown,
52
+ url: string,
53
+ ): void;