gaussian-splat-lite 1.2.2 → 1.3.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 (250) hide show
  1. package/CHANGELOG.md +61 -2
  2. package/CONTRIBUTING.md +4 -2
  3. package/README.md +4 -3
  4. package/dist/gaussian-splat-lite.cjs +6782 -1661
  5. package/dist/gaussian-splat-lite.cjs.map +1 -1
  6. package/dist/gaussian-splat-lite.min.cjs +991 -15
  7. package/dist/gaussian-splat-lite.min.cjs.map +1 -1
  8. package/dist/gaussian-splat-lite.module.js +6328 -1207
  9. package/dist/gaussian-splat-lite.module.js.map +1 -1
  10. package/dist/gaussian-splat-lite.module.min.js +8208 -3572
  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 +83 -58
  45. package/dist/types/data/IndexedSplats.d.ts +83 -58
  46. package/dist/types/data/RadPagedSplats.d.cts +66 -61
  47. package/dist/types/data/RadPagedSplats.d.ts +66 -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 +36 -29
  51. package/dist/types/data/SplatOpacityTable.d.ts +36 -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/StreamCameras.d.cts +27 -18
  109. package/dist/types/loaders/stream/StreamCameras.d.ts +27 -18
  110. package/dist/types/loaders/stream/StreamWorkerPool.d.cts +37 -37
  111. package/dist/types/loaders/stream/StreamWorkerPool.d.ts +37 -37
  112. package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.cts +20 -13
  113. package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.ts +20 -13
  114. package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.cts +13 -9
  115. package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.ts +13 -9
  116. package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.cts +69 -51
  117. package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.ts +69 -51
  118. package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.cts +126 -102
  119. package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.ts +126 -102
  120. package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.cts +4 -4
  121. package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.ts +4 -4
  122. package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.cts +20 -17
  123. package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.ts +20 -17
  124. package/dist/types/loaders/stream/rad-stream/radFade.d.cts +13 -8
  125. package/dist/types/loaders/stream/rad-stream/radFade.d.ts +13 -8
  126. package/dist/types/loaders/stream/rad-stream/radLod.d.cts +29 -27
  127. package/dist/types/loaders/stream/rad-stream/radLod.d.ts +29 -27
  128. package/dist/types/loaders/stream/rad-stream/worker.d.cts +3 -59
  129. package/dist/types/loaders/stream/rad-stream/worker.d.ts +3 -59
  130. package/dist/types/loaders/stream/rad-stream/workerHandlers.d.cts +58 -61
  131. package/dist/types/loaders/stream/rad-stream/workerHandlers.d.ts +58 -61
  132. package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.cts +16 -12
  133. package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.ts +16 -12
  134. package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.cts +56 -41
  135. package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.ts +56 -41
  136. package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.cts +102 -81
  137. package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.ts +102 -81
  138. package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.cts +3 -3
  139. package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.ts +3 -3
  140. package/dist/types/loaders/stream/sog-stream/sogLod.d.cts +67 -46
  141. package/dist/types/loaders/stream/sog-stream/sogLod.d.ts +67 -46
  142. package/dist/types/loaders/stream/sog-stream/sogVisibility.d.cts +28 -22
  143. package/dist/types/loaders/stream/sog-stream/sogVisibility.d.ts +28 -22
  144. package/dist/types/loaders/stream/sog-stream/worker.d.cts +7 -40
  145. package/dist/types/loaders/stream/sog-stream/worker.d.ts +7 -40
  146. package/dist/types/loaders/stream/sog-stream/workerHandlers.d.cts +63 -44
  147. package/dist/types/loaders/stream/sog-stream/workerHandlers.d.ts +63 -44
  148. package/dist/types/loaders/stream/streamOptions.d.cts +43 -33
  149. package/dist/types/loaders/stream/streamOptions.d.ts +43 -33
  150. package/dist/types/loaders/workerDecode.d.cts +30 -12
  151. package/dist/types/loaders/workerDecode.d.ts +30 -12
  152. package/dist/types/patches/threeR186.d.cts +3 -0
  153. package/dist/types/patches/threeR186.d.ts +3 -0
  154. package/dist/types/rendering/GaussianSplatRenderer.d.cts +393 -376
  155. package/dist/types/rendering/GaussianSplatRenderer.d.ts +393 -376
  156. package/dist/types/rendering/MaterialState.d.cts +9 -0
  157. package/dist/types/rendering/MaterialState.d.ts +9 -0
  158. package/dist/types/rendering/SortCenterCache.d.cts +17 -17
  159. package/dist/types/rendering/SortCenterCache.d.ts +17 -17
  160. package/dist/types/rendering/SplatAccumulator.d.cts +93 -77
  161. package/dist/types/rendering/SplatAccumulator.d.ts +93 -77
  162. package/dist/types/rendering/SplatGeometry.d.cts +2 -2
  163. package/dist/types/rendering/SplatGeometry.d.ts +2 -2
  164. package/dist/types/rendering/StochasticSplatMaterial.d.cts +14 -0
  165. package/dist/types/rendering/StochasticSplatMaterial.d.ts +14 -0
  166. package/dist/types/rendering/backend.d.cts +30 -18
  167. package/dist/types/rendering/backend.d.ts +30 -18
  168. package/dist/types/rendering/blueNoise.d.cts +1 -1
  169. package/dist/types/rendering/blueNoise.d.ts +1 -1
  170. package/dist/types/rendering/rendererUtils.d.cts +25 -10
  171. package/dist/types/rendering/rendererUtils.d.ts +25 -10
  172. package/dist/types/rendering/tsl/GenerateProgram.d.cts +19 -17
  173. package/dist/types/rendering/tsl/GenerateProgram.d.ts +19 -17
  174. package/dist/types/rendering/tsl/ProjectionProgram.d.cts +38 -33
  175. package/dist/types/rendering/tsl/ProjectionProgram.d.ts +38 -33
  176. package/dist/types/rendering/tsl/SplatBackend.d.cts +22 -10
  177. package/dist/types/rendering/tsl/SplatBackend.d.ts +22 -10
  178. package/dist/types/rendering/tsl/SplatMaterial.d.cts +38 -25
  179. package/dist/types/rendering/tsl/SplatMaterial.d.ts +38 -25
  180. package/dist/types/rendering/tsl/shaderUtils.d.cts +55 -17
  181. package/dist/types/rendering/tsl/shaderUtils.d.ts +55 -17
  182. package/dist/types/rendering/tsl/stochasticCoverage.d.cts +7 -0
  183. package/dist/types/rendering/tsl/stochasticCoverage.d.ts +7 -0
  184. package/dist/types/rendering/tsl/viewUniforms.d.cts +19 -9
  185. package/dist/types/rendering/tsl/viewUniforms.d.ts +19 -9
  186. package/dist/types/rendering/uniforms.d.cts +83 -83
  187. package/dist/types/rendering/uniforms.d.ts +83 -83
  188. package/dist/types/rendering/webgl/AccumulatorGenerator.d.cts +28 -12
  189. package/dist/types/rendering/webgl/AccumulatorGenerator.d.ts +28 -12
  190. package/dist/types/rendering/webgl/OrderingTexture.d.cts +10 -7
  191. package/dist/types/rendering/webgl/OrderingTexture.d.ts +10 -7
  192. package/dist/types/rendering/webgl/SplatBackend.d.cts +20 -15
  193. package/dist/types/rendering/webgl/SplatBackend.d.ts +20 -15
  194. package/dist/types/rendering/webgl/SplatMaterial.d.cts +9 -4
  195. package/dist/types/rendering/webgl/SplatMaterial.d.ts +9 -4
  196. package/dist/types/rendering/webgl/textureUtils.d.cts +10 -3
  197. package/dist/types/rendering/webgl/textureUtils.d.ts +10 -3
  198. package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.cts +8 -10
  199. package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.ts +8 -10
  200. package/dist/types/rendering/webgl-fallback/SplatBackend.d.cts +18 -14
  201. package/dist/types/rendering/webgl-fallback/SplatBackend.d.ts +18 -14
  202. package/dist/types/rendering/webgpu/ProjectedSplats.d.cts +76 -66
  203. package/dist/types/rendering/webgpu/ProjectedSplats.d.ts +76 -66
  204. package/dist/types/rendering/webgpu/ProjectionCache.d.cts +43 -28
  205. package/dist/types/rendering/webgpu/ProjectionCache.d.ts +43 -28
  206. package/dist/types/rendering/webgpu/ProjectionKernel.d.cts +22 -0
  207. package/dist/types/rendering/webgpu/ProjectionKernel.d.ts +22 -0
  208. package/dist/types/rendering/webgpu/RadixSort.d.cts +44 -40
  209. package/dist/types/rendering/webgpu/RadixSort.d.ts +44 -40
  210. package/dist/types/rendering/webgpu/SplatBackend.d.cts +14 -12
  211. package/dist/types/rendering/webgpu/SplatBackend.d.ts +14 -12
  212. package/dist/types/runtime/SplatWorker.d.cts +17 -13
  213. package/dist/types/runtime/SplatWorker.d.ts +17 -13
  214. package/dist/types/runtime/WorkerRpc.d.cts +26 -20
  215. package/dist/types/runtime/WorkerRpc.d.ts +26 -20
  216. package/dist/types/runtime/abort.d.cts +10 -5
  217. package/dist/types/runtime/abort.d.ts +10 -5
  218. package/dist/types/runtime/retry.d.cts +6 -6
  219. package/dist/types/runtime/retry.d.ts +6 -6
  220. package/dist/types/runtime/wasmCall.d.cts +3 -3
  221. package/dist/types/runtime/wasmCall.d.ts +3 -3
  222. package/dist/types/runtime/worker.d.cts +44 -24
  223. package/dist/types/runtime/worker.d.ts +44 -24
  224. package/dist/types/runtime/workerServer.d.cts +3 -1
  225. package/dist/types/runtime/workerServer.d.ts +3 -1
  226. package/dist/types/scene/SplatEdit.d.cts +74 -67
  227. package/dist/types/scene/SplatEdit.d.ts +74 -67
  228. package/dist/types/scene/SplatMesh.d.cts +92 -70
  229. package/dist/types/scene/SplatMesh.d.ts +92 -70
  230. package/dist/types/utils/index.d.cts +15 -7
  231. package/dist/types/utils/index.d.ts +15 -7
  232. package/dist/types/utils/three.d.cts +3 -3
  233. package/dist/types/utils/three.d.ts +3 -3
  234. package/dist/types/utils/transforms.d.cts +10 -3
  235. package/dist/types/utils/transforms.d.ts +10 -3
  236. package/docs/GaussianSplatRenderer.md +3 -1
  237. package/docs/NeuralDenoiseNode.md +148 -0
  238. package/docs/RadStreamScheduler.md +14 -5
  239. package/docs/SogStreamScheduler.md +8 -6
  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/loaders/stream/StreamByteBudget.d.cts +0 -7
  247. package/dist/types/loaders/stream/StreamByteBudget.d.ts +0 -7
  248. package/dist/types/rendering/tsl/tslCompat.d.cts +0 -68
  249. package/dist/types/rendering/tsl/tslCompat.d.ts +0 -68
  250. package/docs/Architecture.md +0 -200
