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,68 +1,86 @@
1
- import { SplatOpacityTable } from './SplatOpacityTable';
2
- import { Splats, SplatsOptions } from './Splats';
3
- import { ReorderedSplatResult, SplatResult } from './defines';
4
- import { RaycastRangeCallback, SplatRaycastQuery } from './raycast';
5
- import { decodeSplat } from './unpack';
6
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { SplatOpacityTable } from "./SplatOpacityTable.js";
3
+ import { Splats, type SplatsOptions } from "./Splats.js";
4
+ import type { ReorderedSplatResult, SplatResult } from "./defines.js";
5
+ import type { RaycastRangeCallback, SplatRaycastQuery } from "./raycast.js";
6
+ import type { decodeSplat } from "./unpack.js";
7
7
  type IndexedSplatsOptions = {
8
- capacity: number;
9
- layerSize: number;
10
- numSh: number;
11
- blockBits: number;
8
+ capacity: number;
9
+ layerSize: number;
10
+ numSh: number;
11
+ blockBits: number;
12
12
  };
13
13
  type DecodedSplat = ReturnType<typeof decodeSplat>;
14
14
  type DecodedSplatWithSh = DecodedSplat & {
15
- sh: THREE.Color[];
15
+ sh: THREE.Color[];
16
16
  };
17
17
  /** Fixed packed storage with one visible-index contract for rendering and CPU reads.
18
18
  * Fades affect display only: records returned to picking retain their source opacity. */
