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,66 +1,67 @@
1
- import { GaussianSplatRenderer } from '../rendering/GaussianSplatRenderer.cjs';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { GaussianSplatRenderer } from "../rendering/GaussianSplatRenderer.cjs";
3
+ import type { GaussianSplatCompatibleRenderer } from "../rendering/rendererUtils.cjs";
3
4
  export type SplatCaptureTargetOptions = {
4
- width: number;
5
- height: number;
6
- doubleBuffer?: boolean;
7
- superXY?: number;
5
+ width: number;
6
+ height: number;
7
+ doubleBuffer?: boolean;
8
+ superXY?: number;
8
9
  } & Omit<THREE.RenderTargetOptions, "stencilBuffer">;
9
10
  export interface SplatCaptureOptions {
10
- splatRenderer: GaussianSplatRenderer;
11
- target?: SplatCaptureTargetOptions;
11
+ splatRenderer: GaussianSplatRenderer;
12
+ target?: SplatCaptureTargetOptions;
12
13
  }
13
14
  export interface SplatCaptureCubeOptions {
14
- scene: THREE.Scene;
15
- worldCenter: THREE.Vector3;
16
- size?: number;
17
- near?: number;
18
- far?: number;
19
- hideObjects?: THREE.Object3D[];
20
- filter?: boolean;
15
+ scene: THREE.Scene;
16
+ worldCenter: THREE.Vector3;
17
+ size?: number;
18
+ near?: number;
19
+ far?: number;
20
+ hideObjects?: THREE.Object3D[];
21
+ filter?: boolean;
21
22
  }
22
23
  export type SplatCaptureEnvOptions = Omit<SplatCaptureCubeOptions, "filter">;
23
24
  type SceneView = {
24
- scene: THREE.Scene;
25
- camera: THREE.Camera;
25
+ scene: THREE.Scene;
26
+ camera: THREE.Camera;
26
27
  };
27
28
  /** Optional offscreen capture and environment maps, independent of core rendering. */
28
29
  export declare class SplatCapture {
29
- readonly splatRenderer: GaussianSplatRenderer;
30
- readonly superXY: number;
31
- target?: THREE.RenderTarget;
32
- backTarget?: THREE.RenderTarget;
33
- superPixels?: Uint8Array;
34
- targetPixels?: Uint8Array;
35
- private disposed;
36
- private readonly captureRenderer;
37
- private readonly capturePass;
38
- private pending;
39
- private readonly cubeRenders;
40
- private lastCube;
41
- private pmrem;
42
- constructor({ splatRenderer, target }: SplatCaptureOptions);
43
- private initializeTarget;
44
- get renderer(): import('../rendering/rendererUtils.cjs').GaussianSplatCompatibleRenderer;
45
- private get stencilBuffer();
46
- private assertActive;
47
- private enqueue;
48
- private renderCapture;
49
- /** Snapshots the camera now; the capture may wait for earlier ones. */
50
- private targetCapture;
51
- renderTarget(view: SceneView): Promise<THREE.RenderTarget>;
52
- /** Reuses the returned buffer; copy it if a later read must not overwrite it. */
53
- readTarget(): Promise<Uint8Array>;
54
- renderReadTarget(view: SceneView): Promise<Uint8Array>;
55
- private renderCube;
56
- /** Validates and snapshots the center now; the capture may wait for earlier ones. */
57
- private cubeCapture;
58
- renderCubeMap(options: SplatCaptureCubeOptions): Promise<THREE.CubeTexture>;
59
- /** Faces of the latest cube capture, in the WebGL layout on every backend. */
60
- readCubeTargets(): Promise<Uint8Array[]>;
61
- /** The caller owns the result; texture.dispose() also releases its render target. */
62
- renderEnvMap(options: SplatCaptureEnvOptions): Promise<THREE.Texture>;
63
- recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture): void;
64
- dispose(): void;
30
+ readonly splatRenderer: GaussianSplatRenderer;
31
+ readonly superXY: number;
32
+ target?: THREE.RenderTarget;
33
+ backTarget?: THREE.RenderTarget;
34
+ superPixels?: Uint8Array;
35
+ targetPixels?: Uint8Array;
36
+ private disposed;
37
+ private readonly captureRenderer;
38
+ private readonly capturePass;
39
+ private pending;
40
+ private readonly cubeRenders;
41
+ private lastCube;
42
+ private pmrem;
43
+ constructor({ splatRenderer, target }: SplatCaptureOptions);
44
+ private initializeTarget;
45
+ get renderer(): GaussianSplatCompatibleRenderer;
46
+ private get stencilBuffer();
47
+ private assertActive;
48
+ private enqueue;
49
+ private renderCapture;
50
+ /** Snapshots the camera now; the capture may wait for earlier ones. */
51
+ private targetCapture;
52
+ renderTarget(view: SceneView): Promise<THREE.RenderTarget>;
53
+ /** Reuses the returned buffer; copy it if a later read must not overwrite it. */
54
+ readTarget(): Promise<Uint8Array>;
55
+ renderReadTarget(view: SceneView): Promise<Uint8Array>;
56
+ private renderCube;
57
+ /** Validates and snapshots the center now; the capture may wait for earlier ones. */
58
+ private cubeCapture;
59
+ renderCubeMap(options: SplatCaptureCubeOptions): Promise<THREE.CubeTexture>;
60
+ /** Faces of the latest cube capture, in the WebGL layout on every backend. */
61
+ readCubeTargets(): Promise<Uint8Array[]>;
62
+ /** The caller owns the result; texture.dispose() also releases its render target. */
63
+ renderEnvMap(options: SplatCaptureEnvOptions): Promise<THREE.Texture>;
64
+ recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture): void;
65
+ dispose(): void;
65
66
  }
