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.
- package/CHANGELOG.md +32 -2
- package/CONTRIBUTING.md +4 -2
- package/README.md +4 -3
- package/dist/gaussian-splat-lite.cjs +6379 -1441
- package/dist/gaussian-splat-lite.cjs.map +1 -1
- package/dist/gaussian-splat-lite.min.cjs +978 -11
- package/dist/gaussian-splat-lite.min.cjs.map +1 -1
- package/dist/gaussian-splat-lite.module.js +5920 -982
- package/dist/gaussian-splat-lite.module.js.map +1 -1
- package/dist/gaussian-splat-lite.module.min.js +7882 -3373
- package/dist/gaussian-splat-lite.module.min.js.map +1 -1
- package/dist/types/addons/NeuralDenoiseNode.d.cts +72 -0
- package/dist/types/addons/NeuralDenoiseNode.d.ts +72 -0
- package/dist/types/addons/NeuralDenoisePass.d.cts +34 -0
- package/dist/types/addons/NeuralDenoisePass.d.ts +34 -0
- package/dist/types/addons/TAANode.d.cts +46 -33
- package/dist/types/addons/TAANode.d.ts +46 -33
- package/dist/types/addons/TAAPass.d.cts +47 -32
- package/dist/types/addons/TAAPass.d.ts +47 -32
- package/dist/types/addons/neuralDenoiseGL.d.cts +25 -0
- package/dist/types/addons/neuralDenoiseGL.d.ts +25 -0
- package/dist/types/addons/neuralDenoiseGLSL.d.cts +8 -0
- package/dist/types/addons/neuralDenoiseGLSL.d.ts +8 -0
- package/dist/types/addons/neuralDenoisePasses.d.cts +26 -0
- package/dist/types/addons/neuralDenoisePasses.d.ts +26 -0
- package/dist/types/addons/neuralDenoiseShaders.d.cts +38 -0
- package/dist/types/addons/neuralDenoiseShaders.d.ts +38 -0
- package/dist/types/addons/neuralDenoiseWeights.d.cts +118 -0
- package/dist/types/addons/neuralDenoiseWeights.d.ts +118 -0
- package/dist/types/addons/stochasticCoverage.d.cts +14 -0
- package/dist/types/addons/stochasticCoverage.d.ts +14 -0
- package/dist/types/addons/taaShared.d.cts +58 -39
- package/dist/types/addons/taaShared.d.ts +58 -39
- package/dist/types/capture/SplatCapture.d.cts +54 -53
- package/dist/types/capture/SplatCapture.d.ts +54 -53
- package/dist/types/capture/WebGLCapture.d.cts +10 -10
- package/dist/types/capture/WebGLCapture.d.ts +10 -10
- package/dist/types/capture/WebGPUCapture.d.cts +14 -14
- package/dist/types/capture/WebGPUCapture.d.ts +14 -14
- package/dist/types/capture/pixels.d.cts +15 -4
- package/dist/types/capture/pixels.d.ts +15 -4
- package/dist/types/capture/rendererState.d.cts +5 -2
- package/dist/types/capture/rendererState.d.ts +5 -2
- package/dist/types/data/IndexedSplats.d.cts +76 -58
- package/dist/types/data/IndexedSplats.d.ts +76 -58
- package/dist/types/data/RadPagedSplats.d.cts +65 -61
- package/dist/types/data/RadPagedSplats.d.ts +65 -61
- package/dist/types/data/SogRegionSplats.d.cts +25 -19
- package/dist/types/data/SogRegionSplats.d.ts +25 -19
- package/dist/types/data/SplatOpacityTable.d.cts +29 -29
- package/dist/types/data/SplatOpacityTable.d.ts +29 -29
- package/dist/types/data/Splats.d.cts +99 -69
- package/dist/types/data/Splats.d.ts +99 -69
- package/dist/types/data/defines.d.cts +24 -24
- package/dist/types/data/defines.d.ts +24 -24
- package/dist/types/data/raycast.d.cts +13 -9
- package/dist/types/data/raycast.d.ts +13 -9
- package/dist/types/data/splatCodec.d.cts +29 -5
- package/dist/types/data/splatCodec.d.ts +29 -5
- package/dist/types/data/splatData.d.cts +18 -11
- package/dist/types/data/splatData.d.ts +18 -11
- package/dist/types/data/splatRange.d.cts +6 -2
- package/dist/types/data/splatRange.d.ts +6 -2
- package/dist/types/data/textureLayout.d.cts +9 -6
- package/dist/types/data/textureLayout.d.ts +9 -6
- package/dist/types/data/unpack.d.cts +16 -9
- package/dist/types/data/unpack.d.ts +16 -9
- package/dist/types/index.d.cts +65 -19
- package/dist/types/index.d.ts +65 -19
- package/dist/types/loaders/SplatLoader.d.cts +27 -14
- package/dist/types/loaders/SplatLoader.d.ts +27 -14
- package/dist/types/loaders/loadSplatData.d.cts +35 -17
- package/dist/types/loaders/loadSplatData.d.ts +35 -17
- package/dist/types/loaders/loadTypes.d.cts +46 -40
- package/dist/types/loaders/loadTypes.d.ts +46 -40
- package/dist/types/loaders/morton.d.cts +9 -3
- package/dist/types/loaders/morton.d.ts +9 -3
- package/dist/types/loaders/postDecode/builder.d.cts +222 -127
- package/dist/types/loaders/postDecode/builder.d.ts +222 -127
- package/dist/types/loaders/postDecode/compiler.d.cts +25 -11
- package/dist/types/loaders/postDecode/compiler.d.ts +25 -11
- package/dist/types/loaders/postDecode/operations.d.cts +22 -3
- package/dist/types/loaders/postDecode/operations.d.ts +22 -3
- package/dist/types/loaders/postDecode/optimizer.d.cts +5 -2
- package/dist/types/loaders/postDecode/optimizer.d.ts +5 -2
- package/dist/types/loaders/postDecode/program.d.cts +13 -6
- package/dist/types/loaders/postDecode/program.d.ts +13 -6
- package/dist/types/loaders/postDecode/protocol.d.cts +136 -111
- package/dist/types/loaders/postDecode/protocol.d.ts +136 -111
- package/dist/types/loaders/postDecode/registers.d.cts +12 -7
- package/dist/types/loaders/postDecode/registers.d.ts +12 -7
- package/dist/types/loaders/postDecode/runtime.d.cts +9 -2
- package/dist/types/loaders/postDecode/runtime.d.ts +9 -2
- package/dist/types/loaders/rad/RadSource.d.cts +81 -66
- package/dist/types/loaders/rad/RadSource.d.ts +81 -66
- package/dist/types/loaders/rad/radFormat.d.cts +41 -36
- package/dist/types/loaders/rad/radFormat.d.ts +41 -36
- package/dist/types/loaders/rad.d.cts +4 -4
- package/dist/types/loaders/rad.d.ts +4 -4
- package/dist/types/loaders/sog/SogSource.d.cts +14 -4
- package/dist/types/loaders/sog/SogSource.d.ts +14 -4
- package/dist/types/loaders/sog/sogZip.d.cts +12 -12
- package/dist/types/loaders/sog/sogZip.d.ts +12 -12
- package/dist/types/loaders/sog.d.cts +3 -3
- package/dist/types/loaders/sog.d.ts +3 -3
- package/dist/types/loaders/source.d.cts +43 -15
- package/dist/types/loaders/source.d.ts +43 -15
- package/dist/types/loaders/stream/StreamByteBudget.d.cts +4 -4
- package/dist/types/loaders/stream/StreamByteBudget.d.ts +4 -4
- package/dist/types/loaders/stream/StreamCameras.d.cts +27 -18
- package/dist/types/loaders/stream/StreamCameras.d.ts +27 -18
- package/dist/types/loaders/stream/StreamWorkerPool.d.cts +37 -34
- package/dist/types/loaders/stream/StreamWorkerPool.d.ts +37 -34
- package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.cts +15 -11
- package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.ts +15 -11
- package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.cts +13 -9
- package/dist/types/loaders/stream/rad-stream/RadStreamBatch.d.ts +13 -9
- package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.cts +64 -49
- package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.ts +64 -49
- package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.cts +110 -102
- package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.ts +110 -102
- package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.cts +3 -3
- package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.ts +3 -3
- package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.cts +27 -15
- package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.ts +27 -15
- package/dist/types/loaders/stream/rad-stream/radFade.d.cts +13 -8
- package/dist/types/loaders/stream/rad-stream/radFade.d.ts +13 -8
- package/dist/types/loaders/stream/rad-stream/radLod.d.cts +26 -26
- package/dist/types/loaders/stream/rad-stream/radLod.d.ts +26 -26
- package/dist/types/loaders/stream/rad-stream/worker.d.cts +3 -59
- package/dist/types/loaders/stream/rad-stream/worker.d.ts +3 -59
- package/dist/types/loaders/stream/rad-stream/workerHandlers.d.cts +85 -59
- package/dist/types/loaders/stream/rad-stream/workerHandlers.d.ts +85 -59
- package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.cts +17 -12
- package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.ts +17 -12
- package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.cts +56 -41
- package/dist/types/loaders/stream/sog-stream/SogStreamLoader.d.ts +56 -41
- package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.cts +82 -81
- package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.ts +82 -81
- package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.cts +3 -3
- package/dist/types/loaders/stream/sog-stream/SogStreamWorker.d.ts +3 -3
- package/dist/types/loaders/stream/sog-stream/sogLod.d.cts +59 -44
- package/dist/types/loaders/stream/sog-stream/sogLod.d.ts +59 -44
- package/dist/types/loaders/stream/sog-stream/sogVisibility.d.cts +30 -22
- package/dist/types/loaders/stream/sog-stream/sogVisibility.d.ts +30 -22
- package/dist/types/loaders/stream/sog-stream/worker.d.cts +7 -40
- package/dist/types/loaders/stream/sog-stream/worker.d.ts +7 -40
- package/dist/types/loaders/stream/sog-stream/workerHandlers.d.cts +69 -44
- package/dist/types/loaders/stream/sog-stream/workerHandlers.d.ts +69 -44
- package/dist/types/loaders/stream/streamOptions.d.cts +41 -32
- package/dist/types/loaders/stream/streamOptions.d.ts +41 -32
- package/dist/types/loaders/workerDecode.d.cts +30 -12
- package/dist/types/loaders/workerDecode.d.ts +30 -12
- package/dist/types/patches/threeR186.d.cts +3 -0
- package/dist/types/patches/threeR186.d.ts +3 -0
- package/dist/types/rendering/GaussianSplatRenderer.d.cts +393 -376
- package/dist/types/rendering/GaussianSplatRenderer.d.ts +393 -376
- package/dist/types/rendering/MaterialState.d.cts +9 -0
- package/dist/types/rendering/MaterialState.d.ts +9 -0
- package/dist/types/rendering/SortCenterCache.d.cts +17 -17
- package/dist/types/rendering/SortCenterCache.d.ts +17 -17
- package/dist/types/rendering/SplatAccumulator.d.cts +93 -77
- package/dist/types/rendering/SplatAccumulator.d.ts +93 -77
- package/dist/types/rendering/SplatGeometry.d.cts +2 -2
- package/dist/types/rendering/SplatGeometry.d.ts +2 -2
- package/dist/types/rendering/StochasticSplatMaterial.d.cts +14 -0
- package/dist/types/rendering/StochasticSplatMaterial.d.ts +14 -0
- package/dist/types/rendering/backend.d.cts +30 -18
- package/dist/types/rendering/backend.d.ts +30 -18
- package/dist/types/rendering/blueNoise.d.cts +1 -1
- package/dist/types/rendering/blueNoise.d.ts +1 -1
- package/dist/types/rendering/rendererUtils.d.cts +25 -10
- package/dist/types/rendering/rendererUtils.d.ts +25 -10
- package/dist/types/rendering/tsl/GenerateProgram.d.cts +19 -17
- package/dist/types/rendering/tsl/GenerateProgram.d.ts +19 -17
- package/dist/types/rendering/tsl/ProjectionProgram.d.cts +38 -33
- package/dist/types/rendering/tsl/ProjectionProgram.d.ts +38 -33
- package/dist/types/rendering/tsl/SplatBackend.d.cts +22 -10
- package/dist/types/rendering/tsl/SplatBackend.d.ts +22 -10
- package/dist/types/rendering/tsl/SplatMaterial.d.cts +38 -25
- package/dist/types/rendering/tsl/SplatMaterial.d.ts +38 -25
- package/dist/types/rendering/tsl/shaderUtils.d.cts +55 -17
- package/dist/types/rendering/tsl/shaderUtils.d.ts +55 -17
- package/dist/types/rendering/tsl/stochasticCoverage.d.cts +7 -0
- package/dist/types/rendering/tsl/stochasticCoverage.d.ts +7 -0
- package/dist/types/rendering/tsl/viewUniforms.d.cts +19 -9
- package/dist/types/rendering/tsl/viewUniforms.d.ts +19 -9
- package/dist/types/rendering/uniforms.d.cts +83 -83
- package/dist/types/rendering/uniforms.d.ts +83 -83
- package/dist/types/rendering/webgl/AccumulatorGenerator.d.cts +28 -12
- package/dist/types/rendering/webgl/AccumulatorGenerator.d.ts +28 -12
- package/dist/types/rendering/webgl/OrderingTexture.d.cts +10 -7
- package/dist/types/rendering/webgl/OrderingTexture.d.ts +10 -7
- package/dist/types/rendering/webgl/SplatBackend.d.cts +20 -15
- package/dist/types/rendering/webgl/SplatBackend.d.ts +20 -15
- package/dist/types/rendering/webgl/SplatMaterial.d.cts +9 -4
- package/dist/types/rendering/webgl/SplatMaterial.d.ts +9 -4
- package/dist/types/rendering/webgl/textureUtils.d.cts +10 -3
- package/dist/types/rendering/webgl/textureUtils.d.ts +10 -3
- package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.cts +8 -10
- package/dist/types/rendering/webgl-fallback/AccumulatorGenerator.d.ts +8 -10
- package/dist/types/rendering/webgl-fallback/SplatBackend.d.cts +18 -14
- package/dist/types/rendering/webgl-fallback/SplatBackend.d.ts +18 -14
- package/dist/types/rendering/webgpu/ProjectedSplats.d.cts +76 -66
- package/dist/types/rendering/webgpu/ProjectedSplats.d.ts +76 -66
- package/dist/types/rendering/webgpu/ProjectionCache.d.cts +43 -28
- package/dist/types/rendering/webgpu/ProjectionCache.d.ts +43 -28
- package/dist/types/rendering/webgpu/ProjectionKernel.d.cts +22 -0
- package/dist/types/rendering/webgpu/ProjectionKernel.d.ts +22 -0
- package/dist/types/rendering/webgpu/RadixSort.d.cts +44 -40
- package/dist/types/rendering/webgpu/RadixSort.d.ts +44 -40
- package/dist/types/rendering/webgpu/SplatBackend.d.cts +14 -12
- package/dist/types/rendering/webgpu/SplatBackend.d.ts +14 -12
- package/dist/types/runtime/SplatWorker.d.cts +17 -13
- package/dist/types/runtime/SplatWorker.d.ts +17 -13
- package/dist/types/runtime/WorkerRpc.d.cts +26 -20
- package/dist/types/runtime/WorkerRpc.d.ts +26 -20
- package/dist/types/runtime/abort.d.cts +10 -5
- package/dist/types/runtime/abort.d.ts +10 -5
- package/dist/types/runtime/retry.d.cts +6 -6
- package/dist/types/runtime/retry.d.ts +6 -6
- package/dist/types/runtime/wasmCall.d.cts +3 -3
- package/dist/types/runtime/wasmCall.d.ts +3 -3
- package/dist/types/runtime/worker.d.cts +44 -24
- package/dist/types/runtime/worker.d.ts +44 -24
- package/dist/types/runtime/workerServer.d.cts +3 -1
- package/dist/types/runtime/workerServer.d.ts +3 -1
- package/dist/types/scene/SplatEdit.d.cts +74 -67
- package/dist/types/scene/SplatEdit.d.ts +74 -67
- package/dist/types/scene/SplatMesh.d.cts +92 -70
- package/dist/types/scene/SplatMesh.d.ts +92 -70
- package/dist/types/utils/index.d.cts +15 -7
- package/dist/types/utils/index.d.ts +15 -7
- package/dist/types/utils/three.d.cts +3 -3
- package/dist/types/utils/three.d.ts +3 -3
- package/dist/types/utils/transforms.d.cts +10 -3
- package/dist/types/utils/transforms.d.ts +10 -3
- package/docs/GaussianSplatRenderer.md +3 -1
- package/docs/NeuralDenoiseNode.md +148 -0
- package/docs/SplatMesh.md +1 -1
- package/docs/StochasticRendering.md +36 -10
- package/docs/TAAPass.md +20 -3
- package/package.json +9 -11
- package/dist/types/capture/sceneView.d.cts +0 -3
- package/dist/types/capture/sceneView.d.ts +0 -3
- package/dist/types/rendering/tsl/tslCompat.d.cts +0 -68
- package/dist/types/rendering/tsl/tslCompat.d.ts +0 -68
- package/docs/Architecture.md +0 -200
|
@@ -1,86 +1,87 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
export type SogStreamSchedulerOptions = SogStreamLoaderOptions &
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { StreamSchedulerOptions, StreamStats } from "../streamOptions.cjs";
|
|
3
|
+
import type { SogStreamLoaderOptions } from "./SogStreamLoader.cjs";
|
|
4
|
+
export type SogStreamSchedulerOptions = SogStreamLoaderOptions &
|
|
5
|
+
StreamSchedulerOptions;
|
|
5
6
|
export type SogStreamStats = StreamStats & {
|
|
6
|
-
|
|
7
|
+
visibleRegions: number;
|
|
7
8
|
};
|
|
8
9
|
/** Camera-driven Streamed SOG loading with per-chunk sources and region fades. */
|
|
9
10
|
export declare class SogStreamScheduler {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
11
|
+
readonly group: THREE.Group;
|
|
12
|
+
readonly initialized: Promise<this>;
|
|
13
|
+
readonly firstRenderable: Promise<this>;
|
|
14
|
+
readonly cooldownMs: number;
|
|
15
|
+
readonly fadeDurationMs: number;
|
|
16
|
+
readonly maxConcurrentLoads: number;
|
|
17
|
+
private _splatBudget;
|
|
18
|
+
private readonly options;
|
|
19
|
+
private readonly loader;
|
|
20
|
+
private readonly abort;
|
|
21
|
+
private readonly streamCameras;
|
|
22
|
+
private manifest?;
|
|
23
|
+
private readonly lodLeaves;
|
|
24
|
+
private view?;
|
|
25
|
+
private lastRequestedKey;
|
|
26
|
+
private selecting;
|
|
27
|
+
private selection;
|
|
28
|
+
private chunks;
|
|
29
|
+
/** Chunks with a batch, cached source or in-flight load. */
|
|
30
|
+
private readonly activeChunks;
|
|
31
|
+
private environment?;
|
|
32
|
+
private leaves;
|
|
33
|
+
private wanted;
|
|
34
|
+
private readonly fades;
|
|
35
|
+
private shown;
|
|
36
|
+
private disposed;
|
|
37
|
+
private resolveFirst;
|
|
38
|
+
private rejectFirst;
|
|
39
|
+
constructor(options: SogStreamSchedulerOptions);
|
|
40
|
+
/** Visible-point target, including the environment. Reassign to reselect LODs. */
|
|
41
|
+
get splatBudget(): number;
|
|
42
|
+
set splatBudget(value: number);
|
|
43
|
+
get stats(): SogStreamStats;
|
|
44
|
+
/** Group-local bounds from the index; available after initialized resolves. */
|
|
45
|
+
getBoundingBox(): THREE.Box3;
|
|
46
|
+
private initialize;
|
|
47
|
+
/** Cameras that select detail, in registration order. */
|
|
48
|
+
get cameras(): readonly THREE.Camera[];
|
|
49
|
+
hasCamera(camera: THREE.Camera): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Select detail for this camera on each update. Detail follows distance,
|
|
52
|
+
* so it needs no resolution. For WebXR register renderer.xr.getCamera(): it
|
|
53
|
+
* selects the greatest detail needed by any eye that sees the region. Returns whether the camera was
|
|
54
|
+
* newly added.
|
|
55
|
+
*/
|
|
56
|
+
setCamera(camera: THREE.Camera): boolean;
|
|
57
|
+
/** Stop selecting detail for this camera. Returns whether it was registered. */
|
|
58
|
+
deleteCamera(camera: THREE.Camera): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Call before rendering. Returns whether the displayed data changed. Each
|
|
61
|
+
* leaf uses the distance of the nearest registered camera that sees it.
|
|
62
|
+
*/
|
|
63
|
+
update(): boolean;
|
|
64
|
+
private requestSelection;
|
|
65
|
+
private updateRequests;
|
|
66
|
+
private selectRegions;
|
|
67
|
+
private leafState;
|
|
68
|
+
private chunkFor;
|
|
69
|
+
private applySelection;
|
|
70
|
+
private updateRegionVisibility;
|
|
71
|
+
private attachPendingRegions;
|
|
72
|
+
private queueExtractions;
|
|
73
|
+
private addBatchRange;
|
|
74
|
+
private fadeRegion;
|
|
75
|
+
private updateFades;
|
|
76
|
+
private extract;
|
|
77
|
+
private releaseUnused;
|
|
78
|
+
private pump;
|
|
79
|
+
private load;
|
|
80
|
+
private pruneChunk;
|
|
81
|
+
private releaseRegion;
|
|
82
|
+
private changed;
|
|
83
|
+
private failed;
|
|
84
|
+
private readonly retryTimer;
|
|
85
|
+
private rejectFirstIfUnavailable;
|
|
86
|
+
dispose(): void;
|
|
86
87
|
}
|
|
@@ -1,86 +1,87 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
export type SogStreamSchedulerOptions = SogStreamLoaderOptions &
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { StreamSchedulerOptions, StreamStats } from "../streamOptions.js";
|
|
3
|
+
import type { SogStreamLoaderOptions } from "./SogStreamLoader.js";
|
|
4
|
+
export type SogStreamSchedulerOptions = SogStreamLoaderOptions &
|
|
5
|
+
StreamSchedulerOptions;
|
|
5
6
|
export type SogStreamStats = StreamStats & {
|
|
6
|
-
|
|
7
|
+
visibleRegions: number;
|
|
7
8
|
};
|
|
8
9
|
/** Camera-driven Streamed SOG loading with per-chunk sources and region fades. */
|
|
9
10
|
export declare class SogStreamScheduler {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
11
|
+
readonly group: THREE.Group;
|
|
12
|
+
readonly initialized: Promise<this>;
|
|
13
|
+
readonly firstRenderable: Promise<this>;
|
|
14
|
+
readonly cooldownMs: number;
|
|
15
|
+
readonly fadeDurationMs: number;
|
|
16
|
+
readonly maxConcurrentLoads: number;
|
|
17
|
+
private _splatBudget;
|
|
18
|
+
private readonly options;
|
|
19
|
+
private readonly loader;
|
|
20
|
+
private readonly abort;
|
|
21
|
+
private readonly streamCameras;
|
|
22
|
+
private manifest?;
|
|
23
|
+
private readonly lodLeaves;
|
|
24
|
+
private view?;
|
|
25
|
+
private lastRequestedKey;
|
|
26
|
+
private selecting;
|
|
27
|
+
private selection;
|
|
28
|
+
private chunks;
|
|
29
|
+
/** Chunks with a batch, cached source or in-flight load. */
|
|
30
|
+
private readonly activeChunks;
|
|
31
|
+
private environment?;
|
|
32
|
+
private leaves;
|
|
33
|
+
private wanted;
|
|
34
|
+
private readonly fades;
|
|
35
|
+
private shown;
|
|
36
|
+
private disposed;
|
|
37
|
+
private resolveFirst;
|
|
38
|
+
private rejectFirst;
|
|
39
|
+
constructor(options: SogStreamSchedulerOptions);
|
|
40
|
+
/** Visible-point target, including the environment. Reassign to reselect LODs. */
|
|
41
|
+
get splatBudget(): number;
|
|
42
|
+
set splatBudget(value: number);
|
|
43
|
+
get stats(): SogStreamStats;
|
|
44
|
+
/** Group-local bounds from the index; available after initialized resolves. */
|
|
45
|
+
getBoundingBox(): THREE.Box3;
|
|
46
|
+
private initialize;
|
|
47
|
+
/** Cameras that select detail, in registration order. */
|
|
48
|
+
get cameras(): readonly THREE.Camera[];
|
|
49
|
+
hasCamera(camera: THREE.Camera): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Select detail for this camera on each update. Detail follows distance,
|
|
52
|
+
* so it needs no resolution. For WebXR register renderer.xr.getCamera(): it
|
|
53
|
+
* selects the greatest detail needed by any eye that sees the region. Returns whether the camera was
|
|
54
|
+
* newly added.
|
|
55
|
+
*/
|
|
56
|
+
setCamera(camera: THREE.Camera): boolean;
|
|
57
|
+
/** Stop selecting detail for this camera. Returns whether it was registered. */
|
|
58
|
+
deleteCamera(camera: THREE.Camera): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Call before rendering. Returns whether the displayed data changed. Each
|
|
61
|
+
* leaf uses the distance of the nearest registered camera that sees it.
|
|
62
|
+
*/
|
|
63
|
+
update(): boolean;
|
|
64
|
+
private requestSelection;
|
|
65
|
+
private updateRequests;
|
|
66
|
+
private selectRegions;
|
|
67
|
+
private leafState;
|
|
68
|
+
private chunkFor;
|
|
69
|
+
private applySelection;
|
|
70
|
+
private updateRegionVisibility;
|
|
71
|
+
private attachPendingRegions;
|
|
72
|
+
private queueExtractions;
|
|
73
|
+
private addBatchRange;
|
|
74
|
+
private fadeRegion;
|
|
75
|
+
private updateFades;
|
|
76
|
+
private extract;
|
|
77
|
+
private releaseUnused;
|
|
78
|
+
private pump;
|
|
79
|
+
private load;
|
|
80
|
+
private pruneChunk;
|
|
81
|
+
private releaseRegion;
|
|
82
|
+
private changed;
|
|
83
|
+
private failed;
|
|
84
|
+
private readonly retryTimer;
|
|
85
|
+
private rejectFirstIfUnavailable;
|
|
86
|
+
dispose(): void;
|
|
86
87
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { WorkerRpc } from
|
|
2
|
-
import { SogStreamRpcHandlers } from
|
|
1
|
+
import { WorkerRpc } from "../../../runtime/WorkerRpc.cjs";
|
|
2
|
+
import type { SogStreamRpcHandlers } from "./worker.cjs";
|
|
3
3
|
/** Worker assigned either LOD traversal or retained chunk decoding. */
|
|
4
4
|
export declare class SogStreamWorker extends WorkerRpc<SogStreamRpcHandlers> {
|
|
5
|
-
|
|
5
|
+
constructor(onDispose?: () => void);
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { WorkerRpc } from
|
|
2
|
-
import { SogStreamRpcHandlers } from
|
|
1
|
+
import { WorkerRpc } from "../../../runtime/WorkerRpc.js";
|
|
2
|
+
import type { SogStreamRpcHandlers } from "./worker.js";
|
|
3
3
|
/** Worker assigned either LOD traversal or retained chunk decoding. */
|
|
4
4
|
export declare class SogStreamWorker extends WorkerRpc<SogStreamRpcHandlers> {
|
|
5
|
-
|
|
5
|
+
constructor(onDispose?: () => void);
|
|
6
6
|
}
|
|
@@ -1,70 +1,85 @@
|
|
|
1
|
-
import { Box3 } from
|
|
1
|
+
import type { Box3 } from "three";
|
|
2
2
|
export type SogLodRange = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
leaf: number;
|
|
4
|
+
level: number;
|
|
5
|
+
/** -1 for an empty LOD, which has no backing file. */
|
|
6
|
+
file: number;
|
|
7
|
+
offset: number;
|
|
8
|
+
count: number;
|
|
9
9
|
};
|
|
10
10
|
export type SogLodLeaf = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
id: number;
|
|
12
|
+
/** Coarse to fine, with strictly increasing counts and decreasing levels. */
|
|
13
|
+
lods: SogLodRange[];
|
|
14
14
|
};
|
|
15
15
|
export type SogLodNode = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
bound: Box3;
|
|
17
|
+
children?: SogLodNode[];
|
|
18
|
+
leaf?: SogLodLeaf;
|
|
19
19
|
};
|
|
20
20
|
export type SogLodFile = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
url: string;
|
|
22
|
+
count: number;
|
|
23
|
+
ranges: SogLodRange[];
|
|
24
24
|
};
|
|
25
25
|
export type SogLodManifest = {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
tree: SogLodNode;
|
|
27
|
+
leaves: SogLodLeaf[];
|
|
28
|
+
/** Flattened in leaf/LOD order; each leaf's first entry is unused. */
|
|
29
|
+
upgradeRatios: number[];
|
|
30
|
+
files: SogLodFile[];
|
|
31
|
+
environment?: string;
|
|
32
32
|
};
|
|
33
33
|
export declare const SOG_LOD_STRIDE = 4;
|
|
34
34
|
/** Packed worker index. Float64 preserves source bounds and safe-integer counts. */
|
|
35
35
|
export type SogLodIndex = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
/** Preorder nodes: min XYZ, max XYZ, next index after the subtree, leaf ID (-1 for interiors). */
|
|
37
|
+
nodes: Float64Array;
|
|
38
|
+
leafOffsets: Uint32Array;
|
|
39
|
+
/** Per level: level, file, offset, count. */
|
|
40
|
+
lods: Float64Array;
|
|
41
|
+
/** Best reachable distance-error reduction per added splat, in LOD order. */
|
|
42
|
+
upgradeRatios: Float32Array;
|
|
43
|
+
urls: string[];
|
|
44
|
+
counts: Float64Array;
|
|
45
|
+
environment?: string;
|
|
46
46
|
};
|
|
47
47
|
/** Scheduler metadata; the complete spatial tree stays in the LOD worker. */
|
|
48
48
|
export type SogLodMetadata = Omit<SogLodIndex, "nodes" | "upgradeRatios"> & {
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
/** Root min XYZ and max XYZ. */
|
|
50
|
+
bounds: Float64Array;
|
|
51
51
|
};
|
|
52
52
|
/** Flatten the tree and ranges into transferable typed arrays. */
|
|
53
53
|
export declare function packSogLodIndex(manifest: SogLodManifest): SogLodIndex;
|
|
54
54
|
/** Materialize only leaves visited by the camera, preserving stable range identities. */
|
|
55
|
-
export declare function readSogLodLeaf(
|
|
55
|
+
export declare function readSogLodLeaf(
|
|
56
|
+
index: Pick<SogLodIndex, "leafOffsets" | "lods">,
|
|
57
|
+
id: number,
|
|
58
|
+
): SogLodLeaf;
|
|
56
59
|
/** Streamed SOG v1, including the earlier unversioned manifests. */
|
|
57
|
-
export declare function parseSogLodManifest(
|
|
60
|
+
export declare function parseSogLodManifest(
|
|
61
|
+
value: unknown,
|
|
62
|
+
baseUrl: string,
|
|
63
|
+
): SogLodManifest;
|
|
58
64
|
export type SogVisibleLeaf = {
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
leaf: SogLodLeaf;
|
|
66
|
+
weight: number;
|
|
61
67
|
};
|
|
62
68
|
/** Reuse cached refinements up to the target, then split gaps of four or more. */
|
|
63
|
-
export declare function resolveSogLod(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
export declare function resolveSogLod(
|
|
70
|
+
leaf: SogLodLeaf,
|
|
71
|
+
target: SogLodRange,
|
|
72
|
+
current: SogLodRange | undefined,
|
|
73
|
+
isLoaded: (range: SogLodRange) => boolean,
|
|
74
|
+
): {
|
|
75
|
+
range: SogLodRange | undefined;
|
|
76
|
+
load?: SogLodRange;
|
|
77
|
+
/** Wait until range is attached before requesting the next LOD. */
|
|
78
|
+
refinement?: boolean;
|
|
68
79
|
};
|
|
69
80
|
/** Distance bands within a splat budget, using a small heap. */
|
|
70
|
-
export declare function selectSogLods(
|
|
81
|
+
export declare function selectSogLods(
|
|
82
|
+
visible: SogVisibleLeaf[],
|
|
83
|
+
budget: number,
|
|
84
|
+
manifest: Pick<SogLodIndex, "leafOffsets" | "upgradeRatios">,
|
|
85
|
+
): Map<number, SogLodRange>;
|
|
@@ -1,70 +1,85 @@
|
|
|
1
|
-
import { Box3 } from
|
|
1
|
+
import type { Box3 } from "three";
|
|
2
2
|
export type SogLodRange = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
leaf: number;
|
|
4
|
+
level: number;
|
|
5
|
+
/** -1 for an empty LOD, which has no backing file. */
|
|
6
|
+
file: number;
|
|
7
|
+
offset: number;
|
|
8
|
+
count: number;
|
|
9
9
|
};
|
|
10
10
|
export type SogLodLeaf = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
id: number;
|
|
12
|
+
/** Coarse to fine, with strictly increasing counts and decreasing levels. */
|
|
13
|
+
lods: SogLodRange[];
|
|
14
14
|
};
|
|
15
15
|
export type SogLodNode = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
bound: Box3;
|
|
17
|
+
children?: SogLodNode[];
|
|
18
|
+
leaf?: SogLodLeaf;
|
|
19
19
|
};
|
|
20
20
|
export type SogLodFile = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
url: string;
|
|
22
|
+
count: number;
|
|
23
|
+
ranges: SogLodRange[];
|
|
24
24
|
};
|
|
25
25
|
export type SogLodManifest = {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
tree: SogLodNode;
|
|
27
|
+
leaves: SogLodLeaf[];
|
|
28
|
+
/** Flattened in leaf/LOD order; each leaf's first entry is unused. */
|
|
29
|
+
upgradeRatios: number[];
|
|
30
|
+
files: SogLodFile[];
|
|
31
|
+
environment?: string;
|
|
32
32
|
};
|
|
33
33
|
export declare const SOG_LOD_STRIDE = 4;
|
|
34
34
|
/** Packed worker index. Float64 preserves source bounds and safe-integer counts. */
|
|
35
35
|
export type SogLodIndex = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
/** Preorder nodes: min XYZ, max XYZ, next index after the subtree, leaf ID (-1 for interiors). */
|
|
37
|
+
nodes: Float64Array;
|
|
38
|
+
leafOffsets: Uint32Array;
|
|
39
|
+
/** Per level: level, file, offset, count. */
|
|
40
|
+
lods: Float64Array;
|
|
41
|
+
/** Best reachable distance-error reduction per added splat, in LOD order. */
|
|
42
|
+
upgradeRatios: Float32Array;
|
|
43
|
+
urls: string[];
|
|
44
|
+
counts: Float64Array;
|
|
45
|
+
environment?: string;
|
|
46
46
|
};
|
|
47
47
|
/** Scheduler metadata; the complete spatial tree stays in the LOD worker. */
|
|
48
48
|
export type SogLodMetadata = Omit<SogLodIndex, "nodes" | "upgradeRatios"> & {
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
/** Root min XYZ and max XYZ. */
|
|
50
|
+
bounds: Float64Array;
|
|
51
51
|
};
|
|
52
52
|
/** Flatten the tree and ranges into transferable typed arrays. */
|
|
53
53
|
export declare function packSogLodIndex(manifest: SogLodManifest): SogLodIndex;
|
|
54
54
|
/** Materialize only leaves visited by the camera, preserving stable range identities. */
|
|
55
|
-
export declare function readSogLodLeaf(
|
|
55
|
+
export declare function readSogLodLeaf(
|
|
56
|
+
index: Pick<SogLodIndex, "leafOffsets" | "lods">,
|
|
57
|
+
id: number,
|
|
58
|
+
): SogLodLeaf;
|
|
56
59
|
/** Streamed SOG v1, including the earlier unversioned manifests. */
|
|
57
|
-
export declare function parseSogLodManifest(
|
|
60
|
+
export declare function parseSogLodManifest(
|
|
61
|
+
value: unknown,
|
|
62
|
+
baseUrl: string,
|
|
63
|
+
): SogLodManifest;
|
|
58
64
|
export type SogVisibleLeaf = {
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
leaf: SogLodLeaf;
|
|
66
|
+
weight: number;
|
|
61
67
|
};
|
|
62
68
|
/** Reuse cached refinements up to the target, then split gaps of four or more. */
|
|
63
|
-
export declare function resolveSogLod(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
export declare function resolveSogLod(
|
|
70
|
+
leaf: SogLodLeaf,
|
|
71
|
+
target: SogLodRange,
|
|
72
|
+
current: SogLodRange | undefined,
|
|
73
|
+
isLoaded: (range: SogLodRange) => boolean,
|
|
74
|
+
): {
|
|
75
|
+
range: SogLodRange | undefined;
|
|
76
|
+
load?: SogLodRange;
|
|
77
|
+
/** Wait until range is attached before requesting the next LOD. */
|
|
78
|
+
refinement?: boolean;
|
|
68
79
|
};
|
|
69
80
|
/** Distance bands within a splat budget, using a small heap. */
|
|
70
|
-
export declare function selectSogLods(
|
|
81
|
+
export declare function selectSogLods(
|
|
82
|
+
visible: SogVisibleLeaf[],
|
|
83
|
+
budget: number,
|
|
84
|
+
manifest: Pick<SogLodIndex, "leafOffsets" | "upgradeRatios">,
|
|
85
|
+
): Map<number, SogLodRange>;
|