19
19
  export declare abstract class IndexedSplats extends Splats {
20
- readonly layerSize: number;
21
- readonly numSh: 0 | 1 | 2 | 3;
22
- protected readonly opacities: SplatOpacityTable;
23
- protected sourceIndices: Uint32Array<ArrayBuffer>;
24
- protected visibleIndices: Uint32Array;
25
- private sourceArrays;
26
- private sourceCenters;
27
- private sourceTextures;
28
- private indexTexture;
29
- private readonly blockBits;
30
- private disposed;
31
- private readonly spatialChunks;
32
- private spatialBoundsBytes;
33
- constructor({ capacity, layerSize, numSh, blockBits }: IndexedSplatsOptions);
34
- protected assertLive(): void;
35
- initialize(options?: SplatsOptions): Promise<Splats>;
36
- /** Range-based sources can materialize their visible map lazily. */
37
- protected ensureIndices(): void;
38
- /** Each source updates its bounds independently of the visible-index map. */
39
- protected commitIndices(indices: Uint32Array): void;
40
- /** Reserve index storage and mark it for upload; fill the first count entries synchronously. */
41
- protected prepareIndices(count: number): Uint32Array<ArrayBuffer>;
42
- /** Copies packed records. Input buffers remain caller-owned for both formats. */
43
- protected writeRecords(start: number, data: ReorderedSplatResult, allocation: number): void;
44
- private getStorageIndex;
45
- getSourceIndex(index: number): number;
46
- private checkVisibleRange;
47
- getNumSh(): 0 | 1 | 2 | 3;
48
- private get textureByteLength();
49
- getByteLength(): number;
50
- get residentBytes(): number;
51
- private center;
52
- copySortCenters(target: Float32Array, targetStart: number, count: number): void;
53
- protected releaseSpatialBounds(start: number): void;
54
- forEachRaycastRange(query: SplatRaycastQuery, callback: RaycastRangeCallback): void;
55
- copySplatRecords(firstTarget: Uint32Array, secondTarget: Uint32Array, sourceStart: number, count: number): void;
56
- getSplat(index: number): DecodedSplatWithSh;
57
- getSplat(index: number, includeSh: true): DecodedSplatWithSh;
58
- getSplat(index: number, includeSh: false): DecodedSplat;
59
- getSplat(index: number, includeSh: boolean): DecodedSplat;
60
- forEachCenter(callback: (index: number, x: number, y: number, z: number) => void): void;
61
- forEachSplat(callback: Parameters<Splats["forEachSplat"]>[0]): void;
62
- takeData(): SplatResult & {
63
- sourceIds: Uint32Array;
64
- };
65
- setTextureUniforms(uniforms: Record<string, THREE.IUniform>): void;
66
- dispose(): void;
20
+ readonly layerSize: number;
21
+ readonly numSh: 0 | 1 | 2 | 3;
22
+ protected readonly opacities: SplatOpacityTable;
23
+ protected sourceIndices: Uint32Array<ArrayBuffer>;
24
+ protected visibleIndices: Uint32Array;
25
+ private sourceArrays;
26
+ private sourceCenters;
27
+ private sourceTextures;
28
+ private indexTexture;
29
+ private readonly blockBits;
30
+ private disposed;
31
+ private readonly spatialChunks;
32
+ private spatialBoundsBytes;
33
+ constructor({ capacity, layerSize, numSh, blockBits }: IndexedSplatsOptions);
34
+ protected assertLive(): void;
35
+ initialize(options?: SplatsOptions): Promise<Splats>;
36
+ /** Range-based sources can materialize their visible map lazily. */
37
+ protected ensureIndices(): void;
38
+ /** Each source updates its bounds independently of the visible-index map. */
39
+ protected commitIndices(indices: Uint32Array): void;
40
+ /** Reserve index storage and mark it for upload; fill the first count entries synchronously. */
41
+ protected prepareIndices(count: number): Uint32Array<ArrayBuffer>;
42
+ /** Copies packed records. Input buffers remain caller-owned for both formats. */
43
+ protected writeRecords(
44
+ start: number,
45
+ data: ReorderedSplatResult,
46
+ allocation: number,
47
+ ): void;
48
+ private getStorageIndex;
49
+ getSourceIndex(index: number): number;
50
+ private checkVisibleRange;
51
+ getNumSh(): 0 | 3 | 2 | 1;
52
+ private get textureByteLength();
53
+ getByteLength(): number;
54
+ get residentBytes(): number;
55
+ private center;
56
+ copySortCenters(
57
+ target: Float32Array,
58
+ targetStart: number,
59
+ count: number,
60
+ ): void;
61
+ protected releaseSpatialBounds(start: number): void;
62
+ forEachRaycastRange(
63
+ query: SplatRaycastQuery,
64
+ callback: RaycastRangeCallback,
65
+ ): void;
66
+ copySplatRecords(
67
+ firstTarget: Uint32Array,
68
+ secondTarget: Uint32Array,
69
+ sourceStart: number,
70
+ count: number,
71
+ ): void;
72
+ getSplat(index: number): DecodedSplatWithSh;
73
+ getSplat(index: number, includeSh: true): DecodedSplatWithSh;
74
+ getSplat(index: number, includeSh: false): DecodedSplat;
75
+ getSplat(index: number, includeSh: boolean): DecodedSplat;
76
+ forEachCenter(
77
+ callback: (index: number, x: number, y: number, z: number) => void,
78
+ ): void;
79
+ forEachSplat(callback: Parameters<Splats["forEachSplat"]>[0]): void;
80
+ takeData(): SplatResult & {
81
+ sourceIds: Uint32Array;
82
+ };
83
+ setTextureUniforms(uniforms: Record<string, THREE.IUniform>): void;
84
+ dispose(): void;
67
85
  }
68
86
  export {};
@@ -1,78 +1,82 @@
1
- import { IndexedSplats } from './IndexedSplats.cjs';
2
- import { ReorderedSplatResult } from './defines.cjs';
1
+ import { IndexedSplats } from "./IndexedSplats.cjs";
2
+ import type { ReorderedSplatResult } from "./defines.cjs";
3
3
  export type RadPagedSplatsOptions = {
4
- /** Maximum records in one decoded chunk. Defaults to Spark's 65,536. */
5
- pageSize?: number;
6
- pageCount: number;
7
- numSh: number;
8
- /** Pass the device limit when known. WebGL2 guarantees at least 256. */
9
- maxArrayLayers?: number;
4
+ /** Maximum records in one decoded chunk. Defaults to Spark's 65,536. */
5
+ pageSize?: number;
6
+ pageCount: number;
7
+ numSh: number;
8
+ /** Pass the device limit when known. WebGL2 guarantees at least 256. */
9
+ maxArrayLayers?: number;
10
10
  };