66
67
  export {};
@@ -1,66 +1,67 @@
1
- import { GaussianSplatRenderer } from '../rendering/GaussianSplatRenderer';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { GaussianSplatRenderer } from "../rendering/GaussianSplatRenderer.js";
3
+ import type { GaussianSplatCompatibleRenderer } from "../rendering/rendererUtils.js";
3
4
  export type SplatCaptureTargetOptions = {
4
- width: number;
5
- height: number;
6
- doubleBuffer?: boolean;
7
- superXY?: number;
5
+ width: number;
6
+ height: number;
7
+ doubleBuffer?: boolean;
8
+ superXY?: number;
8
9
  } & Omit<THREE.RenderTargetOptions, "stencilBuffer">;
9
10
  export interface SplatCaptureOptions {
10
- splatRenderer: GaussianSplatRenderer;
11
- target?: SplatCaptureTargetOptions;
11
+ splatRenderer: GaussianSplatRenderer;
12
+ target?: SplatCaptureTargetOptions;
12
13
  }
13
14
  export interface SplatCaptureCubeOptions {
14
- scene: THREE.Scene;
15
- worldCenter: THREE.Vector3;
16
- size?: number;
17
- near?: number;
18
- far?: number;
19
- hideObjects?: THREE.Object3D[];
20
- filter?: boolean;
15
+ scene: THREE.Scene;
16
+ worldCenter: THREE.Vector3;
17
+ size?: number;
18
+ near?: number;
19
+ far?: number;
20
+ hideObjects?: THREE.Object3D[];
21
+ filter?: boolean;
21
22
  }
22
23
  export type SplatCaptureEnvOptions = Omit<SplatCaptureCubeOptions, "filter">;
23
24
  type SceneView = {
24
- scene: THREE.Scene;
25
- camera: THREE.Camera;
25
+ scene: THREE.Scene;
26
+ camera: THREE.Camera;
26
27
  };
27
28
  /** Optional offscreen capture and environment maps, independent of core rendering. */
