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,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
  }
@@ -1,78 +1,108 @@
1
- import { SplatFileResolver, SplatProgressEvent } from '../loaders/loadTypes.cjs';
2
- import { SplatPostDecodeProgram } from '../loaders/postDecode/program.cjs';
3
- import { ReorderedSplatResult, SplatFileType, SplatResult } from './defines.cjs';
4
- import { RaycastRangeCallback, SplatRaycastQuery } from './raycast.cjs';
5
- import { decodeSplat } from './unpack.cjs';
6
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type {
3
+ SplatFileResolver,
4
+ SplatProgressEvent,
5
+ } from "../loaders/loadTypes.cjs";
6
+ import type { SplatPostDecodeProgram } from "../loaders/postDecode/program.cjs";
7
+ import type {
8
+ ReorderedSplatResult,
9
+ SplatFileType,
10
+ SplatResult,
11
+ } from "./defines.cjs";
12
+ import type { RaycastRangeCallback, SplatRaycastQuery } from "./raycast.cjs";
13
+ import type { decodeSplat } from "./unpack.cjs";
7
14
  type DecodedSplat = ReturnType<typeof decodeSplat>;
8
15
  type DecodedSplatWithSh = DecodedSplat & {
9
- sh: THREE.Color[];
16
+ sh: THREE.Color[];
10
17
  };
11
18
  export type SplatsOptions = {
12
- url?: string;
13
- file?: Blob;
14
- fileBytes?: Uint8Array | ArrayBuffer;
15
- fileType?: SplatFileType;
16
- fileName?: string;
17
- /** Resolve external SOG images or RAD chunks by metadata filename. */
18
- resolveFile?: SplatFileResolver;
19
- /** Declarative per-splat transform executed in the decode worker. */
20
- postDecode?: SplatPostDecodeProgram;
21
- onProgress?: (event: SplatProgressEvent) => void;
19
+ url?: string;
20
+ file?: Blob;
21
+ fileBytes?: Uint8Array | ArrayBuffer;
22
+ fileType?: SplatFileType;
23
+ fileName?: string;
24
+ /** Resolve external SOG images or RAD chunks by metadata filename. */
25
+ resolveFile?: SplatFileResolver;
26
+ /** Declarative per-splat transform executed in the decode worker. */
27
+ postDecode?: SplatPostDecodeProgram;
28
+ onProgress?: (event: SplatProgressEvent) => void;
22
29
  };
23
30
  /** An encoded splat source with two 16-byte texture records per splat. */