11
11
  /** Page ranges in a sorted, file-global cut; used only by RAD streaming. */
12
12
  export type RadSelectionRange = {
13
- start: number;
14
- end: number;
15
- slot: number;
16
- pageStart: number;
17
- chunkIndex: number;
18
- sourceBase: number;
13
+ start: number;
14
+ end: number;
15
+ slot: number;
16
+ pageStart: number;
17
+ chunkIndex: number;
18
+ sourceBase: number;
19
19
  };
20
20
  export type RadSelectionSnapshot = {
21
- pageCount: number;
22
- opacityBlocks: Uint32Array;
23
- ranges: RadSelectionRange[];
21
+ pageCount: number;
22
+ opacityBlocks: Uint32Array;
23
+ ranges: RadSelectionRange[];
24
24
  };
25
25
  type RadPreparedCut = {
26
- indices: Uint32Array;
27
- selectedPages: Uint32Array;
28
- centerOnlyBoundingBox: Float32Array;
29
- boundingBox: Float32Array;
26
+ indices: Uint32Array;
27
+ selectedPages: Uint32Array;
28
+ centerOnlyBoundingBox: Float32Array;
29
+ boundingBox: Float32Array;
30
30
  };
31
31
  export type RadPreparedSelection = RadPreparedCut & {
32
- opacityBlocks: Uint32Array;
33
- dirtyLayers: Uint8Array;
34
- fadeKinds: number;
35
- final?: RadPreparedCut;
32
+ opacityBlocks: Uint32Array;
33
+ dirtyLayers: Uint8Array;
34
+ fadeKinds: number;
35
+ final?: RadPreparedCut;
36
36
  };
37
37
  /** One power-of-two texture layer per page, with no shared upload layers. */