@@ -1,70 +1,91 @@
1
- import { Box3 } from 'three';
1
+ import type { Box3 } from "three";
2
2
  export type SogLodRange = {
3
- leaf: number;
4
- level: number;
5
- /** -1 for an empty LOD, which has no backing file. */
6
- file: number;
7
- offset: number;
8
- count: number;
3
+ leaf: number;
4
+ level: number;
5
+ /** -1 for an empty LOD, which has no backing file. */
6
+ file: number;
7
+ offset: number;
8
+ count: number;
9
9
  };
10
10
  export type SogLodLeaf = {
11
- id: number;
12
- /** Coarse to fine, with strictly increasing counts and decreasing levels. */
13
- lods: SogLodRange[];
11
+ id: number;
12
+ /** Coarse to fine, with strictly decreasing levels. */
13
+ lods: SogLodRange[];
14
14
  };
15
15
  export type SogLodNode = {
16
- bound: Box3;
17
- children?: SogLodNode[];
18
- leaf?: SogLodLeaf;
16
+ bound: Box3;
17
+ children?: SogLodNode[];
18
+ leaf?: SogLodLeaf;
19
19
  };
20
20
  export type SogLodFile = {
21
- url: string;
22
- count: number;
23
- ranges: SogLodRange[];
21
+ url: string;
22
+ count: number;
23
+ ranges: SogLodRange[];
24
24
  };
