gaussian-splat-lite 1.2.2 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/CHANGELOG.md +61 -2
  2. package/CONTRIBUTING.md +4 -2
  3. package/README.md +4 -3
  4. package/dist/gaussian-splat-lite.cjs +6782 -1661
  5. package/dist/gaussian-splat-lite.cjs.map +1 -1
  6. package/dist/gaussian-splat-lite.min.cjs +991 -15
  7. package/dist/gaussian-splat-lite.min.cjs.map +1 -1
  8. package/dist/gaussian-splat-lite.module.js +6328 -1207
  9. package/dist/gaussian-splat-lite.module.js.map +1 -1
  10. package/dist/gaussian-splat-lite.module.min.js +8208 -3572
  11. package/dist/gaussian-splat-lite.module.min.js.map +1 -1
  12. package/dist/types/addons/NeuralDenoiseNode.d.cts +72 -0
  13. package/dist/types/addons/NeuralDenoiseNode.d.ts +72 -0
  14. package/dist/types/addons/NeuralDenoisePass.d.cts +34 -0
  15. package/dist/types/addons/NeuralDenoisePass.d.ts +34 -0
  16. package/dist/types/addons/TAANode.d.cts +46 -33
  17. package/dist/types/addons/TAANode.d.ts +46 -33
  18. package/dist/types/addons/TAAPass.d.cts +47 -32
  19. package/dist/types/addons/TAAPass.d.ts +47 -32
  20. package/dist/types/addons/neuralDenoiseGL.d.cts +25 -0
  21. package/dist/types/addons/neuralDenoiseGL.d.ts +25 -0
  22. package/dist/types/addons/neuralDenoiseGLSL.d.cts +8 -0
  23. package/dist/types/addons/neuralDenoiseGLSL.d.ts +8 -0
  24. package/dist/types/addons/neuralDenoisePasses.d.cts +26 -0
  25. package/dist/types/addons/neuralDenoisePasses.d.ts +26 -0
  26. package/dist/types/addons/neuralDenoiseShaders.d.cts +38 -0
  27. package/dist/types/addons/neuralDenoiseShaders.d.ts +38 -0
  28. package/dist/types/addons/neuralDenoiseWeights.d.cts +118 -0
  29. package/dist/types/addons/neuralDenoiseWeights.d.ts +118 -0
  30. package/dist/types/addons/stochasticCoverage.d.cts +14 -0
  31. package/dist/types/addons/stochasticCoverage.d.ts +14 -0
  32. package/dist/types/addons/taaShared.d.cts +58 -39
  33. package/dist/types/addons/taaShared.d.ts +58 -39
  34. package/dist/types/capture/SplatCapture.d.cts +54 -53
  35. package/dist/types/capture/SplatCapture.d.ts +54 -53
  36. package/dist/types/capture/WebGLCapture.d.cts +10 -10
  37. package/dist/types/capture/WebGLCapture.d.ts +10 -10
  38. package/dist/types/capture/WebGPUCapture.d.cts +14 -14
  39. package/dist/types/capture/WebGPUCapture.d.ts +14 -14
  40. package/dist/types/capture/pixels.d.cts +15 -4
  41. package/dist/types/capture/pixels.d.ts +15 -4
  42. package/dist/types/capture/rendererState.d.cts +5 -2
  43. package/dist/types/capture/rendererState.d.ts +5 -2
  44. package/dist/types/data/IndexedSplats.d.cts +83 -58
  45. package/dist/types/data/IndexedSplats.d.ts +83 -58
  46. package/dist/types/data/RadPagedSplats.d.cts +66 -61
  47. package/dist/types/data/RadPagedSplats.d.ts +66 -61
  48. package/dist/types/data/SogRegionSplats.d.cts +25 -19
  49. package/dist/types/data/SogRegionSplats.d.ts +25 -19
  50. package/dist/types/data/SplatOpacityTable.d.cts +36 -29
  51. package/dist/types/data/SplatOpacityTable.d.ts +36 -29
  52. package/dist/types/data/Splats.d.cts +99 -69
  53. package/dist/types/data/Splats.d.ts +99 -69
  54. package/dist/types/data/defines.d.cts +24 -24
  55. package/dist/types/data/defines.d.ts +24 -24
  56. package/dist/types/data/raycast.d.cts +13 -9
  57. package/dist/types/data/raycast.d.ts +13 -9
  58. package/dist/types/data/splatCodec.d.cts +29 -5
  59. package/dist/types/data/splatCodec.d.ts +29 -5
  60. package/dist/types/data/splatData.d.cts +18 -11
  61. package/dist/types/data/splatData.d.ts +18 -11
  62. package/dist/types/data/splatRange.d.cts +6 -2
  63. package/dist/types/data/splatRange.d.ts +6 -2
  64. package/dist/types/data/textureLayout.d.cts +9 -6
  65. package/dist/types/data/textureLayout.d.ts +9 -6
  66. package/dist/types/data/unpack.d.cts +16 -9
  67. package/dist/types/data/unpack.d.ts +16 -9
  68. package/dist/types/index.d.cts +65 -19
  69. package/dist/types/index.d.ts +65 -19
  70. package/dist/types/loaders/SplatLoader.d.cts +27 -14
  71. package/dist/types/loaders/SplatLoader.d.ts +27 -14
  72. package/dist/types/loaders/loadSplatData.d.cts +35 -17
  73. package/dist/types/loaders/loadSplatData.d.ts +35 -17
  74. package/dist/types/loaders/loadTypes.d.cts +46 -40
  75. package/dist/types/loaders/loadTypes.d.ts +46 -40
  76. package/dist/types/loaders/morton.d.cts +9 -3
  77. package/dist/types/loaders/morton.d.ts +9 -3
  78. package/dist/types/loaders/postDecode/builder.d.cts +222 -127
  79. package/dist/types/loaders/postDecode/builder.d.ts +222 -127
  80. package/dist/types/loaders/postDecode/compiler.d.cts +25 -11
  81. package/dist/types/loaders/postDecode/compiler.d.ts +25 -11
  82. package/dist/types/loaders/postDecode/operations.d.cts +22 -3
  83. package/dist/types/loaders/postDecode/operations.d.ts +22 -3
  84. package/dist/types/loaders/postDecode/optimizer.d.cts +5 -2
  85. package/dist/types/loaders/postDecode/optimizer.d.ts +5 -2
  86. package/dist/types/loaders/postDecode/program.d.cts +13 -6
  87. package/dist/types/loaders/postDecode/program.d.ts +13 -6
  88. package/dist/types/loaders/postDecode/protocol.d.cts +136 -111
  89. package/dist/types/loaders/postDecode/protocol.d.ts +136 -111
  90. package/dist/types/loaders/postDecode/registers.d.cts +12 -7
  91. package/dist/types/loaders/postDecode/registers.d.ts +12 -7
  92. package/dist/types/loaders/postDecode/runtime.d.cts +9 -2
  93. package/dist/types/loaders/postDecode/runtime.d.ts +9 -2
  94. package/dist/types/loaders/rad/RadSource.d.cts +81 -66
  95. package/dist/types/loaders/rad/RadSource.d.ts +81 -66
  96. package/dist/types/loaders/rad/radFormat.d.cts +41 -36
  97. package/dist/types/loaders/rad/radFormat.d.ts +41 -36
  98. package/dist/types/loaders/rad.d.cts +4 -4
  99. package/dist/types/loaders/rad.d.ts +4 -4
  100. package/dist/types/loaders/sog/SogSource.d.cts +14 -4
  101. package/dist/types/loaders/sog/SogSource.d.ts +14 -4
  102. package/dist/types/loaders/sog/sogZip.d.cts +12 -12
  103. package/dist/types/loaders/sog/sogZip.d.ts +12 -12
  104. package/dist/types/loaders/sog.d.cts +3 -3
  105. package/dist/types/loaders/sog.d.ts +3 -3
  106. package/dist/types/loaders/source.d.cts +43 -15
  107. package/dist/types/loaders/source.d.ts +43 -15
  108. package/dist/types/loaders/stream/StreamCameras.d.cts +27 -18
  109. package/dist/types/loaders/stream/StreamCameras.d.ts +27 -18
  110. package/dist/types/loaders/stream/StreamWorkerPool.d.cts +37 -37
  111. package/dist/types/loaders/stream/StreamWorkerPool.d.ts +37 -37
  112. package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.cts +20 -13
  113. package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.ts +20 -13
  114. package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.cts +13 -9
  115. package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.ts +13 -9
  116. package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.cts +69 -51
  117. package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.ts +69 -51
  118. package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.cts +126 -102
  119. package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.ts +126 -102
  120. package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.cts +4 -4
  121. package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.ts +4 -4
  122. package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.cts +20 -17
  123. package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.ts +20 -17
  124. package/dist/types/loaders/stream/rad-stream/radFade.d.cts +13 -8
  125. package/dist/types/loaders/stream/rad-stream/radFade.d.ts +13 -8
  126. package/dist/types/loaders/stream/rad-stream/radLod.d.cts +29 -27
  127. package/dist/types/loaders/stream/rad-stream/radLod.d.ts +29 -27
  128. package/dist/types/loaders/stream/rad-stream/worker.d.cts +3 -59
  129. package/dist/types/loaders/stream/rad-stream/worker.d.ts +3 -59
  130. package/dist/types/loaders/stream/rad-stream/workerHandlers.d.cts +58 -61
  131. package/dist/types/loaders/stream/rad-stream/workerHandlers.d.ts +58 -61
  132. package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.cts +16 -12
  133. package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.ts +16 -12
  134. package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.cts +56 -41
  135. package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.ts +56 -41
  136. package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.cts +102 -81
  137. package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.ts +102 -81
  138. package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.cts +3 -3
  139. package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.ts +3 -3
  140. package/dist/types/loaders/stream/sog-stream/sogLod.d.cts +67 -46
  141. package/dist/types/loaders/stream/sog-stream/sogLod.d.ts +67 -46
  142. package/dist/types/loaders/stream/sog-stream/sogVisibility.d.cts +28 -22
  143. package/dist/types/loaders/stream/sog-stream/sogVisibility.d.ts +28 -22
  144. package/dist/types/loaders/stream/sog-stream/worker.d.cts +7 -40
  145. package/dist/types/loaders/stream/sog-stream/worker.d.ts +7 -40
  146. package/dist/types/loaders/stream/sog-stream/workerHandlers.d.cts +63 -44
  147. package/dist/types/loaders/stream/sog-stream/workerHandlers.d.ts +63 -44
  148. package/dist/types/loaders/stream/streamOptions.d.cts +43 -33
  149. package/dist/types/loaders/stream/streamOptions.d.ts +43 -33
  150. package/dist/types/loaders/workerDecode.d.cts +30 -12
  151. package/dist/types/loaders/workerDecode.d.ts +30 -12
  152. package/dist/types/patches/threeR186.d.cts +3 -0
  153. package/dist/types/patches/threeR186.d.ts +3 -0
  154. package/dist/types/rendering/GaussianSplatRenderer.d.cts +393 -376
  155. package/dist/types/rendering/GaussianSplatRenderer.d.ts +393 -376
  156. package/dist/types/rendering/MaterialState.d.cts +9 -0
  157. package/dist/types/rendering/MaterialState.d.ts +9 -0
  158. package/dist/types/rendering/SortCenterCache.d.cts +17 -17
  159. package/dist/types/rendering/SortCenterCache.d.ts +17 -17
  160. package/dist/types/rendering/SplatAccumulator.d.cts +93 -77
  161. package/dist/types/rendering/SplatAccumulator.d.ts +93 -77
  162. package/dist/types/rendering/SplatGeometry.d.cts +2 -2
  163. package/dist/types/rendering/SplatGeometry.d.ts +2 -2
  164. package/dist/types/rendering/StochasticSplatMaterial.d.cts +14 -0
  165. package/dist/types/rendering/StochasticSplatMaterial.d.ts +14 -0
  166. package/dist/types/rendering/backend.d.cts +30 -18
  167. package/dist/types/rendering/backend.d.ts +30 -18
  168. package/dist/types/rendering/blueNoise.d.cts +1 -1
  169. package/dist/types/rendering/blueNoise.d.ts +1 -1
  170. package/dist/types/rendering/rendererUtils.d.cts +25 -10
  171. package/dist/types/rendering/rendererUtils.d.ts +25 -10
  172. package/dist/types/rendering/tsl/GenerateProgram.d.cts +19 -17
  173. package/dist/types/rendering/tsl/GenerateProgram.d.ts +19 -17
  174. package/dist/types/rendering/tsl/ProjectionProgram.d.cts +38 -33
  175. package/dist/types/rendering/tsl/ProjectionProgram.d.ts +38 -33
  176. package/dist/types/rendering/tsl/SplatBackend.d.cts +22 -10
  177. package/dist/types/rendering/tsl/SplatBackend.d.ts +22 -10
  178. package/dist/types/rendering/tsl/SplatMaterial.d.cts +38 -25
  179. package/dist/types/rendering/tsl/SplatMaterial.d.ts +38 -25
  180. package/dist/types/rendering/tsl/shaderUtils.d.cts +55 -17
  181. package/dist/types/rendering/tsl/shaderUtils.d.ts +55 -17
  182. package/dist/types/rendering/tsl/stochasticCoverage.d.cts +7 -0
  183. package/dist/types/rendering/tsl/stochasticCoverage.d.ts +7 -0
  184. package/dist/types/rendering/tsl/viewUniforms.d.cts +19 -9
  185. package/dist/types/rendering/tsl/viewUniforms.d.ts +19 -9
  186. package/dist/types/rendering/uniforms.d.cts +83 -83
  187. package/dist/types/rendering/uniforms.d.ts +83 -83
  188. package/dist/types/rendering/webgl/AccumulatorGenerator.d.cts +28 -12
  189. package/dist/types/rendering/webgl/AccumulatorGenerator.d.ts +28 -12
  190. package/dist/types/rendering/webgl/OrderingTexture.d.cts +10 -7
  191. package/dist/types/rendering/webgl/OrderingTexture.d.ts +10 -7
  192. package/dist/types/rendering/webgl/SplatBackend.d.cts +20 -15
  193. package/dist/types/rendering/webgl/SplatBackend.d.ts +20 -15
  194. package/dist/types/rendering/webgl/SplatMaterial.d.cts +9 -4
  195. package/dist/types/rendering/webgl/SplatMaterial.d.ts +9 -4
  196. package/dist/types/rendering/webgl/textureUtils.d.cts +10 -3
  197. package/dist/types/rendering/webgl/textureUtils.d.ts +10 -3
  198. package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.cts +8 -10
  199. package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.ts +8 -10
  200. package/dist/types/rendering/webgl-fallback/SplatBackend.d.cts +18 -14
  201. package/dist/types/rendering/webgl-fallback/SplatBackend.d.ts +18 -14
  202. package/dist/types/rendering/webgpu/ProjectedSplats.d.cts +76 -66
  203. package/dist/types/rendering/webgpu/ProjectedSplats.d.ts +76 -66
  204. package/dist/types/rendering/webgpu/ProjectionCache.d.cts +43 -28
  205. package/dist/types/rendering/webgpu/ProjectionCache.d.ts +43 -28
  206. package/dist/types/rendering/webgpu/ProjectionKernel.d.cts +22 -0
  207. package/dist/types/rendering/webgpu/ProjectionKernel.d.ts +22 -0
  208. package/dist/types/rendering/webgpu/RadixSort.d.cts +44 -40
  209. package/dist/types/rendering/webgpu/RadixSort.d.ts +44 -40
  210. package/dist/types/rendering/webgpu/SplatBackend.d.cts +14 -12
  211. package/dist/types/rendering/webgpu/SplatBackend.d.ts +14 -12
  212. package/dist/types/runtime/SplatWorker.d.cts +17 -13
  213. package/dist/types/runtime/SplatWorker.d.ts +17 -13
  214. package/dist/types/runtime/WorkerRpc.d.cts +26 -20
  215. package/dist/types/runtime/WorkerRpc.d.ts +26 -20
  216. package/dist/types/runtime/abort.d.cts +10 -5
  217. package/dist/types/runtime/abort.d.ts +10 -5
  218. package/dist/types/runtime/retry.d.cts +6 -6
  219. package/dist/types/runtime/retry.d.ts +6 -6
  220. package/dist/types/runtime/wasmCall.d.cts +3 -3
  221. package/dist/types/runtime/wasmCall.d.ts +3 -3
  222. package/dist/types/runtime/worker.d.cts +44 -24
  223. package/dist/types/runtime/worker.d.ts +44 -24
  224. package/dist/types/runtime/workerServer.d.cts +3 -1
  225. package/dist/types/runtime/workerServer.d.ts +3 -1
  226. package/dist/types/scene/SplatEdit.d.cts +74 -67
  227. package/dist/types/scene/SplatEdit.d.ts +74 -67
  228. package/dist/types/scene/SplatMesh.d.cts +92 -70
  229. package/dist/types/scene/SplatMesh.d.ts +92 -70
  230. package/dist/types/utils/index.d.cts +15 -7
  231. package/dist/types/utils/index.d.ts +15 -7
  232. package/dist/types/utils/three.d.cts +3 -3
  233. package/dist/types/utils/three.d.ts +3 -3
  234. package/dist/types/utils/transforms.d.cts +10 -3
  235. package/dist/types/utils/transforms.d.ts +10 -3
  236. package/docs/GaussianSplatRenderer.md +3 -1
  237. package/docs/NeuralDenoiseNode.md +148 -0
  238. package/docs/RadStreamScheduler.md +14 -5
  239. package/docs/SogStreamScheduler.md +8 -6
  240. package/docs/SplatMesh.md +1 -1
  241. package/docs/StochasticRendering.md +36 -10
  242. package/docs/TAAPass.md +20 -3
  243. package/package.json +9 -11
  244. package/dist/types/capture/sceneView.d.cts +0 -3
  245. package/dist/types/capture/sceneView.d.ts +0 -3
  246. package/dist/types/loaders/stream/StreamByteBudget.d.cts +0 -7
  247. package/dist/types/loaders/stream/StreamByteBudget.d.ts +0 -7
  248. package/dist/types/rendering/tsl/tslCompat.d.cts +0 -68
  249. package/dist/types/rendering/tsl/tslCompat.d.ts +0 -68
  250. package/docs/Architecture.md +0 -200