38
- export declare function radPageTextureLayout({ pageSize, pageCount, maxArrayLayers, }: Omit<RadPagedSplatsOptions, "numSh">): {
39
- pageSize: number;
40
- pageStride: number;
41
- pageCount: number;
42
- capacity: number;
43
- width: number;
44
- height: number;
45
- depth: number;
38
+ export declare function radPageTextureLayout({
39
+ pageSize,
40
+ pageCount,
41
+ maxArrayLayers,
42
+ }: Omit<RadPagedSplatsOptions, "numSh">): {
43
+ pageSize: number;
44
+ pageStride: number;
45
+ pageCount: number;
46
+ capacity: number;
47
+ width: number;
48
+ height: number;
49
+ depth: number;
46
50
  };
47
51
  /** Fixed RAD page slots; shared IndexedSplats owns rendering and CPU access. */
48
52
  export declare class RadPagedSplats extends IndexedSplats {
49
- readonly pageSize: number;
50
- readonly pageStride: number;
51
- readonly pageCount: number;
52
- private selectedPages;
53
- private finalSelection?;
54
- private fadeProgress;
55
- private fadeKinds;
56
- constructor(options: RadPagedSplatsOptions);
57
- pageStart(slot: number): number;
58
- /** Copies data; callers retain ownership of the packed buffers. */
59
- writePage(slot: number, data: ReorderedSplatResult): void;
60
- /** Remove the displayed cut when its scheduler becomes hidden. */
61
- clearSelection(): boolean;
62
- /** Snapshot only changed pools; never transfer live texture storage. */
63
- snapshotSelection(ranges: RadSelectionRange[]): RadSelectionSnapshot;
64
- /** Internal commit of worker-prepared data; the caller gives up the arrays. */
65
- commitSelection(prepared: RadPreparedSelection): void;
66
- /** Keep record indices, page occupancy and bounds on the same cut. */
67
- private commitCut;
68
- /** A normal streaming fade changes only two group coefficients. */
69
- setFadeProgress(progress: number): boolean;
70
- isPageSelected(slot: number): boolean;
71
- /** Complete opacity changes without removing outgoing records. */
72
- finishFadeIn(): boolean;
73
- /** The worker already removed outgoing records from the final cut. */
74
- finishFade(): boolean;
75
- getByteLength(): number;
76
- dispose(): void;
53
+ readonly pageSize: number;
54
+ readonly pageStride: number;
55
+ readonly pageCount: number;
56
+ private selectedPages;
57
+ private finalSelection?;
58
+ private fadeProgress;
59
+ private fadeKinds;
60
+ constructor(options: RadPagedSplatsOptions);
61
+ pageStart(slot: number): number;
62
+ /** Copies data; callers retain ownership of the packed buffers. */
63
+ writePage(slot: number, data: ReorderedSplatResult): void;
64
+ /** Remove the displayed cut when its scheduler becomes hidden. */
65
+ clearSelection(): boolean;
66
+ /** Snapshot only changed pools; never transfer live texture storage. */
67
+ snapshotSelection(ranges: RadSelectionRange[]): RadSelectionSnapshot;
68
+ /** Internal commit of worker-prepared data; the caller gives up the arrays. */
69
+ commitSelection(prepared: RadPreparedSelection): void;
70
+ /** Keep record indices, page occupancy and bounds on the same cut. */
71
+ private commitCut;
72
+ /** A normal streaming fade changes only two group coefficients. */
73
+ setFadeProgress(progress: number): boolean;
74
+ isPageSelected(slot: number): boolean;
75
+ /** Complete opacity changes without removing outgoing records. */
76
+ finishFadeIn(): boolean;
77
+ /** The worker already removed outgoing records from the final cut. */
78
+ finishFade(): boolean;
79
+ getByteLength(): number;
80
+ dispose(): void;
77
81
  }
78
82
  export {};
@@ -1,78 +1,82 @@
1
- import { IndexedSplats } from './IndexedSplats';
2
- import { ReorderedSplatResult } from './defines';
1
+ import { IndexedSplats } from "./IndexedSplats.js";
2
+ import type { ReorderedSplatResult } from "./defines.js";
3
3
  export type RadPagedSplatsOptions = {
4
- /** Maximum records in one decoded chunk. Defaults to Spark's 65,536. */
5
- pageSize?: number;
6
- pageCount: number;
7
- numSh: number;
8
- /** Pass the device limit when known. WebGL2 guarantees at least 256. */
9
- maxArrayLayers?: number;
4
+ /** Maximum records in one decoded chunk. Defaults to Spark's 65,536. */
5
+ pageSize?: number;
6
+ pageCount: number;
7
+ numSh: number;
8
+ /** Pass the device limit when known. WebGL2 guarantees at least 256. */
9
+ maxArrayLayers?: number;
10
10
  };
11
11
  /** Page ranges in a sorted, file-global cut; used only by RAD streaming. */
12
12
  export type RadSelectionRange = {
13
- start: number;
14
- end: number;
15
- slot: number;
16
- pageStart: number;
17
- chunkIndex: number;
18
- sourceBase: number;
13
+ start: number;
14
+ end: number;
15
+ slot: number;
16
+ pageStart: number;
17
+ chunkIndex: number;
18
+ sourceBase: number;
19
19
  };
20
20
  export type RadSelectionSnapshot = {
21
- pageCount: number;
22
- opacityBlocks: Uint32Array;
23
- ranges: RadSelectionRange[];
21
+ pageCount: number;
22
+ opacityBlocks: Uint32Array;
23
+ ranges: RadSelectionRange[];
24
24
  };
25
25
  type RadPreparedCut = {
26
- indices: Uint32Array;
27
- selectedPages: Uint32Array;
28
- centerOnlyBoundingBox: Float32Array;
29
- boundingBox: Float32Array;
26
+ indices: Uint32Array;
27
+ selectedPages: Uint32Array;
28
+ centerOnlyBoundingBox: Float32Array;
29
+ boundingBox: Float32Array;
30
30
  };
31
31
  export type RadPreparedSelection = RadPreparedCut & {
32
- opacityBlocks: Uint32Array;
33
- dirtyLayers: Uint8Array;
34
- fadeKinds: number;
35
- final?: RadPreparedCut;
32
+ opacityBlocks: Uint32Array;
33
+ dirtyLayers: Uint8Array;
34
+ fadeKinds: number;
35
+ final?: RadPreparedCut;
36
36
  };
37
37
  /** One power-of-two texture layer per page, with no shared upload layers. */
38
- export declare function radPageTextureLayout({ pageSize, pageCount, maxArrayLayers, }: Omit<RadPagedSplatsOptions, "numSh">): {
39
- pageSize: number;
40
- pageStride: number;
41
- pageCount: number;
42
- capacity: number;
43
- width: number;
44
- height: number;
45
- depth: number;
38
+ export declare function radPageTextureLayout({
39
+ pageSize,
40
+ pageCount,
41
+ maxArrayLayers,
42
+ }: Omit<RadPagedSplatsOptions, "numSh">): {
43
+ pageSize: number;
44
+ pageStride: number;
45
+ pageCount: number;
46
+ capacity: number;
47
+ width: number;
48
+ height: number;
49
+ depth: number;
46
50
  };
47
51
  /** Fixed RAD page slots; shared IndexedSplats owns rendering and CPU access. */
48
52
  export declare class RadPagedSplats extends IndexedSplats {
49
- readonly pageSize: number;
50
- readonly pageStride: number;
51
- readonly pageCount: number;
52
- private selectedPages;
53
- private finalSelection?;
54
- private fadeProgress;
55
- private fadeKinds;
56
- constructor(options: RadPagedSplatsOptions);
57
- pageStart(slot: number): number;
58
- /** Copies data; callers retain ownership of the packed buffers. */
59
- writePage(slot: number, data: ReorderedSplatResult): void;
60
- /** Remove the displayed cut when its scheduler becomes hidden. */
61
- clearSelection(): boolean;
62
- /** Snapshot only changed pools; never transfer live texture storage. */
63
- snapshotSelection(ranges: RadSelectionRange[]): RadSelectionSnapshot;
64
- /** Internal commit of worker-prepared data; the caller gives up the arrays. */
65
- commitSelection(prepared: RadPreparedSelection): void;
66
- /** Keep record indices, page occupancy and bounds on the same cut. */
67
- private commitCut;
68
- /** A normal streaming fade changes only two group coefficients. */
69
- setFadeProgress(progress: number): boolean;
70
- isPageSelected(slot: number): boolean;
71
- /** Complete opacity changes without removing outgoing records. */
72
- finishFadeIn(): boolean;
73
- /** The worker already removed outgoing records from the final cut. */
74
- finishFade(): boolean;
75
- getByteLength(): number;
76
- dispose(): void;
53
+ readonly pageSize: number;
54
+ readonly pageStride: number;
55
+ readonly pageCount: number;
56
+ private selectedPages;
57
+ private finalSelection?;
58
+ private fadeProgress;
59
+ private fadeKinds;
60
+ constructor(options: RadPagedSplatsOptions);
61
+ pageStart(slot: number): number;
62
+ /** Copies data; callers retain ownership of the packed buffers. */
63
+ writePage(slot: number, data: ReorderedSplatResult): void;
64
+ /** Remove the displayed cut when its scheduler becomes hidden. */
65
+ clearSelection(): boolean;
66
+ /** Snapshot only changed pools; never transfer live texture storage. */
67
+ snapshotSelection(ranges: RadSelectionRange[]): RadSelectionSnapshot;
68
+ /** Internal commit of worker-prepared data; the caller gives up the arrays. */
69
+ commitSelection(prepared: RadPreparedSelection): void;
70
+ /** Keep record indices, page occupancy and bounds on the same cut. */
71
+ private commitCut;
72
+ /** A normal streaming fade changes only two group coefficients. */
73
+ setFadeProgress(progress: number): boolean;
74
+ isPageSelected(slot: number): boolean;
75
+ /** Complete opacity changes without removing outgoing records. */
76
+ finishFadeIn(): boolean;
77
+ /** The worker already removed outgoing records from the final cut. */
78
+ finishFade(): boolean;
79
+ getByteLength(): number;
80
+ dispose(): void;
77
81
  }
78
82
  export {};
@@ -1,26 +1,32 @@
1
- import { Box3 } from 'three';
2
- import { IndexedSplats } from './IndexedSplats.cjs';
3
- import { ReorderedSplatResult } from './defines.cjs';
1
+ import type { Box3 } from "three";
2
+ import { IndexedSplats } from "./IndexedSplats.cjs";
3
+ import type { ReorderedSplatResult } from "./defines.cjs";
4
4
  export declare function sogBatchAllocationSize(count: number): number;
5
5
  export declare function sogBatchTextureLayout(count: number): {
6
- capacity: number;
7
- layerSize: number;
6
+ capacity: number;
7
+ layerSize: number;
8
8
  };
9
9
  /** Independently visible regions in fixed source slots. */
10
10
  export declare class SogRegionSplats extends IndexedSplats {
11
- private readonly activeRanges;
12
- private indicesDirty;
13
- private boundsDirty;
14
- private readonly regionBounds;
15
- constructor(count: number, numSh: number);
16
- write(start: number, data: ReorderedSplatResult): void;
17
- setOpacity(start: number, count: number, opacity: number): {
11
+ private readonly activeRanges;
12
+ private indicesDirty;
13
+ private boundsDirty;
14
+ private readonly regionBounds;
15
+ constructor(count: number, numSh: number);
16
+ write(start: number, data: ReorderedSplatResult): void;
17
+ setOpacity(
18
+ start: number,
19
+ count: number,
20
+ opacity: number,
21
+ ):
22
+ | {
18
23
  visibilityChanged: boolean;
19
- } | undefined;
20
- /** The batch hides the region before releasing its slot. */
21
- release(start: number): void;
22
- getBoundingBox(centersOnly?: boolean, target?: Box3): Box3;
23
- getByteLength(): number;
24
- protected ensureIndices(): void;
25
- dispose(): void;
24
+ }
25
+ | undefined;
26
+ /** The batch hides the region before releasing its slot. */
27
+ release(start: number): void;
28
+ getBoundingBox(centersOnly?: boolean, target?: Box3): Box3;
29
+ getByteLength(): number;
30
+ protected ensureIndices(): void;
31
+ dispose(): void;
26
32
  }
@@ -1,26 +1,32 @@
1
- import { Box3 } from 'three';
2
- import { IndexedSplats } from './IndexedSplats';
3
- import { ReorderedSplatResult } from './defines';
1
+ import type { Box3 } from "three";
2
+ import { IndexedSplats } from "./IndexedSplats.js";
3
+ import type { ReorderedSplatResult } from "./defines.js";
4
4
  export declare function sogBatchAllocationSize(count: number): number;
5
5
  export declare function sogBatchTextureLayout(count: number): {
6
- capacity: number;
7
- layerSize: number;
6
+ capacity: number;
7
+ layerSize: number;
8
8
  };
9
9
  /** Independently visible regions in fixed source slots. */
10
10
  export declare class SogRegionSplats extends IndexedSplats {
11
- private readonly activeRanges;
12
- private indicesDirty;
13
- private boundsDirty;
14
- private readonly regionBounds;
15
- constructor(count: number, numSh: number);
16
- write(start: number, data: ReorderedSplatResult): void;
17
- setOpacity(start: number, count: number, opacity: number): {
11
+ private readonly activeRanges;
12
+ private indicesDirty;
13
+ private boundsDirty;
14
+ private readonly regionBounds;
15
+ constructor(count: number, numSh: number);
16
+ write(start: number, data: ReorderedSplatResult): void;
17
+ setOpacity(
18
+ start: number,
19
+ count: number,
20
+ opacity: number,
21
+ ):
22
+ | {
18
23
  visibilityChanged: boolean;
19
- } | undefined;
20
- /** The batch hides the region before releasing its slot. */
21
- release(start: number): void;
22
- getBoundingBox(centersOnly?: boolean, target?: Box3): Box3;
23
- getByteLength(): number;
24
- protected ensureIndices(): void;
25
- dispose(): void;
24
+ }
25
+ | undefined;
26
+ /** The batch hides the region before releasing its slot. */
27
+ release(start: number): void;
28
+ getBoundingBox(centersOnly?: boolean, target?: Box3): Box3;
29
+ getByteLength(): number;
30
+ protected ensureIndices(): void;
31
+ dispose(): void;
26
32
  }
@@ -1,32 +1,32 @@
1
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
2
  /** Source blocks hold group IDs; a small float32 table holds their opacities. */
3
3
  export declare class SplatOpacityTable {
4
- private blocks;
5
- private readonly blockSize;
6
- private readonly blocksPerLayer;
7
- private readonly blockTexture;
8
- private dirtyLayers;
9
- private dirty;
10
- private values;
11
- private valueTexture;
12
- private valuesDirty;
13
- private readonly ranges;
14
- private readonly freeGroups;
15
- private nextGroup;
16
- constructor(capacity: number, layerSize: number, blockBits: number);
17
- private createTexture;
18
- private createValueTexture;
19
- /** CPU arrays and GPU storage each occupy this many bytes. */
20
- get byteLength(): number;
21
- getOpacity(source: number): number;
22
- setGroupOpacity(group: number, opacity: number): boolean;
23
- private releaseBlock;
24
- /** Validated ranges retain their group while only its coefficient changes. */
25
- setOpacity(start: number, count: number, opacity: number): boolean;
26
- copyBlocks(): Uint32Array<ArrayBuffer>;
27
- /** Adopt a prepared RAD table, retaining any uploads still pending. */
28
- commitBlocks(blocks: Uint32Array, dirtyLayers: Uint8Array): void;
29
- get texture(): THREE.DataArrayTexture;
30
- get opacityTexture(): THREE.DataArrayTexture;
31
- dispose(): void;
4
+ private blocks;
5
+ private readonly blockSize;
6
+ private readonly blocksPerLayer;
7
+ private readonly blockTexture;
8
+ private dirtyLayers;
9
+ private dirty;
10
+ private values;
11
+ private valueTexture;
12
+ private valuesDirty;
13
+ private readonly ranges;
14
+ private readonly freeGroups;
15
+ private nextGroup;
16
+ constructor(capacity: number, layerSize: number, blockBits: number);
17
+ private createTexture;
18
+ private createValueTexture;
19
+ /** CPU arrays and GPU storage each occupy this many bytes. */
20
+ get byteLength(): number;
21
+ getOpacity(source: number): number;
22
+ setGroupOpacity(group: number, opacity: number): boolean;
23
+ private releaseBlock;
24
+ /** Validated ranges retain their group while only its coefficient changes. */
25
+ setOpacity(start: number, count: number, opacity: number): boolean;
26
+ copyBlocks(): Uint32Array<ArrayBuffer>;
27
+ /** Adopt a prepared RAD table, retaining any uploads still pending. */
28
+ commitBlocks(blocks: Uint32Array, dirtyLayers: Uint8Array): void;
29
+ get texture(): THREE.DataArrayTexture;
30
+ get opacityTexture(): THREE.DataArrayTexture;
31
+ dispose(): void;
32
32
  }