25
25
  export type SogLodManifest = {
26
- tree: SogLodNode;
27
- leaves: SogLodLeaf[];
28
- /** Flattened in leaf/LOD order; each leaf's first entry is unused. */
29
- upgradeRatios: number[];
30
- files: SogLodFile[];
31
- environment?: string;
26
+ tree: SogLodNode;
27
+ leaves: SogLodLeaf[];
28
+ lodLevels: number;
29
+ files: SogLodFile[];
30
+ environment?: string;
32
31
  };
33
32
  export declare const SOG_LOD_STRIDE = 4;
34
33
  /** Packed worker index. Float64 preserves source bounds and safe-integer counts. */
35
34
  export type SogLodIndex = {
36
- /** Preorder nodes: min XYZ, max XYZ, next index after the subtree, leaf ID (-1 for interiors). */
37
- nodes: Float64Array;
38
- leafOffsets: Uint32Array;
39
- /** Per level: level, file, offset, count. */
40
- lods: Float64Array;
41
- /** Best reachable distance-error reduction per added splat, in LOD order. */
42
- upgradeRatios: Float32Array;
43
- urls: string[];
44
- counts: Float64Array;
45
- environment?: string;
35
+ /** Preorder nodes: min XYZ, max XYZ, next index after the subtree, leaf ID (-1 for interiors). */
36
+ nodes: Float64Array;
37
+ leafOffsets: Uint32Array;
38
+ /** Per level: level, file, offset, count. */
39
+ lods: Float64Array;
40
+ lodLevels: number;
41
+ urls: string[];
42
+ counts: Float64Array;
43
+ environment?: string;
46
44
  };