28
29
  export declare class SplatCapture {
29
- readonly splatRenderer: GaussianSplatRenderer;
30
- readonly superXY: number;
31
- target?: THREE.RenderTarget;
32
- backTarget?: THREE.RenderTarget;
33
- superPixels?: Uint8Array;
34
- targetPixels?: Uint8Array;
35
- private disposed;
36
- private readonly captureRenderer;
37
- private readonly capturePass;
38
- private pending;
39
- private readonly cubeRenders;
40
- private lastCube;
41
- private pmrem;
42
- constructor({ splatRenderer, target }: SplatCaptureOptions);
43
- private initializeTarget;
44
- get renderer(): import('../rendering/rendererUtils').GaussianSplatCompatibleRenderer;
45
- private get stencilBuffer();
46
- private assertActive;
47
- private enqueue;
48
- private renderCapture;
49
- /** Snapshots the camera now; the capture may wait for earlier ones. */
50
- private targetCapture;
51
- renderTarget(view: SceneView): Promise<THREE.RenderTarget>;
52
- /** Reuses the returned buffer; copy it if a later read must not overwrite it. */
53
- readTarget(): Promise<Uint8Array>;
54
- renderReadTarget(view: SceneView): Promise<Uint8Array>;
55
- private renderCube;
56
- /** Validates and snapshots the center now; the capture may wait for earlier ones. */
57
- private cubeCapture;
58
- renderCubeMap(options: SplatCaptureCubeOptions): Promise<THREE.CubeTexture>;
59
- /** Faces of the latest cube capture, in the WebGL layout on every backend. */
60
- readCubeTargets(): Promise<Uint8Array[]>;
61
- /** The caller owns the result; texture.dispose() also releases its render target. */
62
- renderEnvMap(options: SplatCaptureEnvOptions): Promise<THREE.Texture>;
63
- recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture): void;
64
- dispose(): void;
30
+ readonly splatRenderer: GaussianSplatRenderer;
31
+ readonly superXY: number;
32
+ target?: THREE.RenderTarget;
33
+ backTarget?: THREE.RenderTarget;
34
+ superPixels?: Uint8Array;
35
+ targetPixels?: Uint8Array;
36
+ private disposed;
37
+ private readonly captureRenderer;
38
+ private readonly capturePass;
39
+ private pending;
40
+ private readonly cubeRenders;
41
+ private lastCube;
42
+ private pmrem;
43
+ constructor({ splatRenderer, target }: SplatCaptureOptions);
44
+ private initializeTarget;
45
+ get renderer(): GaussianSplatCompatibleRenderer;
46
+ private get stencilBuffer();
47
+ private assertActive;
48
+ private enqueue;
49
+ private renderCapture;
50
+ /** Snapshots the camera now; the capture may wait for earlier ones. */
51
+ private targetCapture;
52
+ renderTarget(view: SceneView): Promise<THREE.RenderTarget>;
53
+ /** Reuses the returned buffer; copy it if a later read must not overwrite it. */
54
+ readTarget(): Promise<Uint8Array>;
55
+ renderReadTarget(view: SceneView): Promise<Uint8Array>;
56
+ private renderCube;
57
+ /** Validates and snapshots the center now; the capture may wait for earlier ones. */
58
+ private cubeCapture;
59
+ renderCubeMap(options: SplatCaptureCubeOptions): Promise<THREE.CubeTexture>;
60
+ /** Faces of the latest cube capture, in the WebGL layout on every backend. */
61
+ readCubeTargets(): Promise<Uint8Array[]>;
62
+ /** The caller owns the result; texture.dispose() also releases its render target. */
63
+ renderEnvMap(options: SplatCaptureEnvOptions): Promise<THREE.Texture>;
64
+ recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture): void;
65
+ dispose(): void;
65
66
  }
66
67
  export {};
@@ -1,13 +1,13 @@
1
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
2
  /** Blend in output space like the canvas, then convert to texture storage. */
