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.
- package/CHANGELOG.md +61 -2
- package/CONTRIBUTING.md +4 -2
- package/README.md +4 -3
- package/dist/gaussian-splat-lite.cjs +6782 -1661
- package/dist/gaussian-splat-lite.cjs.map +1 -1
- package/dist/gaussian-splat-lite.min.cjs +991 -15
- package/dist/gaussian-splat-lite.min.cjs.map +1 -1
- package/dist/gaussian-splat-lite.module.js +6328 -1207
- package/dist/gaussian-splat-lite.module.js.map +1 -1
- package/dist/gaussian-splat-lite.module.min.js +8208 -3572
- 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 +83 -58
- package/dist/types/data/IndexedSplats.d.ts +83 -58
- package/dist/types/data/RadPagedSplats.d.cts +66 -61
- package/dist/types/data/RadPagedSplats.d.ts +66 -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 +36 -29
- package/dist/types/data/SplatOpacityTable.d.ts +36 -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/StreamCameras.d.cts +27 -18
- package/dist/types/loaders/stream/StreamCameras.d.ts +27 -18
- package/dist/types/loaders/stream/StreamWorkerPool.d.cts +37 -37
- package/dist/types/loaders/stream/StreamWorkerPool.d.ts +37 -37
- package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.cts +20 -13
- package/dist/types/loaders/stream/rad-stream/RadSelectionState.d.ts +20 -13
- 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 +69 -51
- package/dist/types/loaders/stream/rad-stream/RadStreamLoader.d.ts +69 -51
- package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.cts +126 -102
- package/dist/types/loaders/stream/rad-stream/RadStreamScheduler.d.ts +126 -102
- package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.cts +4 -4
- package/dist/types/loaders/stream/rad-stream/RadStreamWorker.d.ts +4 -4
- package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.cts +20 -17
- package/dist/types/loaders/stream/rad-stream/prepareRadSelection.d.ts +20 -17
- 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 +29 -27
- package/dist/types/loaders/stream/rad-stream/radLod.d.ts +29 -27
- 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 +58 -61
- package/dist/types/loaders/stream/rad-stream/workerHandlers.d.ts +58 -61
- package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.cts +16 -12
- package/dist/types/loaders/stream/sog-stream/SogStreamBatch.d.ts +16 -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 +102 -81
- package/dist/types/loaders/stream/sog-stream/SogStreamScheduler.d.ts +102 -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 +67 -46
- package/dist/types/loaders/stream/sog-stream/sogLod.d.ts +67 -46
- package/dist/types/loaders/stream/sog-stream/sogVisibility.d.cts +28 -22
- package/dist/types/loaders/stream/sog-stream/sogVisibility.d.ts +28 -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 +63 -44
- package/dist/types/loaders/stream/sog-stream/workerHandlers.d.ts +63 -44
- package/dist/types/loaders/stream/streamOptions.d.cts +43 -33
- package/dist/types/loaders/stream/streamOptions.d.ts +43 -33
- 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/RadStreamScheduler.md +14 -5
- package/docs/SogStreamScheduler.md +8 -6
- 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/loaders/stream/StreamByteBudget.d.cts +0 -7
- package/dist/types/loaders/stream/StreamByteBudget.d.ts +0 -7
- 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,70 +1,91 @@
|
|
|
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 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
|
-
environment?: string;
|
|
26
|
+
tree: SogLodNode;
|
|
27
|
+
leaves: SogLodLeaf[];
|
|
28
|
+
lodLevels: number;
|
|
29
|
+
files: SogLodFile[];
|
|
30
|
+
environment?: string;
|
|
32
31
|
};
|
|
33
32
|
export declare const SOG_LOD_STRIDE = 4;
|
|
34
33
|
/** Packed worker index. Float64 preserves source bounds and safe-integer counts. */
|
|
35
34
|
export type SogLodIndex = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
environment?: string;
|
|
35
|
+
/** Preorder nodes: min XYZ, max XYZ, next index after the subtree, leaf ID (-1 for interiors). */
|
|
36
|
+
nodes: Float64Array;
|
|
37
|
+
leafOffsets: Uint32Array;
|
|
38
|
+
/** Per level: level, file, offset, count. */
|
|
39
|
+
lods: Float64Array;
|
|
40
|
+
lodLevels: number;
|
|
41
|
+
urls: string[];
|
|
42
|
+
counts: Float64Array;
|
|
43
|
+
environment?: string;
|
|
46
44
|
};
|
|
47
45
|
/** Scheduler metadata; the complete spatial tree stays in the LOD worker. */
|
|
48
|
-
export type SogLodMetadata = Omit<SogLodIndex, "nodes" | "
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
export type SogLodMetadata = Omit<SogLodIndex, "nodes" | "lodLevels"> & {
|
|
47
|
+
/** Root min XYZ and max XYZ. */
|
|
48
|
+
bounds: Float64Array;
|
|
51
49
|
};
|
|
52
50
|
/** Flatten the tree and ranges into transferable typed arrays. */
|
|
53
51
|
export declare function packSogLodIndex(manifest: SogLodManifest): SogLodIndex;
|
|
54
52
|
/** Materialize only leaves visited by the camera, preserving stable range identities. */
|
|
55
|
-
export declare function readSogLodLeaf(
|
|
53
|
+
export declare function readSogLodLeaf(
|
|
54
|
+
index: Pick<SogLodIndex, "leafOffsets" | "lods">,
|
|
55
|
+
id: number,
|
|
56
|
+
): SogLodLeaf;
|
|
56
57
|
/** Streamed SOG v1, including the earlier unversioned manifests. */
|
|
57
|
-
export declare function parseSogLodManifest(
|
|
58
|
+
export declare function parseSogLodManifest(
|
|
59
|
+
value: unknown,
|
|
60
|
+
baseUrl: string,
|
|
61
|
+
): SogLodManifest;
|
|
58
62
|
export type SogVisibleLeaf = {
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
leaf: SogLodLeaf;
|
|
64
|
+
/** World-space distance to the region, compensated for the camera's field of view. */
|
|
65
|
+
distance: number;
|
|
66
|
+
};
|
|
67
|
+
export type SogBudgetMode = "target" | "limit";
|
|
68
|
+
export type SogLodOptions = {
|
|
69
|
+
budget: number;
|
|
70
|
+
splatBudgetMode: SogBudgetMode;
|
|
71
|
+
lodBaseDistance: number;
|
|
72
|
+
lodMultiplier: number;
|
|
61
73
|
};
|
|
62
74
|
/** Reuse cached refinements up to the target, then split gaps of four or more. */
|
|
63
|
-
export declare function resolveSogLod(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
export declare function resolveSogLod(
|
|
76
|
+
leaf: SogLodLeaf,
|
|
77
|
+
target: SogLodRange,
|
|
78
|
+
current: SogLodRange | undefined,
|
|
79
|
+
isLoaded: (range: SogLodRange) => boolean,
|
|
80
|
+
): {
|
|
81
|
+
range: SogLodRange | undefined;
|
|
82
|
+
load?: SogLodRange;
|
|
83
|
+
/** Wait until range is attached before requesting the next LOD. */
|
|
84
|
+
refinement?: boolean;
|
|
68
85
|
};
|
|
69
|
-
/**
|
|
70
|
-
export declare function selectSogLods(
|
|
86
|
+
/** Select distance bands, fitting their common base distance to the splat budget. */
|
|
87
|
+
export declare function selectSogLods(
|
|
88
|
+
visible: SogVisibleLeaf[],
|
|
89
|
+
lodLevels: number,
|
|
90
|
+
options: SogLodOptions,
|
|
91
|
+
): Map<number, SogLodRange>;
|
|
@@ -1,35 +1,41 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { SogLodIndex, SogLodOptions } from "./sogLod.cjs";
|
|
3
3
|
export type SogCamera = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
modelView: number[];
|
|
5
|
+
projection: number[];
|
|
6
|
+
coordinateSystem: THREE.CoordinateSystem;
|
|
7
|
+
reversedDepth: boolean;
|
|
8
8
|
};
|
|
9
9
|
export type SogView = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
/** The registered cameras that see the group; selection serves all of them. */
|
|
11
|
+
cameras: SogCamera[];
|
|
12
|
+
shown: boolean;
|
|
13
13
|
};
|
|
14
|
+
export type SogLodRequest = SogLodOptions & { view: SogView };
|
|
14
15
|
/**
|
|
15
16
|
* Capture the cameras that see the group without traversing the manifest or
|
|
16
17
|
* reducing matrix precision. WebXR selects detail from each eye's current pose and frustum.
|
|
17
18
|
*/
|
|
18
|
-
export declare function captureSogView(
|
|
19
|
+
export declare function captureSogView(
|
|
20
|
+
cameras: readonly THREE.Camera[],
|
|
21
|
+
group: THREE.Object3D,
|
|
22
|
+
): SogView;
|
|
19
23
|
/** Stable key of a view, for skipping unchanged selection requests. */
|
|
20
24
|
export declare function getSogViewKey(view: SogView): string;
|
|
21
25
|
/** Worker traversal state keeps leaf identities stable between selections. */
|
|
22
26
|
export declare class SogVisibility {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
private readonly manifest;
|
|
28
|
+
private readonly leaves;
|
|
29
|
+
private readonly cameras;
|
|
30
|
+
private readonly clip;
|
|
31
|
+
private readonly bound;
|
|
32
|
+
private readonly closest;
|
|
33
|
+
private readonly inverseModelView;
|
|
34
|
+
constructor(
|
|
35
|
+
manifest: Pick<SogLodIndex, "nodes" | "leafOffsets" | "lods" | "lodLevels">,
|
|
36
|
+
);
|
|
37
|
+
private prepareCameras;
|
|
38
|
+
private collect;
|
|
39
|
+
/** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
|
|
40
|
+
select(request: SogLodRequest): Uint32Array;
|
|
35
41
|
}
|
|
@@ -1,35 +1,41 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { SogLodIndex, SogLodOptions } from "./sogLod.js";
|
|
3
3
|
export type SogCamera = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
modelView: number[];
|
|
5
|
+
projection: number[];
|
|
6
|
+
coordinateSystem: THREE.CoordinateSystem;
|
|
7
|
+
reversedDepth: boolean;
|
|
8
8
|
};
|
|
9
9
|
export type SogView = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
/** The registered cameras that see the group; selection serves all of them. */
|
|
11
|
+
cameras: SogCamera[];
|
|
12
|
+
shown: boolean;
|
|
13
13
|
};
|
|
14
|
+
export type SogLodRequest = SogLodOptions & { view: SogView };
|
|
14
15
|
/**
|
|
15
16
|
* Capture the cameras that see the group without traversing the manifest or
|
|
16
17
|
* reducing matrix precision. WebXR selects detail from each eye's current pose and frustum.
|
|
17
18
|
*/
|
|
18
|
-
export declare function captureSogView(
|
|
19
|
+
export declare function captureSogView(
|
|
20
|
+
cameras: readonly THREE.Camera[],
|
|
21
|
+
group: THREE.Object3D,
|
|
22
|
+
): SogView;
|
|
19
23
|
/** Stable key of a view, for skipping unchanged selection requests. */
|
|
20
24
|
export declare function getSogViewKey(view: SogView): string;
|
|
21
25
|
/** Worker traversal state keeps leaf identities stable between selections. */
|
|
22
26
|
export declare class SogVisibility {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
private readonly manifest;
|
|
28
|
+
private readonly leaves;
|
|
29
|
+
private readonly cameras;
|
|
30
|
+
private readonly clip;
|
|
31
|
+
private readonly bound;
|
|
32
|
+
private readonly closest;
|
|
33
|
+
private readonly inverseModelView;
|
|
34
|
+
constructor(
|
|
35
|
+
manifest: Pick<SogLodIndex, "nodes" | "leafOffsets" | "lods" | "lodLevels">,
|
|
36
|
+
);
|
|
37
|
+
private prepareCameras;
|
|
38
|
+
private collect;
|
|
39
|
+
/** Transfer only [leaf ID, LOD ordinal] pairs in loading priority order. */
|
|
40
|
+
select(request: SogLodRequest): Uint32Array;
|
|
35
41
|
}
|
|
@@ -1,41 +1,8 @@
|
|
|
1
|
-
import { resolveAsset } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}) => Promise<import('./workerHandlers.cjs').SogChunkInfo>;
|
|
9
|
-
cacheSogChunk: ({ id, data, }: {
|
|
10
|
-
id: number;
|
|
11
|
-
data: import('../../../data/defines.cjs').SplatResult;
|
|
12
|
-
}) => import('./workerHandlers.cjs').SogChunkInfo;
|
|
13
|
-
extractSogRegions: ({ id, ranges, }: {
|
|
14
|
-
id: number;
|
|
15
|
-
ranges: {
|
|
16
|
-
start: number;
|
|
17
|
-
count: number;
|
|
18
|
-
}[];
|
|
19
|
-
}) => import('../../../data/defines.cjs').ReorderedSplatResult[];
|
|
20
|
-
releaseSogChunk: ({ id }: {
|
|
21
|
-
id: number;
|
|
22
|
-
}) => void;
|
|
23
|
-
parseSogIndex: ({ bytes, baseUrl, }: {
|
|
24
|
-
bytes: ArrayBuffer;
|
|
25
|
-
baseUrl: string;
|
|
26
|
-
}) => {
|
|
27
|
-
bounds: Float64Array<ArrayBuffer>;
|
|
28
|
-
leafOffsets: Uint32Array<ArrayBuffer>;
|
|
29
|
-
lods: Float64Array<ArrayBuffer>;
|
|
30
|
-
retainedIndexBytes: number;
|
|
31
|
-
urls: string[];
|
|
32
|
-
counts: Float64Array;
|
|
33
|
-
environment?: string;
|
|
34
|
-
};
|
|
35
|
-
selectSogLod: ({ view, budget }: {
|
|
36
|
-
view: import('./sogVisibility.cjs').SogView;
|
|
37
|
-
budget: number;
|
|
38
|
-
}) => Uint32Array<ArrayBufferLike>;
|
|
1
|
+
import type { resolveAsset } from "../../workerDecode.cjs";
|
|
2
|
+
import type { createSogStreamHandlers } from "./workerHandlers.cjs";
|
|
3
|
+
|
|
4
|
+
export type SogStreamRpcHandlers = ReturnType<
|
|
5
|
+
typeof createSogStreamHandlers
|
|
6
|
+
> & {
|
|
7
|
+
resolveAsset: typeof resolveAsset;
|
|
39
8
|
};
|
|
40
|
-
export type SogStreamRpcHandlers = typeof rpcHandlers;
|
|
41
|
-
export {};
|
|
@@ -1,41 +1,8 @@
|
|
|
1
|
-
import { resolveAsset } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}) => Promise<import('./workerHandlers').SogChunkInfo>;
|
|
9
|
-
cacheSogChunk: ({ id, data, }: {
|
|
10
|
-
id: number;
|
|
11
|
-
data: import('../../../data/defines').SplatResult;
|
|
12
|
-
}) => import('./workerHandlers').SogChunkInfo;
|
|
13
|
-
extractSogRegions: ({ id, ranges, }: {
|
|
14
|
-
id: number;
|
|
15
|
-
ranges: {
|
|
16
|
-
start: number;
|
|
17
|
-
count: number;
|
|
18
|
-
}[];
|
|
19
|
-
}) => import('../../../data/defines').ReorderedSplatResult[];
|
|
20
|
-
releaseSogChunk: ({ id }: {
|
|
21
|
-
id: number;
|
|
22
|
-
}) => void;
|
|
23
|
-
parseSogIndex: ({ bytes, baseUrl, }: {
|
|
24
|
-
bytes: ArrayBuffer;
|
|
25
|
-
baseUrl: string;
|
|
26
|
-
}) => {
|
|
27
|
-
bounds: Float64Array<ArrayBuffer>;
|
|
28
|
-
leafOffsets: Uint32Array<ArrayBuffer>;
|
|
29
|
-
lods: Float64Array<ArrayBuffer>;
|
|
30
|
-
retainedIndexBytes: number;
|
|
31
|
-
urls: string[];
|
|
32
|
-
counts: Float64Array;
|
|
33
|
-
environment?: string;
|
|
34
|
-
};
|
|
35
|
-
selectSogLod: ({ view, budget }: {
|
|
36
|
-
view: import('./sogVisibility').SogView;
|
|
37
|
-
budget: number;
|
|
38
|
-
}) => Uint32Array<ArrayBufferLike>;
|
|
1
|
+
import type { resolveAsset } from "../../workerDecode.js";
|
|
2
|
+
import type { createSogStreamHandlers } from "./workerHandlers.js";
|
|
3
|
+
|
|
4
|
+
export type SogStreamRpcHandlers = ReturnType<
|
|
5
|
+
typeof createSogStreamHandlers
|
|
6
|
+
> & {
|
|
7
|
+
resolveAsset: typeof resolveAsset;
|
|
39
8
|
};
|
|
40
|
-
export type SogStreamRpcHandlers = typeof rpcHandlers;
|
|
41
|
-
export {};
|
|
@@ -1,48 +1,67 @@
|
|
|
1
|
-
import { SplatResult } from
|
|
2
|
-
import { SplatLoadArgs, SplatLoadStatus } from
|
|
3
|
-
import {
|
|
1
|
+
import type { SplatResult } from "../../../data/defines.cjs";
|
|
2
|
+
import type { SplatLoadArgs, SplatLoadStatus } from "../../loadTypes.cjs";
|
|
3
|
+
import type { SogLodRequest } from "./sogVisibility.cjs";
|
|
4
4
|
export type SogChunkInfo = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
numSplats: number;
|
|
6
|
+
numSh: number;
|
|
7
|
+
byteLength: number;
|
|
8
8
|
};
|
|
9
9
|
/** LOD workers parse the index once before selection; other workers own chunk caches. */
|
|
10
|
-
export declare function createSogStreamHandlers(
|
|
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
|
-
|
|
10
|
+
export declare function createSogStreamHandlers(
|
|
11
|
+
decodeSplats: (
|
|
12
|
+
args: SplatLoadArgs,
|
|
13
|
+
options: {
|
|
14
|
+
sendStatus: (data: SplatLoadStatus) => void;
|
|
15
|
+
},
|
|
16
|
+
) => Promise<SplatResult>,
|
|
17
|
+
): {
|
|
18
|
+
loadSogChunk: (
|
|
19
|
+
{
|
|
20
|
+
id,
|
|
21
|
+
...args
|
|
22
|
+
}: SplatLoadArgs & {
|
|
23
|
+
id: number;
|
|
24
|
+
},
|
|
25
|
+
options: {
|
|
26
|
+
sendStatus: (data: SplatLoadStatus) => void;
|
|
27
|
+
},
|
|
28
|
+
) => Promise<SogChunkInfo>;
|
|
29
|
+
cacheSogChunk: ({
|
|
30
|
+
id,
|
|
31
|
+
data,
|
|
32
|
+
}: {
|
|
33
|
+
id: number;
|
|
34
|
+
data: SplatResult;
|
|
35
|
+
}) => SogChunkInfo;
|
|
36
|
+
extractSogRegions: ({
|
|
37
|
+
id,
|
|
38
|
+
ranges,
|
|
39
|
+
}: {
|
|
40
|
+
id: number;
|
|
41
|
+
ranges: {
|
|
42
|
+
start: number;
|
|
43
|
+
count: number;
|
|
44
|
+
}[];
|
|
45
|
+
}) => import("../../../data/defines.cjs").ReorderedSplatResult[];
|
|
46
|
+
releaseSogChunk: ({
|
|
47
|
+
id,
|
|
48
|
+
}: {
|
|
49
|
+
id: number;
|
|
50
|
+
}) => void;
|
|
51
|
+
parseSogIndex: ({
|
|
52
|
+
bytes,
|
|
53
|
+
baseUrl,
|
|
54
|
+
}: {
|
|
55
|
+
bytes: ArrayBuffer;
|
|
56
|
+
baseUrl: string;
|
|
57
|
+
}) => {
|
|
58
|
+
bounds: Float64Array<ArrayBuffer>;
|
|
59
|
+
leafOffsets: Uint32Array<ArrayBuffer>;
|
|
60
|
+
lods: Float64Array<ArrayBuffer>;
|
|
61
|
+
retainedIndexBytes: number;
|
|
62
|
+
urls: string[];
|
|
63
|
+
counts: Float64Array;
|
|
64
|
+
environment?: string;
|
|
65
|
+
};
|
|
66
|
+
selectSogLod: (request: SogLodRequest) => Uint32Array<ArrayBufferLike>;
|
|
48
67
|
};
|
|
@@ -1,48 +1,67 @@
|
|
|
1
|
-
import { SplatResult } from
|
|
2
|
-
import { SplatLoadArgs, SplatLoadStatus } from
|
|
3
|
-
import {
|
|
1
|
+
import type { SplatResult } from "../../../data/defines.js";
|
|
2
|
+
import type { SplatLoadArgs, SplatLoadStatus } from "../../loadTypes.js";
|
|
3
|
+
import type { SogLodRequest } from "./sogVisibility.js";
|
|
4
4
|
export type SogChunkInfo = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
numSplats: number;
|
|
6
|
+
numSh: number;
|
|
7
|
+
byteLength: number;
|
|
8
8
|
};
|
|
9
9
|
/** LOD workers parse the index once before selection; other workers own chunk caches. */
|
|
10
|
-
export declare function createSogStreamHandlers(
|
|
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
|
-
|
|
10
|
+
export declare function createSogStreamHandlers(
|
|
11
|
+
decodeSplats: (
|
|
12
|
+
args: SplatLoadArgs,
|
|
13
|
+
options: {
|
|
14
|
+
sendStatus: (data: SplatLoadStatus) => void;
|
|
15
|
+
},
|
|
16
|
+
) => Promise<SplatResult>,
|
|
17
|
+
): {
|
|
18
|
+
loadSogChunk: (
|
|
19
|
+
{
|
|
20
|
+
id,
|
|
21
|
+
...args
|
|
22
|
+
}: SplatLoadArgs & {
|
|
23
|
+
id: number;
|
|
24
|
+
},
|
|
25
|
+
options: {
|
|
26
|
+
sendStatus: (data: SplatLoadStatus) => void;
|
|
27
|
+
},
|
|
28
|
+
) => Promise<SogChunkInfo>;
|
|
29
|
+
cacheSogChunk: ({
|
|
30
|
+
id,
|
|
31
|
+
data,
|
|
32
|
+
}: {
|
|
33
|
+
id: number;
|
|
34
|
+
data: SplatResult;
|
|
35
|
+
}) => SogChunkInfo;
|
|
36
|
+
extractSogRegions: ({
|
|
37
|
+
id,
|
|
38
|
+
ranges,
|
|
39
|
+
}: {
|
|
40
|
+
id: number;
|
|
41
|
+
ranges: {
|
|
42
|
+
start: number;
|
|
43
|
+
count: number;
|
|
44
|
+
}[];
|
|
45
|
+
}) => import("../../../data/defines.js").ReorderedSplatResult[];
|
|
46
|
+
releaseSogChunk: ({
|
|
47
|
+
id,
|
|
48
|
+
}: {
|
|
49
|
+
id: number;
|
|
50
|
+
}) => void;
|
|
51
|
+
parseSogIndex: ({
|
|
52
|
+
bytes,
|
|
53
|
+
baseUrl,
|
|
54
|
+
}: {
|
|
55
|
+
bytes: ArrayBuffer;
|
|
56
|
+
baseUrl: string;
|
|
57
|
+
}) => {
|
|
58
|
+
bounds: Float64Array<ArrayBuffer>;
|
|
59
|
+
leafOffsets: Uint32Array<ArrayBuffer>;
|
|
60
|
+
lods: Float64Array<ArrayBuffer>;
|
|
61
|
+
retainedIndexBytes: number;
|
|
62
|
+
urls: string[];
|
|
63
|
+
counts: Float64Array;
|
|
64
|
+
environment?: string;
|
|
65
|
+
};
|
|
66
|
+
selectSogLod: (request: SogLodRequest) => Uint32Array<ArrayBufferLike>;
|
|
48
67
|
};
|