47
45
  /** Scheduler metadata; the complete spatial tree stays in the LOD worker. */
48
- export type SogLodMetadata = Omit<SogLodIndex, "nodes" | "upgradeRatios"> & {
49
- /** Root min XYZ and max XYZ. */
50
- bounds: Float64Array;
46
+ export type SogLodMetadata = Omit<SogLodIndex, "nodes" | "lodLevels"> & {
47
+ /** Root min XYZ and max XYZ. */
48
+ bounds: Float64Array;
51
49
  };
52
50
  /** Flatten the tree and ranges into transferable typed arrays. */
53
51
  export declare function packSogLodIndex(manifest: SogLodManifest): SogLodIndex;
54
52
  /** Materialize only leaves visited by the camera, preserving stable range identities. */
55
- export declare function readSogLodLeaf(index: Pick<SogLodIndex, "leafOffsets" | "lods">, id: number): SogLodLeaf;
53
+ export declare function readSogLodLeaf(
54
+ index: Pick<SogLodIndex, "leafOffsets" | "lods">,
55
+ id: number,
56
+ ): SogLodLeaf;
56
57
  /** Streamed SOG v1, including the earlier unversioned manifests. */
57
- export declare function parseSogLodManifest(value: unknown, baseUrl: string): SogLodManifest;
58
+ export declare function parseSogLodManifest(
59
+ value: unknown,
60
+ baseUrl: string,
61
+ ): SogLodManifest;
58
62
  export type SogVisibleLeaf = {
59
- leaf: SogLodLeaf;
60
- weight: number;
63
+ leaf: SogLodLeaf;
64
+ /** World-space distance to the region, compensated for the camera's field of view. */
65
+ distance: number;
66
+ };
67
+ export type SogBudgetMode = "target" | "limit";
68
+ export type SogLodOptions = {
69
+ budget: number;
70
+ splatBudgetMode: SogBudgetMode;
71
+ lodBaseDistance: number;
72
+ lodMultiplier: number;
61
73
  };
62
74
  /** Reuse cached refinements up to the target, then split gaps of four or more. */
63
- export declare function resolveSogLod(leaf: SogLodLeaf, target: SogLodRange, current: SogLodRange | undefined, isLoaded: (range: SogLodRange) => boolean): {
64
- range: SogLodRange | undefined;
65
- load?: SogLodRange;
66
- /** Wait until range is attached before requesting the next LOD. */
67
- refinement?: boolean;
75
+ export declare function resolveSogLod(
76
+ leaf: SogLodLeaf,
77
+ target: SogLodRange,
78
+ current: SogLodRange | undefined,
79
+ isLoaded: (range: SogLodRange) => boolean,
80
+ ): {
81
+ range: SogLodRange | undefined;
82
+ load?: SogLodRange;
83
+ /** Wait until range is attached before requesting the next LOD. */
84
+ refinement?: boolean;
68
85
  };
69
- /** Distance bands within a splat budget, using a small heap. */
70
- export declare function selectSogLods(visible: SogVisibleLeaf[], budget: number, manifest: Pick<SogLodIndex, "leafOffsets" | "upgradeRatios">): Map<number, SogLodRange>;
86
+ /** Select distance bands, fitting their common base distance to the splat budget. */
87
+ export declare function selectSogLods(
88
+ visible: SogVisibleLeaf[],
89
+ lodLevels: number,
90
+ options: SogLodOptions,
91
+ ): Map<number, SogLodRange>;
@@ -1,35 +1,41 @@
1
- import { SogLodIndex } from './sogLod.cjs';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { SogLodIndex, SogLodOptions } 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
+ export type SogLodRequest = SogLodOptions & { view: SogView };
14
15
  /**
15
16
  * Capture the cameras that see the group without traversing the manifest or
16
17
  * reducing matrix precision. WebXR selects detail from each eye's current pose and frustum.
17
18
  */
18
- export declare function captureSogView(cameras: readonly THREE.Camera[], group: THREE.Object3D): SogView;
19
+ export declare function captureSogView(
20
+ cameras: readonly THREE.Camera[],
21
+ group: THREE.Object3D,
22
+ ): SogView;
19
23
  /** Stable key of a view, for skipping unchanged selection requests. */
20
24
  export declare function getSogViewKey(view: SogView): string;
21
25
  /** Worker traversal state keeps leaf identities stable between selections. */
22
26
  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;
27
+ private readonly manifest;
28
+ private readonly leaves;
29
+ private readonly cameras;
30
+ private readonly clip;
31
+ private readonly bound;
32
+ private readonly closest;
33
+ private readonly inverseModelView;
34
+ constructor(
35
+ manifest: Pick<SogLodIndex, "nodes" | "leafOffsets" | "lods" | "lodLevels">,
36
+ );
37
+ private prepareCameras;
38
+ private collect;
39
+ /** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
40
+ select(request: SogLodRequest): Uint32Array;
35
41
  }
@@ -1,35 +1,41 @@
1
- import { SogLodIndex } from './sogLod';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { SogLodIndex, SogLodOptions } 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
+ export type SogLodRequest = SogLodOptions & { view: SogView };
14
15
  /**
15
16
  * Capture the cameras that see the group without traversing the manifest or
16
17
  * reducing matrix precision. WebXR selects detail from each eye's current pose and frustum.
17
18
  */
18
- export declare function captureSogView(cameras: readonly THREE.Camera[], group: THREE.Object3D): SogView;
19
+ export declare function captureSogView(
20
+ cameras: readonly THREE.Camera[],
21
+ group: THREE.Object3D,
22
+ ): SogView;
19
23
  /** Stable key of a view, for skipping unchanged selection requests. */
20
24
  export declare function getSogViewKey(view: SogView): string;
21
25
  /** Worker traversal state keeps leaf identities stable between selections. */
22
26
  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;
27
+ private readonly manifest;
28
+ private readonly leaves;
29
+ private readonly cameras;
30
+ private readonly clip;
31
+ private readonly bound;
32
+ private readonly closest;
33
+ private readonly inverseModelView;
34
+ constructor(
35
+ manifest: Pick<SogLodIndex, "nodes" | "leafOffsets" | "lods" | "lodLevels">,
36
+ );
37
+ private prepareCameras;
38
+ private collect;
39
+ /** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
40
+ select(request: SogLodRequest): Uint32Array;
35
41
  }
@@ -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,67 @@
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 { SogLodRequest } 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: (request: SogLodRequest) => Uint32Array<ArrayBufferLike>;
48
67
  };
@@ -1,48 +1,67 @@
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 { SogLodRequest } 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: (request: SogLodRequest) => Uint32Array<ArrayBufferLike>;
48
67
  };