3
3
  export declare class WebGLCapture {
4
- private readonly renderer;
5
- private readonly depthTexture;
6
- private readonly target;
7
- private readonly camera;
8
- private readonly material;
9
- private readonly quad;
10
- constructor(renderer: THREE.WebGLRenderer);
11
- render(scene: THREE.Scene, camera: THREE.Camera): void;
12
- dispose(): void;
4
+ private readonly renderer;
5
+ private readonly depthTexture;
6
+ private readonly target;
7
+ private readonly camera;
8
+ private readonly material;
9
+ private readonly quad;
10
+ constructor(renderer: THREE.WebGLRenderer);
11
+ render(scene: THREE.Scene, camera: THREE.Camera): void;
12
+ dispose(): void;
13
13
  }
@@ -1,13 +1,13 @@
1
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
2
  /** Blend in output space like the canvas, then convert to texture storage. */
3
3
  export declare class WebGLCapture {
4
- private readonly renderer;
5
- private readonly depthTexture;
6
- private readonly target;
7
- private readonly camera;
8
- private readonly material;
9
- private readonly quad;
10
- constructor(renderer: THREE.WebGLRenderer);
11
- render(scene: THREE.Scene, camera: THREE.Camera): void;
12
- dispose(): void;
4
+ private readonly renderer;
5
+ private readonly depthTexture;
6
+ private readonly target;
7
+ private readonly camera;
8
+ private readonly material;
9
+ private readonly quad;
10
+ constructor(renderer: THREE.WebGLRenderer);
11
+ render(scene: THREE.Scene, camera: THREE.Camera): void;
12
+ dispose(): void;
13
13
  }
@@ -1,17 +1,17 @@
1
- import { WebGPURenderer } from 'three/webgpu';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { WebGPURenderer } from "three/webgpu";
3
3
  /** Blend in working space, then convert to texture storage. */
4
4
  export declare class WebGPUCapture {
5
- private readonly renderer;
6
- private readonly depthTexture;
7
- private readonly target;
8
- private readonly material;
9
- private readonly quad;
10
- private workingColorSpace;
11
- private outputColorSpace;
12
- private storageColorSpace;
13
- private toneMapping;
14
- constructor(renderer: WebGPURenderer);
15
- render(scene: THREE.Scene, camera: THREE.Camera): void;
16
- dispose(): void;
5
+ private readonly renderer;
6
+ private readonly depthTexture;
7
+ private readonly target;
8
+ private readonly material;
9
+ private readonly quad;
10
+ private workingColorSpace;
11
+ private outputColorSpace;
12
+ private storageColorSpace;
13
+ private toneMapping;
14
+ constructor(renderer: WebGPURenderer);
15
+ render(scene: THREE.Scene, camera: THREE.Camera): void;
16
+ dispose(): void;
17
17
  }
@@ -1,17 +1,17 @@
1
- import { WebGPURenderer } from 'three/webgpu';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { WebGPURenderer } from "three/webgpu";
3
3
  /** Blend in working space, then convert to texture storage. */
4
4
  export declare class WebGPUCapture {
5
- private readonly renderer;
6
- private readonly depthTexture;
7
- private readonly target;
8
- private readonly material;
9
- private readonly quad;
10
- private workingColorSpace;
11
- private outputColorSpace;
12
- private storageColorSpace;
13
- private toneMapping;
14
- constructor(renderer: WebGPURenderer);
15
- render(scene: THREE.Scene, camera: THREE.Camera): void;
16
- dispose(): void;
5
+ private readonly renderer;
6
+ private readonly depthTexture;
7
+ private readonly target;
8
+ private readonly material;
9
+ private readonly quad;
10
+ private workingColorSpace;
11
+ private outputColorSpace;
12
+ private storageColorSpace;
13
+ private toneMapping;
14
+ constructor(renderer: WebGPURenderer);
15
+ render(scene: THREE.Scene, camera: THREE.Camera): void;
16
+ dispose(): void;
17
17
  }