@@ -1,36 +1,51 @@
1
- import { Node, StorageArrayTexture } from 'three/webgpu';
2
- import { SplatProjection } from '../tsl/ProjectionProgram.cjs';
3
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { Node, StorageArrayTexture } from "three/webgpu";
3
+ import type { SplatProjection } from "../tsl/ProjectionProgram.cjs";
4
4
  type TextureLimits = {
5
- maxTextureDimension2D: number;
6
- maxTextureArrayLayers: number;
5
+ maxTextureDimension2D: number;
6
+ maxTextureArrayLayers: number;
7
7
  };
8
- export declare function getProjectionCacheSize(count: number, limits: TextureLimits): {
9
- width: number;
10
- height: number;
11
- depth: number;
8
+ export declare function getProjectionCacheSize(
9
+ count: number,
10
+ limits: TextureLimits,
11
+ ): {
12
+ width: number;
13
+ height: number;
14
+ depth: number;
12
15
  };
13
16
  /** Native projected records: compact layout, paired codec and texture ownership. */
14
17
  export declare class ProjectionCache {
15
- readonly textures: StorageArrayTexture[];
16
- readonly size: THREE.Vector4;
17
- private readonly dimensions;
18
- resize(size: ReturnType<typeof getProjectionCacheSize>): void;
19
- write(index: Node<"uint">, projection: SplatProjection, ndc: Node<"vec2">, pixelScale: Node<"vec2">, centerRange: Node<"float">): void;
20
- /**
21
- * A shared WebXR slot another eye draws: a transparent record whose
22
- * corners collapse to one point, behind a perspective camera.
23
- */
24
- writeHidden(index: Node<"uint">): void;
25
- read(index: Node<"uint">, pixelScale: Node<"vec2">, centerRange: Node<"float">,
18
+ readonly textures: StorageArrayTexture[];
19
+ readonly size: THREE.Vector4;
20
+ private readonly dimensions;
21
+ resize(size: ReturnType<typeof getProjectionCacheSize>): void;
22
+ write(
23
+ index: Node<"uint">,
24
+ projection: SplatProjection,
25
+ ndc: Node<"vec2">,
26
+ pixelScale: Node<"vec2">,
27
+ centerRange: Node<"float">,
28
+ ): void;
29
+ /**
30
+ * A shared WebXR slot another eye draws: a transparent record whose
31
+ * corners collapse to one point, behind a perspective camera.
32
+ */
33
+ writeHidden(index: Node<"uint">): void;
34
+ read(
35
+ index: Node<"uint">,
36
+ pixelScale: Node<"vec2">,
37
+ centerRange: Node<"float">,
26
38
  /** NDC translation from the cached projection to the drawn one. */
27
- jitter: Node<"vec2">): {
28
- clipPosition: import('three/webgpu').VarNode<"vec4", import('three/webgpu').JoinNode<"vec4">>;
29
- rgba: import('three/webgpu').VarNode<"vec4", import('three/webgpu').JoinNode<"vec4">>;
30
- splatUv: Node<"vec2">;
31
- supportRadiusSquared: Node<"float">;
32
- kernelPower: Node<"float">;
33
- };
34
- dispose(): void;
39
+ jitter: Node<"vec2">,
40
+ /** Projection of the drawn eye. */
41
+ projectionMatrix: Node<"mat4">,
42
+ ): {
43
+ clipPosition: Node<"vec4">;
44
+ rgba: Node<"vec4">;
45
+ splatUv: Node<"vec2">;
46
+ supportRadiusSquared: Node<"float">;
47
+ kernelPower: Node<"float">;
48
+ };
49
+ dispose(): void;
35
50
  }
36
51
  export {};
@@ -1,36 +1,51 @@
1
- import { Node, StorageArrayTexture } from 'three/webgpu';
2
- import { SplatProjection } from '../tsl/ProjectionProgram';
3
- import * as THREE from "three";
1
+ import type * as THREE from "three";
2
+ import type { Node, StorageArrayTexture } from "three/webgpu";
3
+ import type { SplatProjection } from "../tsl/ProjectionProgram.js";
4
4
  type TextureLimits = {
5
- maxTextureDimension2D: number;
6
- maxTextureArrayLayers: number;
5
+ maxTextureDimension2D: number;
6
+ maxTextureArrayLayers: number;
7
7
  };
8
- export declare function getProjectionCacheSize(count: number, limits: TextureLimits): {
9
- width: number;
10
- height: number;
11
- depth: number;
8
+ export declare function getProjectionCacheSize(
9
+ count: number,
10
+ limits: TextureLimits,
11
+ ): {
12
+ width: number;
13
+ height: number;
14
+ depth: number;
12
15
  };
13
16
  /** Native projected records: compact layout, paired codec and texture ownership. */
14
17
  export declare class ProjectionCache {
15
- readonly textures: StorageArrayTexture[];
16
- readonly size: THREE.Vector4;
17
- private readonly dimensions;
18
- resize(size: ReturnType<typeof getProjectionCacheSize>): void;
19
- write(index: Node<"uint">, projection: SplatProjection, ndc: Node<"vec2">, pixelScale: Node<"vec2">, centerRange: Node<"float">): void;
20
- /**
21
- * A shared WebXR slot another eye draws: a transparent record whose
22
- * corners collapse to one point, behind a perspective camera.
23
- */
24
- writeHidden(index: Node<"uint">): void;
25
- read(index: Node<"uint">, pixelScale: Node<"vec2">, centerRange: Node<"float">,
18
+ readonly textures: StorageArrayTexture[];
19
+ readonly size: THREE.Vector4;
20
+ private readonly dimensions;
21
+ resize(size: ReturnType<typeof getProjectionCacheSize>): void;
22
+ write(
23
+ index: Node<"uint">,
24
+ projection: SplatProjection,
25
+ ndc: Node<"vec2">,
26
+ pixelScale: Node<"vec2">,
27
+ centerRange: Node<"float">,
28
+ ): void;
29
+ /**
30
+ * A shared WebXR slot another eye draws: a transparent record whose
31
+ * corners collapse to one point, behind a perspective camera.
32
+ */
33
+ writeHidden(index: Node<"uint">): void;
34
+ read(
35
+ index: Node<"uint">,
36
+ pixelScale: Node<"vec2">,
37
+ centerRange: Node<"float">,
26
38
  /** NDC translation from the cached projection to the drawn one. */
27
- jitter: Node<"vec2">): {
28
- clipPosition: import('three/webgpu').VarNode<"vec4", import('three/webgpu').JoinNode<"vec4">>;
29
- rgba: import('three/webgpu').VarNode<"vec4", import('three/webgpu').JoinNode<"vec4">>;
30
- splatUv: Node<"vec2">;
31
- supportRadiusSquared: Node<"float">;
32
- kernelPower: Node<"float">;
33
- };
34
- dispose(): void;
39
+ jitter: Node<"vec2">,
40
+ /** Projection of the drawn eye. */
41
+ projectionMatrix: Node<"mat4">,
42
+ ): {
43
+ clipPosition: Node<"vec4">;
44
+ rgba: Node<"vec4">;
45
+ splatUv: Node<"vec2">;
46
+ supportRadiusSquared: Node<"float">;
47
+ kernelPower: Node<"float">;
48
+ };
49
+ dispose(): void;
35
50
  }
36
51
  export {};
@@ -0,0 +1,22 @@
1
+ import type { ComputeNode, StorageBufferNode } from "three/webgpu";
2
+ import type { Uniforms } from "../uniforms.cjs";
3
+ import type { ProjectionCache } from "./ProjectionCache.cjs";
4
+
5
+ /** Builds a projection graph from bindings owned by ProjectedSplats. */
6
+ export declare function createProjectionKernel({
7
+ uniforms,
8
+ eyeCount,
9
+ keys,
10
+ seeds,
11
+ sortValues,
12
+ counter,
13
+ cache,
14
+ }: {
15
+ uniforms: Uniforms;
16
+ eyeCount: number;
17
+ keys: StorageBufferNode<"uint">;
18
+ seeds: StorageBufferNode<"uint">;
19
+ sortValues: StorageBufferNode<"uint">;
20
+ counter: StorageBufferNode<"uint">;
21
+ cache: ProjectionCache;
22
+ }): ComputeNode;
@@ -0,0 +1,22 @@
1
+ import type { ComputeNode, StorageBufferNode } from "three/webgpu";
2
+ import type { Uniforms } from "../uniforms.js";
3
+ import type { ProjectionCache } from "./ProjectionCache.js";
4
+
5
+ /** Builds a projection graph from bindings owned by ProjectedSplats. */
6
+ export declare function createProjectionKernel({
7
+ uniforms,
8
+ eyeCount,
9
+ keys,
10
+ seeds,
11
+ sortValues,
12
+ counter,
13
+ cache,
14
+ }: {
15
+ uniforms: Uniforms;
16
+ eyeCount: number;
17
+ keys: StorageBufferNode<"uint">;
18
+ seeds: StorageBufferNode<"uint">;
19
+ sortValues: StorageBufferNode<"uint">;
20
+ counter: StorageBufferNode<"uint">;
21
+ cache: ProjectionCache;
22
+ }): ComputeNode;
@@ -1,4 +1,4 @@
1
- import { ComputeNode, Node, StorageBufferAttribute } from 'three/webgpu';
1
+ import type { ComputeNode, Node, StorageBufferAttribute } from "three/webgpu";
2
2
  /**
3
3
  * Key layout of one sort: full 32-bit or fast 24-bit back-to-front keys, or
4
4
  * 16-bit front-to-back keys for stochastic ordering.
@@ -6,9 +6,9 @@ import { ComputeNode, Node, StorageBufferAttribute } from 'three/webgpu';
6
6
  export type RadixSortMode = "full" | "fast" | "front";
7
7
  /** Values of the GPU mode uniform. */
8
8
  export declare const RADIX_SORT_MODE_IDS: {
9
- readonly full: 0;
10
- readonly fast: 1;
11
- readonly front: 2;
9
+ readonly full: 0;
10
+ readonly fast: 1;
11
+ readonly front: 2;
12
12
  };
13
13
  /**
14
14
  * Input key of an absent record. The first pass drops these records and
@@ -16,15 +16,15 @@ export declare const RADIX_SORT_MODE_IDS: {
16
16
  */
17
17
  export declare const INVALID_SORT_KEY = 4294967295;
18
18
  type BufferRef = {
19
- value: StorageBufferAttribute;
19
+ value: StorageBufferAttribute;
20
20
  };
21
21
  type WebGPURadixSortOptions = {
22
- /** GPU count of input keys other than INVALID_SORT_KEY. */
23
- count: Node<"uint">;
24
- /** RADIX_SORT_MODE_IDS value matching the input key encoding. */
25
- mode: Node<"uint">;
26
- maxComputeWorkgroupsPerDimension: number;
27
- maxStorageBufferBindingSize: number;
22
+ /** GPU count of input keys other than INVALID_SORT_KEY. */
23
+ count: Node<"uint">;
24
+ /** RADIX_SORT_MODE_IDS value matching the input key encoding. */
25
+ mode: Node<"uint">;
26
+ maxComputeWorkgroupsPerDimension: number;
27
+ maxStorageBufferBindingSize: number;
28
28
  };
29
29
  /**
30
30
  * Stable 16-, 24- or 32-bit radix sort. The first pass compacts records whose
@@ -32,34 +32,38 @@ type WebGPURadixSortOptions = {
32
32
  * `inputValues`. Borrows and overwrites input keys; their owner manages storage.
33
33
  */
34
34
  export declare class WebGPURadixSort {
35
- capacity: number;
36
- readonly maxCapacity: number;
37
- readonly nodes: ComputeNode[];
38
- private readonly elementCount;
39
- private readonly keys;
40
- private readonly values;
41
- private readonly blockSums;
42
- private readonly counts;
43
- private readonly sortDispatch;
44
- private readonly prefixLevels;
45
- private mode;
46
- private readonly maxWorkgroups;
47
- private readonly dispatchNodes;
48
- constructor(capacity: number, inputKeys: BufferRef, options: WebGPURadixSortOptions);
49
- /** Values the caller writes for valid input records; sorting overwrites them. */
50
- get inputValues(): StorageBufferAttribute;
51
- get ordering(): StorageBufferAttribute;
52
- private validateCapacity;
53
- private paddedWorkgroups;
54
- private makeSetupTask;
55
- private replaceBuffer;
56
- private createPrefixLevels;
57
- resize(capacity: number, shrinkResources?: boolean): void;
58
- /**
59
- * Prepare the persistent graph for this many input records. The GPU count
60
- * of valid records is clamped to it.
61
- */
62
- prepare(elementCount: number, mode: RadixSortMode): ComputeNode[];
63
- dispose(): void;
35
+ capacity: number;
36
+ readonly maxCapacity: number;
37
+ readonly nodes: ComputeNode[];
38
+ private readonly elementCount;
39
+ private readonly keys;
40
+ private readonly values;
41
+ private readonly blockSums;
42
+ private readonly counts;
43
+ private readonly sortDispatch;
44
+ private readonly prefixLevels;
45
+ private mode;
46
+ private readonly maxWorkgroups;
47
+ private readonly dispatchNodes;
48
+ constructor(
49
+ capacity: number,
50
+ inputKeys: BufferRef,
51
+ options: WebGPURadixSortOptions,
52
+ );
53
+ /** Values the caller writes for valid input records; sorting overwrites them. */
54
+ get inputValues(): StorageBufferAttribute;
55
+ get ordering(): StorageBufferAttribute;
56
+ private validateCapacity;
57
+ private paddedWorkgroups;
58
+ private makeSetupTask;
59
+ private replaceBuffer;
60
+ private createPrefixLevels;
61
+ resize(capacity: number, shrinkResources?: boolean): void;
62
+ /**
63
+ * Prepare the persistent graph for this many input records. The GPU count
64
+ * of valid records is clamped to it.
65
+ */
66
+ prepare(elementCount: number, mode: RadixSortMode): ComputeNode[];
67
+ dispose(): void;
64
68
  }
65
69
  export {};
@@ -1,4 +1,4 @@
1
- import { ComputeNode, Node, StorageBufferAttribute } from 'three/webgpu';
1
+ import type { ComputeNode, Node, StorageBufferAttribute } from "three/webgpu";
2
2
  /**
3
3
  * Key layout of one sort: full 32-bit or fast 24-bit back-to-front keys, or
4
4
  * 16-bit front-to-back keys for stochastic ordering.
@@ -6,9 +6,9 @@ import { ComputeNode, Node, StorageBufferAttribute } from 'three/webgpu';
6
6
  export type RadixSortMode = "full" | "fast" | "front";
7
7
  /** Values of the GPU mode uniform. */
8
8
  export declare const RADIX_SORT_MODE_IDS: {
9
- readonly full: 0;
10
- readonly fast: 1;
11
- readonly front: 2;
9
+ readonly full: 0;
10
+ readonly fast: 1;
11
+ readonly front: 2;
12
12
  };
13
13
  /**
14
14
  * Input key of an absent record. The first pass drops these records and
@@ -16,15 +16,15 @@ export declare const RADIX_SORT_MODE_IDS: {
16
16
  */
17
17
  export declare const INVALID_SORT_KEY = 4294967295;
18
18
  type BufferRef = {
19
- value: StorageBufferAttribute;
19
+ value: StorageBufferAttribute;
20
20
  };
21
21
  type WebGPURadixSortOptions = {
22
- /** GPU count of input keys other than INVALID_SORT_KEY. */
23
- count: Node<"uint">;
24
- /** RADIX_SORT_MODE_IDS value matching the input key encoding. */
25
- mode: Node<"uint">;
26
- maxComputeWorkgroupsPerDimension: number;
27
- maxStorageBufferBindingSize: number;
22
+ /** GPU count of input keys other than INVALID_SORT_KEY. */
23
+ count: Node<"uint">;
24
+ /** RADIX_SORT_MODE_IDS value matching the input key encoding. */
25
+ mode: Node<"uint">;
26
+ maxComputeWorkgroupsPerDimension: number;
27
+ maxStorageBufferBindingSize: number;
28
28
  };
29
29
  /**
30
30
  * Stable 16-, 24- or 32-bit radix sort. The first pass compacts records whose
@@ -32,34 +32,38 @@ type WebGPURadixSortOptions = {
32
32
  * `inputValues`. Borrows and overwrites input keys; their owner manages storage.
33
33
  */
34
34
  export declare class WebGPURadixSort {
35
- capacity: number;
36
- readonly maxCapacity: number;
37
- readonly nodes: ComputeNode[];
38
- private readonly elementCount;
39
- private readonly keys;
40
- private readonly values;
41
- private readonly blockSums;
42
- private readonly counts;
43
- private readonly sortDispatch;
44
- private readonly prefixLevels;
45
- private mode;
46
- private readonly maxWorkgroups;
47
- private readonly dispatchNodes;
48
- constructor(capacity: number, inputKeys: BufferRef, options: WebGPURadixSortOptions);
49
- /** Values the caller writes for valid input records; sorting overwrites them. */
50
- get inputValues(): StorageBufferAttribute;
51
- get ordering(): StorageBufferAttribute;
52
- private validateCapacity;
53
- private paddedWorkgroups;
54
- private makeSetupTask;
55
- private replaceBuffer;
56
- private createPrefixLevels;
57
- resize(capacity: number, shrinkResources?: boolean): void;
58
- /**
59
- * Prepare the persistent graph for this many input records. The GPU count
60
- * of valid records is clamped to it.
61
- */
62
- prepare(elementCount: number, mode: RadixSortMode): ComputeNode[];
63
- dispose(): void;
35
+ capacity: number;
36
+ readonly maxCapacity: number;
37
+ readonly nodes: ComputeNode[];
38
+ private readonly elementCount;
39
+ private readonly keys;
40
+ private readonly values;
41
+ private readonly blockSums;
42
+ private readonly counts;
43
+ private readonly sortDispatch;
44
+ private readonly prefixLevels;
45
+ private mode;
46
+ private readonly maxWorkgroups;
47
+ private readonly dispatchNodes;
48
+ constructor(
49
+ capacity: number,
50
+ inputKeys: BufferRef,
51
+ options: WebGPURadixSortOptions,
52
+ );
53
+ /** Values the caller writes for valid input records; sorting overwrites them. */
54
+ get inputValues(): StorageBufferAttribute;
55
+ get ordering(): StorageBufferAttribute;
56
+ private validateCapacity;
57
+ private paddedWorkgroups;
58
+ private makeSetupTask;
59
+ private replaceBuffer;
60
+ private createPrefixLevels;
61
+ resize(capacity: number, shrinkResources?: boolean): void;
62
+ /**
63
+ * Prepare the persistent graph for this many input records. The GPU count
64
+ * of valid records is clamped to it.
65
+ */
66
+ prepare(elementCount: number, mode: RadixSortMode): ComputeNode[];
67
+ dispose(): void;
64
68
  }
65
69
  export {};
@@ -1,15 +1,17 @@
1
- import { WebGPURenderer } from 'three/webgpu';
2
- import { SplatMaterialOptions } from '../backend.cjs';
3
- import { NodeSplatBackend } from '../tsl/SplatBackend.cjs';
4
- import { Uniforms } from '../uniforms.cjs';
5
- import { ProjectedSplats } from './ProjectedSplats.cjs';
1
+ import type { WebGPURenderer } from "three/webgpu";
2
+ import type { SplatMaterialOptions } from "../backend.cjs";
3
+ import { NodeSplatBackend } from "../tsl/SplatBackend.cjs";
4
+ import type { Uniforms } from "../uniforms.cjs";
5
+ import type { ProjectedSplats } from "./ProjectedSplats.cjs";
6
6
  /** Native WebGPU: fixed compute projection, visible compaction, GPU sort and indirect draw. */
7
7
  export declare class WebGPUSplatBackend extends NodeSplatBackend {
8
- readonly kind = "webgpu";
9
- readonly projection: ProjectedSplats;
10
- precompile: Promise<void> | null;
11
- constructor(renderer: WebGPURenderer, uniforms: Uniforms, options: SplatMaterialOptions);
12
- get sortError(): unknown;
13
- getOrderingCapacity(count: number): number;
14
- dispose(): void;
8
+ readonly kind = "webgpu";
9
+ readonly projection: ProjectedSplats;
10
+ constructor(
11
+ renderer: WebGPURenderer,
12
+ uniforms: Uniforms,
13
+ options: SplatMaterialOptions,
14
+ );
15
+ getOrderingCapacity(count: number): number;
16
+ dispose(): void;
15
17
  }
@@ -1,15 +1,17 @@
1
- import { WebGPURenderer } from 'three/webgpu';
2
- import { SplatMaterialOptions } from '../backend';
3
- import { NodeSplatBackend } from '../tsl/SplatBackend';
4
- import { Uniforms } from '../uniforms';
5
- import { ProjectedSplats } from './ProjectedSplats';
1
+ import type { WebGPURenderer } from "three/webgpu";
2
+ import type { SplatMaterialOptions } from "../backend.js";
3
+ import { NodeSplatBackend } from "../tsl/SplatBackend.js";
4
+ import type { Uniforms } from "../uniforms.js";
5
+ import type { ProjectedSplats } from "./ProjectedSplats.js";
6
6
  /** Native WebGPU: fixed compute projection, visible compaction, GPU sort and indirect draw. */
7
7
  export declare class WebGPUSplatBackend extends NodeSplatBackend {
8
- readonly kind = "webgpu";
9
- readonly projection: ProjectedSplats;
10
- precompile: Promise<void> | null;
11
- constructor(renderer: WebGPURenderer, uniforms: Uniforms, options: SplatMaterialOptions);
12
- get sortError(): unknown;
13
- getOrderingCapacity(count: number): number;
14
- dispose(): void;
8
+ readonly kind = "webgpu";
9
+ readonly projection: ProjectedSplats;
10
+ constructor(
11
+ renderer: WebGPURenderer,
12
+ uniforms: Uniforms,
13
+ options: SplatMaterialOptions,
14
+ );
15
+ getOrderingCapacity(count: number): number;
16
+ dispose(): void;
15
17
  }
@@ -1,19 +1,23 @@
1
- import { WorkerRpc } from './WorkerRpc.cjs';
2
- import { RpcHandlers } from './worker.cjs';
1
+ import { WorkerRpc } from "./WorkerRpc.cjs";
2
+ import type { RpcHandlers } from "./worker.cjs";
3
3
  export declare class SplatWorker extends WorkerRpc<RpcHandlers> {
4
- constructor(onDispose?: () => void);
4
+ constructor(onDispose?: () => void);
5
5
  }
6
6
  declare class SplatWorkerPool {
7
- private readonly maxWorkers;
8
- private heavyJobs;
9
- numWorkers: number;
10
- freelist: SplatWorker[];
11
- idleWorkerTimeouts: Map<SplatWorker, number>;
12
- queue: ((worker: SplatWorker) => void)[];
13
- constructor(maxWorkers?: number);
14
- withWorker<T>(callback: (worker: SplatWorker) => Promise<T>, memoryHeavy?: boolean, signal?: AbortSignal): Promise<T>;
15
- allocWorker(): Promise<SplatWorker>;
16
- freeWorker(worker: SplatWorker): void;
7
+ private readonly maxWorkers;
8
+ private heavyJobs;
9
+ numWorkers: number;
10
+ freelist: SplatWorker[];
11
+ idleWorkerTimeouts: Map<SplatWorker, number>;
12
+ queue: ((worker: SplatWorker) => void)[];
13
+ constructor(maxWorkers?: number);
14
+ withWorker<T>(
15
+ callback: (worker: SplatWorker) => Promise<T>,
16
+ memoryHeavy?: boolean,
17
+ signal?: AbortSignal,
18
+ ): Promise<T>;
19
+ allocWorker(): Promise<SplatWorker>;
20
+ freeWorker(worker: SplatWorker): void;
17
21
  }
18
22
  export declare const workerPool: SplatWorkerPool;
19
23
  export {};
@@ -1,19 +1,23 @@
1
- import { WorkerRpc } from './WorkerRpc';
2
- import { RpcHandlers } from './worker';
1
+ import { WorkerRpc } from "./WorkerRpc.js";
2
+ import type { RpcHandlers } from "./worker.js";
3
3
  export declare class SplatWorker extends WorkerRpc<RpcHandlers> {
4
- constructor(onDispose?: () => void);
4
+ constructor(onDispose?: () => void);
5
5
  }
6
6
  declare class SplatWorkerPool {
7
- private readonly maxWorkers;
8
- private heavyJobs;
9
- numWorkers: number;
10
- freelist: SplatWorker[];
11
- idleWorkerTimeouts: Map<SplatWorker, number>;
12
- queue: ((worker: SplatWorker) => void)[];
13
- constructor(maxWorkers?: number);
14
- withWorker<T>(callback: (worker: SplatWorker) => Promise<T>, memoryHeavy?: boolean, signal?: AbortSignal): Promise<T>;
15
- allocWorker(): Promise<SplatWorker>;
16
- freeWorker(worker: SplatWorker): void;
7
+ private readonly maxWorkers;
8
+ private heavyJobs;
9
+ numWorkers: number;
10
+ freelist: SplatWorker[];
11
+ idleWorkerTimeouts: Map<SplatWorker, number>;
12
+ queue: ((worker: SplatWorker) => void)[];
13
+ constructor(maxWorkers?: number);
14
+ withWorker<T>(
15
+ callback: (worker: SplatWorker) => Promise<T>,
16
+ memoryHeavy?: boolean,
17
+ signal?: AbortSignal,
18
+ ): Promise<T>;
19
+ allocWorker(): Promise<SplatWorker>;
20
+ freeWorker(worker: SplatWorker): void;
17
21
  }
18
22
  export declare const workerPool: SplatWorkerPool;
19
23
  export {};
@@ -1,29 +1,35 @@
1
1
  type PromiseRecord = {
2
- resolve: (value: unknown) => void;
3
- reject: (reason?: unknown) => void;
4
- onStatus?: (data: unknown) => void | Promise<void>;
5
- statusQueue: Promise<void>;
2
+ resolve: (value: unknown) => void;
3
+ reject: (reason?: unknown) => void;
4
+ onStatus?: (data: unknown) => void | Promise<void>;
5
+ statusQueue: Promise<void>;
6
6
  };
7
7
  /** Transport/cache loss is recoverable by obtaining a fresh worker. */
8
8
  export declare class WorkerTerminatedError extends Error {
9
- constructor(reason?: unknown);
9
+ constructor(reason?: unknown);
10
10
  }
11
11
  /** Typed main-thread transport shared by ordinary and streaming workers. */
12
- export declare class WorkerRpc<Handlers extends {
12
+ export declare class WorkerRpc<
13
+ Handlers extends {
13
14
  [K in keyof Handlers]: (...args: never[]) => unknown;
14
- }> {
15
- readonly worker: Worker;
16
- private readonly onDispose?;
17
- messages: Record<number, PromiseRecord>;
18
- peakWasmMemoryBytes: number;
19
- disposed: boolean;
20
- static currentId: number;
21
- constructor(worker: Worker, onDispose?: (() => void) | undefined);
22
- onMessage(event: MessageEvent): void;
23
- call<Name extends keyof Handlers>(name: Name, args: Parameters<Handlers[Name]>[0], options?: {
24
- onStatus?: (data: unknown) => void | Promise<void>;
25
- signal?: AbortSignal;
26
- }): Promise<Awaited<ReturnType<Handlers[Name]>>>;
27
- dispose(reason?: unknown): void;
15
+ },
16
+ > {
17
+ readonly worker: Worker;
18
+ private readonly onDispose?;
19
+ messages: Record<number, PromiseRecord>;
20
+ peakWasmMemoryBytes: number;
21
+ disposed: boolean;
22
+ static currentId: number;
23
+ constructor(worker: Worker, onDispose?: (() => void) | undefined);
24
+ onMessage(event: MessageEvent): void;
25
+ call<Name extends keyof Handlers>(
26
+ name: Name,
27
+ args: Parameters<Handlers[Name]>[0],
28
+ options?: {
29
+ onStatus?: (data: unknown) => void | Promise<void>;
30
+ signal?: AbortSignal;
31
+ },
32
+ ): Promise<Awaited<ReturnType<Handlers[Name]>>>;
33
+ dispose(reason?: unknown): void;
28
34
  }
29
35
  export {};