24
31
  export declare class Splats {
25
- maxSplats: number;
26
- numSplats: number;
27
- private splatArrays;
28
- private sortCenters?;
29
- protected sourceIds: Uint32Array;
30
- protected centerOnlyBounds: Float32Array;
31
- protected bounds: Float32Array;
32
- private spatialBounds;
33
- private extra;
34
- initialized: Promise<Splats>;
35
- isInitialized: boolean;
36
- needsUpdate: boolean;
37
- private textures;
38
- private shTextures;
39
- private loadController?;
40
- constructor(options?: SplatsOptions);
41
- initialize(options?: SplatsOptions): Promise<Splats>;
42
- private commitState;
43
- /** @internal Adopt a loader result with precomputed bounds. */
44
- initializeDecoded(data: ReorderedSplatResult): void;
45
- private asyncInitialize;
46
- dispose(): void;
47
- private disposeTextures;
48
- getNumSplats(): number;
49
- /** @internal Copy cached local bounds into the target box. */
50
- getBoundingBox(centersOnly?: boolean, target?: THREE.Box3): THREE.Box3;
51
- getNumSh(): 0 | 1 | 2 | 3;
52
- /** Current retained bytes for encoded Splat, sort-center, and SH arrays. */
53
- getByteLength(): number;
54
- /** @internal Consume owned arrays for transfer to a streaming worker. */
55
- takeData(): SplatResult & {
56
- sourceIds: Uint32Array;
57
- };
58
- /** Original source ID, retained across reordering and range extraction. */
59
- getSourceIndex(index: number): number;
60
- getSplat(index: number): DecodedSplatWithSh;
61
- getSplat(index: number, includeSh: true): DecodedSplatWithSh;
62
- getSplat(index: number, includeSh: false): DecodedSplat;
63
- getSplat(index: number, includeSh: boolean): DecodedSplat;
64
- /** @internal Consecutive visible records surviving spatial block picking. */
65
- forEachRaycastRange(query: SplatRaycastQuery, callback: RaycastRangeCallback): void;
66
- copySplatRecords(firstTarget: Uint32Array, secondTarget: Uint32Array, sourceStart: number, count: number): void;
67
- copySortCenters(target: Float32Array, targetStart: number, count: number): void;
68
- private getSortCenters;
69
- forEachCenter(callback: (index: number, x: number, y: number, z: number) => void): void;
70
- forEachSplat(callback: (index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => void): void;
71
- setTextureUniforms(uniforms: Record<string, THREE.IUniform>): void;
72
- private getSplatTextures;
73
- private disposeMainTextures;
74
- private getShTextures;
75
- private ensureShTexture;
76
- static emptyTexture: THREE.DataArrayTexture;
32
+ maxSplats: number;
33
+ numSplats: number;
34
+ private splatArrays;
35
+ private sortCenters?;
36
+ protected sourceIds: Uint32Array;
37
+ protected centerOnlyBounds: Float32Array;
38
+ protected bounds: Float32Array;
39
+ private spatialBounds;
40
+ private extra;
41
+ initialized: Promise<Splats>;
42
+ isInitialized: boolean;
43
+ needsUpdate: boolean;
44
+ private textures;
45
+ private shTextures;
46
+ private loadController?;
47
+ constructor(options?: SplatsOptions);
48
+ initialize(options?: SplatsOptions): Promise<Splats>;
49
+ private commitState;
50
+ /** @internal Adopt a loader result with precomputed bounds. */
51
+ initializeDecoded(data: ReorderedSplatResult): void;
52
+ private asyncInitialize;
53
+ dispose(): void;
54
+ private disposeTextures;
55
+ getNumSplats(): number;
56
+ /** @internal Copy cached local bounds into the target box. */
57
+ getBoundingBox(centersOnly?: boolean, target?: THREE.Box3): THREE.Box3;
58
+ getNumSh(): 1 | 2 | 0 | 3;
59
+ /** Current retained bytes for encoded Splat, sort-center, and SH arrays. */
60
+ getByteLength(): number;
61
+ /** @internal Consume owned arrays for transfer to a streaming worker. */
62
+ takeData(): SplatResult & {
63
+ sourceIds: Uint32Array;
64
+ };
65
+ /** Original source ID, retained across reordering and range extraction. */
66
+ getSourceIndex(index: number): number;
67
+ getSplat(index: number): DecodedSplatWithSh;
68
+ getSplat(index: number, includeSh: true): DecodedSplatWithSh;
69
+ getSplat(index: number, includeSh: false): DecodedSplat;
70
+ getSplat(index: number, includeSh: boolean): DecodedSplat;
71
+ /** @internal Consecutive visible records surviving spatial block picking. */
72
+ forEachRaycastRange(
73
+ query: SplatRaycastQuery,
74
+ callback: RaycastRangeCallback,
75
+ ): void;
76
+ copySplatRecords(
77
+ firstTarget: Uint32Array,
78
+ secondTarget: Uint32Array,
79
+ sourceStart: number,
80
+ count: number,
81
+ ): void;
82
+ copySortCenters(
83
+ target: Float32Array,
84
+ targetStart: number,
85
+ count: number,
86
+ ): void;
87
+ private getSortCenters;
88
+ forEachCenter(
89
+ callback: (index: number, x: number, y: number, z: number) => void,
90
+ ): void;
91
+ forEachSplat(
92
+ callback: (
93
+ index: number,
94
+ center: THREE.Vector3,
95
+ scales: THREE.Vector3,
96
+ quaternion: THREE.Quaternion,
97
+ opacity: number,
98
+ color: THREE.Color,
99
+ ) => void,
100
+ ): void;
101
+ setTextureUniforms(uniforms: Record<string, THREE.IUniform>): void;
102
+ private getSplatTextures;
103
+ private disposeMainTextures;
104
+ private getShTextures;
105
+ private ensureShTexture;
106
+ static emptyTexture: THREE.DataArrayTexture;
77
107
  }
78
108
  export {};
@@ -1,78 +1,108 @@
1
- import { SplatFileResolver, SplatProgressEvent } from '../loaders/loadTypes';
2
- import { SplatPostDecodeProgram } from '../loaders/postDecode/program';
3
- import { ReorderedSplatResult, SplatFileType, 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 {
3
+ SplatFileResolver,
4
+ SplatProgressEvent,
5
+ } from "../loaders/loadTypes.js";
6
+ import type { SplatPostDecodeProgram } from "../loaders/postDecode/program.js";
7
+ import type {
8
+ ReorderedSplatResult,
9
+ SplatFileType,
10
+ SplatResult,
11
+ } from "./defines.js";
12
+ import type { RaycastRangeCallback, SplatRaycastQuery } from "./raycast.js";
13
+ import type { decodeSplat } from "./unpack.js";
7
14
  type DecodedSplat = ReturnType<typeof decodeSplat>;
8
15
  type DecodedSplatWithSh = DecodedSplat & {
9
- sh: THREE.Color[];
16
+ sh: THREE.Color[];
10
17
  };
11
18
  export type SplatsOptions = {
12
- url?: string;
13
- file?: Blob;
14
- fileBytes?: Uint8Array | ArrayBuffer;
15
- fileType?: SplatFileType;
16
- fileName?: string;
17
- /** Resolve external SOG images or RAD chunks by metadata filename. */
18
- resolveFile?: SplatFileResolver;
19
- /** Declarative per-splat transform executed in the decode worker. */
20
- postDecode?: SplatPostDecodeProgram;
21
- onProgress?: (event: SplatProgressEvent) => void;
19
+ url?: string;
20
+ file?: Blob;
21
+ fileBytes?: Uint8Array | ArrayBuffer;
22
+ fileType?: SplatFileType;
23
+ fileName?: string;
24
+ /** Resolve external SOG images or RAD chunks by metadata filename. */
25
+ resolveFile?: SplatFileResolver;
26
+ /** Declarative per-splat transform executed in the decode worker. */
27
+ postDecode?: SplatPostDecodeProgram;
28
+ onProgress?: (event: SplatProgressEvent) => void;
22
29
  };
23
30
  /** An encoded splat source with two 16-byte texture records per splat. */
24
31
  export declare class Splats {
25
- maxSplats: number;
26
- numSplats: number;
27
- private splatArrays;
28
- private sortCenters?;
29
- protected sourceIds: Uint32Array;
30
- protected centerOnlyBounds: Float32Array;
31
- protected bounds: Float32Array;
32
- private spatialBounds;
33
- private extra;
34
- initialized: Promise<Splats>;
35
- isInitialized: boolean;
36
- needsUpdate: boolean;
37
- private textures;
38
- private shTextures;
39
- private loadController?;
40
- constructor(options?: SplatsOptions);
41
- initialize(options?: SplatsOptions): Promise<Splats>;
42
- private commitState;
43
- /** @internal Adopt a loader result with precomputed bounds. */
44
- initializeDecoded(data: ReorderedSplatResult): void;
45
- private asyncInitialize;
46
- dispose(): void;
47
- private disposeTextures;
48
- getNumSplats(): number;
49
- /** @internal Copy cached local bounds into the target box. */
50
- getBoundingBox(centersOnly?: boolean, target?: THREE.Box3): THREE.Box3;
51
- getNumSh(): 0 | 1 | 2 | 3;
52
- /** Current retained bytes for encoded Splat, sort-center, and SH arrays. */
53
- getByteLength(): number;
54
- /** @internal Consume owned arrays for transfer to a streaming worker. */
55
- takeData(): SplatResult & {
56
- sourceIds: Uint32Array;
57
- };
58
- /** Original source ID, retained across reordering and range extraction. */
59
- getSourceIndex(index: number): number;
60
- getSplat(index: number): DecodedSplatWithSh;
61
- getSplat(index: number, includeSh: true): DecodedSplatWithSh;
62
- getSplat(index: number, includeSh: false): DecodedSplat;
63
- getSplat(index: number, includeSh: boolean): DecodedSplat;
64
- /** @internal Consecutive visible records surviving spatial block picking. */
65
- forEachRaycastRange(query: SplatRaycastQuery, callback: RaycastRangeCallback): void;
66
- copySplatRecords(firstTarget: Uint32Array, secondTarget: Uint32Array, sourceStart: number, count: number): void;
67
- copySortCenters(target: Float32Array, targetStart: number, count: number): void;
68
- private getSortCenters;
69
- forEachCenter(callback: (index: number, x: number, y: number, z: number) => void): void;
70
- forEachSplat(callback: (index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => void): void;
71
- setTextureUniforms(uniforms: Record<string, THREE.IUniform>): void;
72
- private getSplatTextures;
73
- private disposeMainTextures;
74
- private getShTextures;
75
- private ensureShTexture;
76
- static emptyTexture: THREE.DataArrayTexture;
32
+ maxSplats: number;
33
+ numSplats: number;
34
+ private splatArrays;
35
+ private sortCenters?;
36
+ protected sourceIds: Uint32Array;
37
+ protected centerOnlyBounds: Float32Array;
38
+ protected bounds: Float32Array;
39
+ private spatialBounds;
40
+ private extra;
41
+ initialized: Promise<Splats>;
42
+ isInitialized: boolean;
43
+ needsUpdate: boolean;
44
+ private textures;
45
+ private shTextures;
46
+ private loadController?;
47
+ constructor(options?: SplatsOptions);
48
+ initialize(options?: SplatsOptions): Promise<Splats>;
49
+ private commitState;
50
+ /** @internal Adopt a loader result with precomputed bounds. */
51
+ initializeDecoded(data: ReorderedSplatResult): void;
52
+ private asyncInitialize;
53
+ dispose(): void;
54
+ private disposeTextures;
55
+ getNumSplats(): number;
56
+ /** @internal Copy cached local bounds into the target box. */
57
+ getBoundingBox(centersOnly?: boolean, target?: THREE.Box3): THREE.Box3;
58
+ getNumSh(): 1 | 2 | 0 | 3;
59
+ /** Current retained bytes for encoded Splat, sort-center, and SH arrays. */
60
+ getByteLength(): number;
61
+ /** @internal Consume owned arrays for transfer to a streaming worker. */
62
+ takeData(): SplatResult & {
63
+ sourceIds: Uint32Array;
64
+ };
65
+ /** Original source ID, retained across reordering and range extraction. */
66
+ getSourceIndex(index: number): number;
67
+ getSplat(index: number): DecodedSplatWithSh;
68
+ getSplat(index: number, includeSh: true): DecodedSplatWithSh;
69
+ getSplat(index: number, includeSh: false): DecodedSplat;
70
+ getSplat(index: number, includeSh: boolean): DecodedSplat;
71
+ /** @internal Consecutive visible records surviving spatial block picking. */
72
+ forEachRaycastRange(
73
+ query: SplatRaycastQuery,
74
+ callback: RaycastRangeCallback,
75
+ ): void;
76
+ copySplatRecords(
77
+ firstTarget: Uint32Array,
78
+ secondTarget: Uint32Array,
79
+ sourceStart: number,
80
+ count: number,
81
+ ): void;
82
+ copySortCenters(
83
+ target: Float32Array,
84
+ targetStart: number,
85
+ count: number,
86
+ ): void;
87
+ private getSortCenters;
88
+ forEachCenter(
89
+ callback: (index: number, x: number, y: number, z: number) => void,
90
+ ): void;
91
+ forEachSplat(
92
+ callback: (
93
+ index: number,
94
+ center: THREE.Vector3,
95
+ scales: THREE.Vector3,
96
+ quaternion: THREE.Quaternion,
97
+ opacity: number,
98
+ color: THREE.Color,
99
+ ) => void,
100
+ ): void;
101
+ setTextureUniforms(uniforms: Record<string, THREE.IUniform>): void;
102
+ private getSplatTextures;
103
+ private disposeMainTextures;
104
+ private getShTextures;
105
+ private ensureShTexture;
106
+ static emptyTexture: THREE.DataArrayTexture;
77
107
  }
78
108
  export {};
@@ -6,37 +6,37 @@ export declare const SPLAT_TEX_MIN_HEIGHT = 1;
6
6
  /** Valid block shifts include zero (one opacity per Splat). */
7
7
  export declare const SPLAT_BLOCKS_DISABLED = 32;
8
8
  export declare enum SplatFileType {
9
- PLY = "ply",
10
- SPZ = "spz",
11
- SOG = "sog",
12
- RAD = "rad"
9
+ PLY = "ply",
10
+ SPZ = "spz",
11
+ SOG = "sog",
12
+ RAD = "rad",
13
13
  }
14
14
  export type SplatExtra = {
15
- sh1?: Uint32Array;
16
- sh2?: Uint32Array;
17
- sh3a?: Uint32Array;
18
- sh3b?: Uint32Array;
15
+ sh1?: Uint32Array;
16
+ sh2?: Uint32Array;
17
+ sh3a?: Uint32Array;
18
+ sh3b?: Uint32Array;
19
19
  };
20
20
  /** Morton storage records per cached spatial bounds block. */
21
21
  export declare const SPLAT_BOUNDS_BLOCK_SIZE = 256;
22
22
  export type SplatResult = {
23
- numSplats: number;
24
- splatArrays: [Uint32Array, Uint32Array];
25
- sortCenters?: Float32Array;
26
- /** Storage index to original source index; absent for identity order. */
27
- sourceIds?: Uint32Array;
28
- /** Local finite center bounds: min XYZ followed by max XYZ. */
29
- centerOnlyBoundingBox?: Float32Array;
30
- /** Local scale/rotation bounds at source alpha 0.01, including kernel shape. */
31
- boundingBox?: Float32Array;
32
- /** Per 256 records: min/max XYZ at source alpha 0.01, including scale, rotation and shape. */
33
- spatialBounds?: Float32Array;
34
- extra: SplatExtra;
23
+ numSplats: number;
24
+ splatArrays: [Uint32Array, Uint32Array];
25
+ sortCenters?: Float32Array;
26
+ /** Storage index to original source index; absent for identity order. */
27
+ sourceIds?: Uint32Array;
28
+ /** Local finite center bounds: min XYZ followed by max XYZ. */
29
+ centerOnlyBoundingBox?: Float32Array;
30
+ /** Local scale/rotation bounds at source alpha 0.01, including kernel shape. */
31
+ boundingBox?: Float32Array;
32
+ /** Per 256 records: min/max XYZ at source alpha 0.01, including scale, rotation and shape. */
33
+ spatialBounds?: Float32Array;
34
+ extra: SplatExtra;
35
35
  };
36
36
  /** Spatially reordered records with source IDs and cached local bounds. */
37
37
  export type ReorderedSplatResult = SplatResult & {
38
- sourceIds: Uint32Array;
39
- centerOnlyBoundingBox: Float32Array;
40
- boundingBox: Float32Array;
41
- spatialBounds: Float32Array;
38
+ sourceIds: Uint32Array;
39
+ centerOnlyBoundingBox: Float32Array;
40
+ boundingBox: Float32Array;
41
+ spatialBounds: Float32Array;
42
42
  };
@@ -6,37 +6,37 @@ export declare const SPLAT_TEX_MIN_HEIGHT = 1;
6
6
  /** Valid block shifts include zero (one opacity per Splat). */
7
7
  export declare const SPLAT_BLOCKS_DISABLED = 32;
8
8
  export declare enum SplatFileType {
9
- PLY = "ply",
10
- SPZ = "spz",
11
- SOG = "sog",
12
- RAD = "rad"
9
+ PLY = "ply",
10
+ SPZ = "spz",
11
+ SOG = "sog",
12
+ RAD = "rad",
13
13
  }
14
14
  export type SplatExtra = {
15
- sh1?: Uint32Array;
16
- sh2?: Uint32Array;
17
- sh3a?: Uint32Array;
18
- sh3b?: Uint32Array;
15
+ sh1?: Uint32Array;
16
+ sh2?: Uint32Array;
17
+ sh3a?: Uint32Array;
18
+ sh3b?: Uint32Array;
19
19
  };
20
20
  /** Morton storage records per cached spatial bounds block. */
21
21
  export declare const SPLAT_BOUNDS_BLOCK_SIZE = 256;
22
22
  export type SplatResult = {
23
- numSplats: number;
24
- splatArrays: [Uint32Array, Uint32Array];
25
- sortCenters?: Float32Array;
26
- /** Storage index to original source index; absent for identity order. */
27
- sourceIds?: Uint32Array;
28
- /** Local finite center bounds: min XYZ followed by max XYZ. */
29
- centerOnlyBoundingBox?: Float32Array;
30
- /** Local scale/rotation bounds at source alpha 0.01, including kernel shape. */
31
- boundingBox?: Float32Array;
32
- /** Per 256 records: min/max XYZ at source alpha 0.01, including scale, rotation and shape. */
33
- spatialBounds?: Float32Array;
34
- extra: SplatExtra;
23
+ numSplats: number;
24
+ splatArrays: [Uint32Array, Uint32Array];
25
+ sortCenters?: Float32Array;
26
+ /** Storage index to original source index; absent for identity order. */
27
+ sourceIds?: Uint32Array;
28
+ /** Local finite center bounds: min XYZ followed by max XYZ. */
29
+ centerOnlyBoundingBox?: Float32Array;
30
+ /** Local scale/rotation bounds at source alpha 0.01, including kernel shape. */
31
+ boundingBox?: Float32Array;
32
+ /** Per 256 records: min/max XYZ at source alpha 0.01, including scale, rotation and shape. */
33
+ spatialBounds?: Float32Array;
34
+ extra: SplatExtra;
35
35
  };
36
36
  /** Spatially reordered records with source IDs and cached local bounds. */
37
37
  export type ReorderedSplatResult = SplatResult & {
38
- sourceIds: Uint32Array;
39
- centerOnlyBoundingBox: Float32Array;
40
- boundingBox: Float32Array;
41
- spatialBounds: Float32Array;
38
+ sourceIds: Uint32Array;
39
+ centerOnlyBoundingBox: Float32Array;
40
+ boundingBox: Float32Array;
41
+ spatialBounds: Float32Array;
42
42
  };
@@ -1,13 +1,17 @@
1
- import { Vector3 } from 'three';
1
+ import type { Vector3 } from "three";
2
2
  /** Picking uses the same f32 ray and world-distance parameter as WASM. */
3
3
  export declare class SplatRaycastQuery {
4
- private readonly origin;
5
- private readonly direction;
6
- private readonly near;
7
- private readonly far;
8
- constructor(origin: Vector3, direction: Vector3, near: number, far: number);
9
- /** Visit consecutive candidate records in one Morton-ordered chunk. */
10
- forEachRange(bounds: Float32Array, count: number, callback: RaycastRangeCallback): void;
11
- private intersects;
4
+ private readonly origin;
5
+ private readonly direction;
6
+ private readonly near;
7
+ private readonly far;
8
+ constructor(origin: Vector3, direction: Vector3, near: number, far: number);
9
+ /** Visit consecutive candidate records in one Morton-ordered chunk. */
10
+ forEachRange(
11
+ bounds: Float32Array,
12
+ count: number,
13
+ callback: RaycastRangeCallback,
14
+ ): void;
15
+ private intersects;
12
16
  }
13
17
  export type RaycastRangeCallback = (start: number, count: number) => void;
@@ -1,13 +1,17 @@
1
- import { Vector3 } from 'three';
1
+ import type { Vector3 } from "three";
2
2
  /** Picking uses the same f32 ray and world-distance parameter as WASM. */
3
3
  export declare class SplatRaycastQuery {
4
- private readonly origin;
5
- private readonly direction;
6
- private readonly near;
7
- private readonly far;
8
- constructor(origin: Vector3, direction: Vector3, near: number, far: number);
9
- /** Visit consecutive candidate records in one Morton-ordered chunk. */
10
- forEachRange(bounds: Float32Array, count: number, callback: RaycastRangeCallback): void;
11
- private intersects;
4
+ private readonly origin;
5
+ private readonly direction;
6
+ private readonly near;
7
+ private readonly far;
8
+ constructor(origin: Vector3, direction: Vector3, near: number, far: number);
9
+ /** Visit consecutive candidate records in one Morton-ordered chunk. */
10
+ forEachRange(
11
+ bounds: Float32Array,
12
+ count: number,
13
+ callback: RaycastRangeCallback,
14
+ ): void;
15
+ private intersects;
12
16
  }
13
17
  export type RaycastRangeCallback = (start: number, count: number) => void;
@@ -1,9 +1,33 @@
1
1
  export declare function decodeSplatOpacity(word: number): number;
2
2
  export declare function encodeSplatOpacity(opacity: number): number;
3
3
  type CodecOutput = Float32Array | number[];
4
- export declare function encodeShRgb(red: number, green: number, blue: number): number;
5
- export declare function decodeShRgbToArray(word: number, output: CodecOutput, base?: number, stride?: number): void;
6
- export declare function decodeQuatOctXy1010R12ToArray(word: number, output: CodecOutput, base?: number, stride?: number): void;
7
- export declare function encodeQuatOctXy1010R12(qx: number, qy: number, qz: number, qw: number): number;
8
- export declare function tryEncodeQuatOctXy1010R12(qx: number, qy: number, qz: number, qw: number): number | undefined;
4
+ export declare function encodeShRgb(
5
+ red: number,
6
+ green: number,
7
+ blue: number,
8
+ ): number;
9
+ export declare function decodeShRgbToArray(
10
+ word: number,
11
+ output: CodecOutput,
12
+ base?: number,
13
+ stride?: number,
14
+ ): void;
15
+ export declare function decodeQuatOctXy1010R12ToArray(
16
+ word: number,
17
+ output: CodecOutput,
18
+ base?: number,
19
+ stride?: number,
20
+ ): void;
21
+ export declare function encodeQuatOctXy1010R12(
22
+ qx: number,
23
+ qy: number,
24
+ qz: number,
25
+ qw: number,
26
+ ): number;
27
+ export declare function tryEncodeQuatOctXy1010R12(
28
+ qx: number,
29
+ qy: number,
30
+ qz: number,
31
+ qw: number,
32
+ ): number | undefined;
9
33
  export {};