@@ -1,5 +1,16 @@
1
- import { GaussianSplatCompatibleRenderer } from '../rendering/rendererUtils.cjs';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { GaussianSplatCompatibleRenderer } from "../rendering/rendererUtils.cjs";
3
3
  /** Packed RGBA8, with the bottom row first on every backend. */
4
- export declare function readPixels(renderer: GaussianSplatCompatibleRenderer, target: THREE.RenderTarget, pixels: Uint8Array, face?: number): Promise<void>;
5
- export declare function downsamplePixels(source: Uint8Array, width: number, height: number, superXY: number, output: Uint8Array): void;
4
+ export declare function readPixels(
5
+ renderer: GaussianSplatCompatibleRenderer,
6
+ target: THREE.RenderTarget,
7
+ pixels: Uint8Array,
8
+ face?: number,
9
+ ): Promise<void>;
10
+ export declare function downsamplePixels(
11
+ source: Uint8Array,
12
+ width: number,
13
+ height: number,
14
+ superXY: number,
15
+ output: Uint8Array,
16
+ ): void;
@@ -1,5 +1,16 @@
1
- import { GaussianSplatCompatibleRenderer } from '../rendering/rendererUtils';
2
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { GaussianSplatCompatibleRenderer } from "../rendering/rendererUtils.js";
3
3
  /** Packed RGBA8, with the bottom row first on every backend. */
4
- export declare function readPixels(renderer: GaussianSplatCompatibleRenderer, target: THREE.RenderTarget, pixels: Uint8Array, face?: number): Promise<void>;
5
- export declare function downsamplePixels(source: Uint8Array, width: number, height: number, superXY: number, output: Uint8Array): void;
4
+ export declare function readPixels(
5
+ renderer: GaussianSplatCompatibleRenderer,
6
+ target: THREE.RenderTarget,
7
+ pixels: Uint8Array,
8
+ face?: number,
9
+ ): Promise<void>;
10
+ export declare function downsamplePixels(
11
+ source: Uint8Array,
12
+ width: number,
13
+ height: number,
14
+ superXY: number,
15
+ output: Uint8Array,
16
+ ): void;
@@ -1,3 +1,6 @@
1
- import { GaussianSplatCompatibleRenderer } from '../rendering/rendererUtils.cjs';
1
+ import type { GaussianSplatCompatibleRenderer } from "../rendering/rendererUtils.cjs";
2
2
  /** Wrap synchronous drawing only; output state must never survive an await. */
3
- export declare function withCaptureState<T>(renderer: GaussianSplatCompatibleRenderer, draw: () => T): T;
3
+ export declare function withCaptureState<T>(
4
+ renderer: GaussianSplatCompatibleRenderer,
5
+ draw: () => T,
6
+ ): T;
@@ -1,3 +1,6 @@
1
- import { GaussianSplatCompatibleRenderer } from '../rendering/rendererUtils';
1
+ import type { GaussianSplatCompatibleRenderer } from "../rendering/rendererUtils.js";
2
2
  /** Wrap synchronous drawing only; output state must never survive an await. */
3
- export declare function withCaptureState<T>(renderer: GaussianSplatCompatibleRenderer, draw: () => T): T;
3
+ export declare function withCaptureState<T>(
4
+ renderer: GaussianSplatCompatibleRenderer,
5
+ draw: () => T,
6
+ ): T;
@@ -1,68 +1,86 @@
1
- import { SplatOpacityTable } from './SplatOpacityTable.cjs';
2
- import { Splats, SplatsOptions } from './Splats.cjs';
3
- import { ReorderedSplatResult, 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 { SplatOpacityTable } from "./SplatOpacityTable.cjs";
3
+ import { Splats, type SplatsOptions } from "./Splats.cjs";
4
+ import type { ReorderedSplatResult, SplatResult } from "./defines.cjs";
5
+ import type { RaycastRangeCallback, SplatRaycastQuery } from "./raycast.cjs";
6
+ import type { decodeSplat } from "./unpack.cjs";
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 {};