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
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
/** Keeps public material state and explicit shader updates across variants. */
|
|
3
|
+
export declare class MaterialState {
|
|
4
|
+
private versions;
|
|
5
|
+
constructor(material: THREE.Material);
|
|
6
|
+
sync(target: THREE.Material, source: THREE.Material): void;
|
|
7
|
+
/** Records updates made by the renderer itself. */
|
|
8
|
+
record(material: THREE.Material): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
/** Keeps public material state and explicit shader updates across variants. */
|
|
3
|
+
export declare class MaterialState {
|
|
4
|
+
private versions;
|
|
5
|
+
constructor(material: THREE.Material);
|
|
6
|
+
sync(target: THREE.Material, source: THREE.Material): void;
|
|
7
|
+
/** Records updates made by the renderer itself. */
|
|
8
|
+
record(material: THREE.Material): void;
|
|
9
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { SplatAccumulator } from
|
|
1
|
+
import type { SplatAccumulator } from "./SplatAccumulator.cjs";
|
|
2
2
|
/** Tracks raw-center and matrix revisions cached by the sort worker. */
|
|
3
3
|
export declare class SortCenterCache {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
19
|
-
commit: () => void;
|
|
4
|
+
private entries;
|
|
5
|
+
private freeMeshIds;
|
|
6
|
+
private nextMeshId;
|
|
7
|
+
private allocateMeshId;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
prepare(current: SplatAccumulator): {
|
|
10
|
+
payload: {
|
|
11
|
+
centerUpdateRangeIndices: Uint32Array<ArrayBuffer>;
|
|
12
|
+
updateCenters: Float32Array<ArrayBuffer>;
|
|
13
|
+
matrixUpdateRangeIndices: Uint32Array<ArrayBuffer>;
|
|
14
|
+
updateMatrices: Float64Array<ArrayBuffer>;
|
|
15
|
+
rangeMeshIds: Uint32Array<ArrayBuffer>;
|
|
16
|
+
rangeBases: Uint32Array<ArrayBuffer>;
|
|
17
|
+
rangeCounts: Uint32Array<ArrayBuffer>;
|
|
20
18
|
};
|
|
19
|
+
commit: () => void;
|
|
20
|
+
};
|
|
21
21
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { SplatAccumulator } from
|
|
1
|
+
import type { SplatAccumulator } from "./SplatAccumulator.js";
|
|
2
2
|
/** Tracks raw-center and matrix revisions cached by the sort worker. */
|
|
3
3
|
export declare class SortCenterCache {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
19
|
-
commit: () => void;
|
|
4
|
+
private entries;
|
|
5
|
+
private freeMeshIds;
|
|
6
|
+
private nextMeshId;
|
|
7
|
+
private allocateMeshId;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
prepare(current: SplatAccumulator): {
|
|
10
|
+
payload: {
|
|
11
|
+
centerUpdateRangeIndices: Uint32Array<ArrayBuffer>;
|
|
12
|
+
updateCenters: Float32Array<ArrayBuffer>;
|
|
13
|
+
matrixUpdateRangeIndices: Uint32Array<ArrayBuffer>;
|
|
14
|
+
updateMatrices: Float64Array<ArrayBuffer>;
|
|
15
|
+
rangeMeshIds: Uint32Array<ArrayBuffer>;
|
|
16
|
+
rangeBases: Uint32Array<ArrayBuffer>;
|
|
17
|
+
rangeCounts: Uint32Array<ArrayBuffer>;
|
|
20
18
|
};
|
|
19
|
+
commit: () => void;
|
|
20
|
+
};
|
|
21
21
|
}
|
|
@@ -1,86 +1,102 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { SplatMesh } from "../scene/SplatMesh.cjs";
|
|
3
|
+
import type { GaussianSplatCompatibleRenderer } from "./rendererUtils.cjs";
|
|
4
4
|
export type SplatMapping = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
node: SplatMesh;
|
|
6
|
+
matrixWorld: THREE.Matrix4;
|
|
7
|
+
source: SplatMesh["splats"];
|
|
8
|
+
version: number;
|
|
9
|
+
sortVersion: number;
|
|
10
|
+
centerVersion: number;
|
|
11
|
+
mappingVersion: number;
|
|
12
|
+
base: number;
|
|
13
|
+
count: number;
|
|
14
14
|
};
|
|
15
15
|
type GenerateUniforms = Record<string, THREE.IUniform>;
|
|
16
16
|
type SplatDataTextures = readonly [THREE.Texture, THREE.Texture];
|
|
17
17
|
export declare class SplatAccumulator {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
time: number;
|
|
19
|
+
deltaTime: number;
|
|
20
|
+
viewOrigin: THREE.Vector3;
|
|
21
|
+
private readonly previousOrigin;
|
|
22
|
+
viewDirection: THREE.Vector3;
|
|
23
|
+
maxSplats: number;
|
|
24
|
+
numSplats: number;
|
|
25
|
+
target: THREE.WebGLArrayRenderTarget | null;
|
|
26
|
+
mapping: SplatMapping[];
|
|
27
|
+
version: number;
|
|
28
|
+
mappingVersion: number;
|
|
29
|
+
private transformScale;
|
|
30
|
+
private transformQuaternion;
|
|
31
|
+
private fallbackGenerator;
|
|
32
|
+
private readonly sceneNodes;
|
|
33
|
+
private readonly frameContext;
|
|
34
|
+
constructor();
|
|
35
|
+
dispose(): void;
|
|
36
|
+
private disposeStorage;
|
|
37
|
+
getTextures(): SplatDataTextures;
|
|
38
|
+
getStochasticSeeds(): THREE.Texture;
|
|
39
|
+
/** Whether this accumulator was generated for stochastic rendering. */
|
|
40
|
+
get hasStochasticSeeds(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Regenerate moved meshes in place, without changing the source ranges used
|
|
43
|
+
* by an in-flight sort. WebGL backends only.
|
|
44
|
+
*/
|
|
45
|
+
refreshTransforms(renderer: GaussianSplatCompatibleRenderer): void;
|
|
46
|
+
ensureGenerate({
|
|
47
|
+
maxSplats,
|
|
48
|
+
renderer,
|
|
49
|
+
shrinkResources,
|
|
50
|
+
stochasticSeeds,
|
|
51
|
+
}: {
|
|
23
52
|
maxSplats: number;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
53
|
+
renderer?: GaussianSplatCompatibleRenderer;
|
|
54
|
+
shrinkResources?: boolean;
|
|
55
|
+
stochasticSeeds?: boolean;
|
|
56
|
+
}): boolean;
|
|
57
|
+
prepareUniforms(
|
|
58
|
+
mesh: SplatMesh,
|
|
59
|
+
uniforms: GenerateUniforms,
|
|
60
|
+
matrixWorld?: THREE.Matrix4,
|
|
61
|
+
): void;
|
|
62
|
+
generate({
|
|
63
|
+
mesh,
|
|
64
|
+
base,
|
|
65
|
+
count,
|
|
66
|
+
renderer,
|
|
67
|
+
}: {
|
|
68
|
+
mesh: SplatMesh;
|
|
69
|
+
base: number;
|
|
70
|
+
count: number;
|
|
71
|
+
renderer: GaussianSplatCompatibleRenderer;
|
|
72
|
+
}): void;
|
|
73
|
+
prepareGenerate({
|
|
74
|
+
renderer,
|
|
75
|
+
scene,
|
|
76
|
+
timer,
|
|
77
|
+
camera,
|
|
78
|
+
layerCamera,
|
|
79
|
+
previous,
|
|
80
|
+
frameCallbacks,
|
|
81
|
+
shrinkResources,
|
|
82
|
+
excludedObjects,
|
|
83
|
+
}: {
|
|
84
|
+
renderer: GaussianSplatCompatibleRenderer;
|
|
85
|
+
scene: THREE.Scene;
|
|
86
|
+
timer: THREE.Timer;
|
|
87
|
+
camera: THREE.Camera;
|
|
88
|
+
layerCamera?: THREE.Camera;
|
|
89
|
+
previous: SplatAccumulator;
|
|
90
|
+
frameCallbacks?: boolean;
|
|
91
|
+
shrinkResources?: boolean;
|
|
92
|
+
excludedObjects?: ReadonlySet<THREE.Object3D>;
|
|
93
|
+
}): {
|
|
27
94
|
version: number;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
private disposeStorage;
|
|
35
|
-
getTextures(): SplatDataTextures;
|
|
36
|
-
getStochasticSeeds(): THREE.Texture;
|
|
37
|
-
/** Whether this accumulator was generated for stochastic rendering. */
|
|
38
|
-
get hasStochasticSeeds(): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Regenerate moved meshes in place, without changing the source ranges used
|
|
41
|
-
* by an in-flight sort. WebGL backends only.
|
|
42
|
-
*/
|
|
43
|
-
refreshTransforms(renderer: GaussianSplatCompatibleRenderer): void;
|
|
44
|
-
generateMapping(splatCounts: number[], compact?: boolean): {
|
|
45
|
-
maxSplats: number;
|
|
46
|
-
mapping: {
|
|
47
|
-
base: number;
|
|
48
|
-
count: number;
|
|
49
|
-
}[];
|
|
50
|
-
};
|
|
51
|
-
ensureGenerate({ maxSplats, renderer, shrinkResources, stochasticSeeds, }: {
|
|
52
|
-
maxSplats: number;
|
|
53
|
-
renderer?: GaussianSplatCompatibleRenderer;
|
|
54
|
-
shrinkResources?: boolean;
|
|
55
|
-
stochasticSeeds?: boolean;
|
|
56
|
-
}): boolean;
|
|
57
|
-
prepareUniforms(mesh: SplatMesh, uniforms: GenerateUniforms, matrixWorld?: THREE.Matrix4): void;
|
|
58
|
-
generate({ mesh, base, count, renderer, }: {
|
|
59
|
-
mesh: SplatMesh;
|
|
60
|
-
base: number;
|
|
61
|
-
count: number;
|
|
62
|
-
renderer: GaussianSplatCompatibleRenderer;
|
|
63
|
-
}): void;
|
|
64
|
-
prepareGenerate({ renderer, scene, timer, camera, layerCamera, previous, frameCallbacks, }: {
|
|
65
|
-
renderer: GaussianSplatCompatibleRenderer;
|
|
66
|
-
scene: THREE.Scene;
|
|
67
|
-
timer: THREE.Timer;
|
|
68
|
-
camera: THREE.Camera;
|
|
69
|
-
layerCamera?: THREE.Camera;
|
|
70
|
-
previous: SplatAccumulator;
|
|
71
|
-
frameCallbacks?: boolean;
|
|
72
|
-
}): {
|
|
73
|
-
version: number;
|
|
74
|
-
sortUpdated: boolean;
|
|
75
|
-
requiredMaxSplats: number;
|
|
76
|
-
generate: (shrinkResources?: boolean, stochasticSeeds?: boolean) => void;
|
|
77
|
-
};
|
|
78
|
-
checkVersions(other: SplatMapping[]): {
|
|
79
|
-
splatsUpdated: boolean;
|
|
80
|
-
mappingUpdated: boolean;
|
|
81
|
-
sortUpdated: boolean;
|
|
82
|
-
};
|
|
83
|
-
static emptyTexture: THREE.DataArrayTexture;
|
|
84
|
-
static emptyTextures: SplatDataTextures;
|
|
95
|
+
sortUpdated: boolean;
|
|
96
|
+
requiredMaxSplats: number;
|
|
97
|
+
generate: (shrinkResources?: boolean, stochasticSeeds?: boolean) => void;
|
|
98
|
+
};
|
|
99
|
+
static emptyTexture: THREE.DataArrayTexture;
|
|
100
|
+
static emptyTextures: SplatDataTextures;
|
|
85
101
|
}
|
|
86
102
|
export {};
|
|
@@ -1,86 +1,102 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { SplatMesh } from "../scene/SplatMesh.js";
|
|
3
|
+
import type { GaussianSplatCompatibleRenderer } from "./rendererUtils.js";
|
|
4
4
|
export type SplatMapping = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
node: SplatMesh;
|
|
6
|
+
matrixWorld: THREE.Matrix4;
|
|
7
|
+
source: SplatMesh["splats"];
|
|
8
|
+
version: number;
|
|
9
|
+
sortVersion: number;
|
|
10
|
+
centerVersion: number;
|
|
11
|
+
mappingVersion: number;
|
|
12
|
+
base: number;
|
|
13
|
+
count: number;
|
|
14
14
|
};
|
|
15
15
|
type GenerateUniforms = Record<string, THREE.IUniform>;
|
|
16
16
|
type SplatDataTextures = readonly [THREE.Texture, THREE.Texture];
|
|
17
17
|
export declare class SplatAccumulator {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
time: number;
|
|
19
|
+
deltaTime: number;
|
|
20
|
+
viewOrigin: THREE.Vector3;
|
|
21
|
+
private readonly previousOrigin;
|
|
22
|
+
viewDirection: THREE.Vector3;
|
|
23
|
+
maxSplats: number;
|
|
24
|
+
numSplats: number;
|
|
25
|
+
target: THREE.WebGLArrayRenderTarget | null;
|
|
26
|
+
mapping: SplatMapping[];
|
|
27
|
+
version: number;
|
|
28
|
+
mappingVersion: number;
|
|
29
|
+
private transformScale;
|
|
30
|
+
private transformQuaternion;
|
|
31
|
+
private fallbackGenerator;
|
|
32
|
+
private readonly sceneNodes;
|
|
33
|
+
private readonly frameContext;
|
|
34
|
+
constructor();
|
|
35
|
+
dispose(): void;
|
|
36
|
+
private disposeStorage;
|
|
37
|
+
getTextures(): SplatDataTextures;
|
|
38
|
+
getStochasticSeeds(): THREE.Texture;
|
|
39
|
+
/** Whether this accumulator was generated for stochastic rendering. */
|
|
40
|
+
get hasStochasticSeeds(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Regenerate moved meshes in place, without changing the source ranges used
|
|
43
|
+
* by an in-flight sort. WebGL backends only.
|
|
44
|
+
*/
|
|
45
|
+
refreshTransforms(renderer: GaussianSplatCompatibleRenderer): void;
|
|
46
|
+
ensureGenerate({
|
|
47
|
+
maxSplats,
|
|
48
|
+
renderer,
|
|
49
|
+
shrinkResources,
|
|
50
|
+
stochasticSeeds,
|
|
51
|
+
}: {
|
|
23
52
|
maxSplats: number;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
53
|
+
renderer?: GaussianSplatCompatibleRenderer;
|
|
54
|
+
shrinkResources?: boolean;
|
|
55
|
+
stochasticSeeds?: boolean;
|
|
56
|
+
}): boolean;
|
|
57
|
+
prepareUniforms(
|
|
58
|
+
mesh: SplatMesh,
|
|
59
|
+
uniforms: GenerateUniforms,
|
|
60
|
+
matrixWorld?: THREE.Matrix4,
|
|
61
|
+
): void;
|
|
62
|
+
generate({
|
|
63
|
+
mesh,
|
|
64
|
+
base,
|
|
65
|
+
count,
|
|
66
|
+
renderer,
|
|
67
|
+
}: {
|
|
68
|
+
mesh: SplatMesh;
|
|
69
|
+
base: number;
|
|
70
|
+
count: number;
|
|
71
|
+
renderer: GaussianSplatCompatibleRenderer;
|
|
72
|
+
}): void;
|
|
73
|
+
prepareGenerate({
|
|
74
|
+
renderer,
|
|
75
|
+
scene,
|
|
76
|
+
timer,
|
|
77
|
+
camera,
|
|
78
|
+
layerCamera,
|
|
79
|
+
previous,
|
|
80
|
+
frameCallbacks,
|
|
81
|
+
shrinkResources,
|
|
82
|
+
excludedObjects,
|
|
83
|
+
}: {
|
|
84
|
+
renderer: GaussianSplatCompatibleRenderer;
|
|
85
|
+
scene: THREE.Scene;
|
|
86
|
+
timer: THREE.Timer;
|
|
87
|
+
camera: THREE.Camera;
|
|
88
|
+
layerCamera?: THREE.Camera;
|
|
89
|
+
previous: SplatAccumulator;
|
|
90
|
+
frameCallbacks?: boolean;
|
|
91
|
+
shrinkResources?: boolean;
|
|
92
|
+
excludedObjects?: ReadonlySet<THREE.Object3D>;
|
|
93
|
+
}): {
|
|
27
94
|
version: number;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
private disposeStorage;
|
|
35
|
-
getTextures(): SplatDataTextures;
|
|
36
|
-
getStochasticSeeds(): THREE.Texture;
|
|
37
|
-
/** Whether this accumulator was generated for stochastic rendering. */
|
|
38
|
-
get hasStochasticSeeds(): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Regenerate moved meshes in place, without changing the source ranges used
|
|
41
|
-
* by an in-flight sort. WebGL backends only.
|
|
42
|
-
*/
|
|
43
|
-
refreshTransforms(renderer: GaussianSplatCompatibleRenderer): void;
|
|
44
|
-
generateMapping(splatCounts: number[], compact?: boolean): {
|
|
45
|
-
maxSplats: number;
|
|
46
|
-
mapping: {
|
|
47
|
-
base: number;
|
|
48
|
-
count: number;
|
|
49
|
-
}[];
|
|
50
|
-
};
|
|
51
|
-
ensureGenerate({ maxSplats, renderer, shrinkResources, stochasticSeeds, }: {
|
|
52
|
-
maxSplats: number;
|
|
53
|
-
renderer?: GaussianSplatCompatibleRenderer;
|
|
54
|
-
shrinkResources?: boolean;
|
|
55
|
-
stochasticSeeds?: boolean;
|
|
56
|
-
}): boolean;
|
|
57
|
-
prepareUniforms(mesh: SplatMesh, uniforms: GenerateUniforms, matrixWorld?: THREE.Matrix4): void;
|
|
58
|
-
generate({ mesh, base, count, renderer, }: {
|
|
59
|
-
mesh: SplatMesh;
|
|
60
|
-
base: number;
|
|
61
|
-
count: number;
|
|
62
|
-
renderer: GaussianSplatCompatibleRenderer;
|
|
63
|
-
}): void;
|
|
64
|
-
prepareGenerate({ renderer, scene, timer, camera, layerCamera, previous, frameCallbacks, }: {
|
|
65
|
-
renderer: GaussianSplatCompatibleRenderer;
|
|
66
|
-
scene: THREE.Scene;
|
|
67
|
-
timer: THREE.Timer;
|
|
68
|
-
camera: THREE.Camera;
|
|
69
|
-
layerCamera?: THREE.Camera;
|
|
70
|
-
previous: SplatAccumulator;
|
|
71
|
-
frameCallbacks?: boolean;
|
|
72
|
-
}): {
|
|
73
|
-
version: number;
|
|
74
|
-
sortUpdated: boolean;
|
|
75
|
-
requiredMaxSplats: number;
|
|
76
|
-
generate: (shrinkResources?: boolean, stochasticSeeds?: boolean) => void;
|
|
77
|
-
};
|
|
78
|
-
checkVersions(other: SplatMapping[]): {
|
|
79
|
-
splatsUpdated: boolean;
|
|
80
|
-
mappingUpdated: boolean;
|
|
81
|
-
sortUpdated: boolean;
|
|
82
|
-
};
|
|
83
|
-
static emptyTexture: THREE.DataArrayTexture;
|
|
84
|
-
static emptyTextures: SplatDataTextures;
|
|
95
|
+
sortUpdated: boolean;
|
|
96
|
+
requiredMaxSplats: number;
|
|
97
|
+
generate: (shrinkResources?: boolean, stochasticSeeds?: boolean) => void;
|
|
98
|
+
};
|
|
99
|
+
static emptyTexture: THREE.DataArrayTexture;
|
|
100
|
+
static emptyTextures: SplatDataTextures;
|
|
85
101
|
}
|
|
86
102
|
export {};
|
|
@@ -2,6 +2,6 @@ import * as THREE from "three";
|
|
|
2
2
|
export declare const SPLATS_PER_INSTANCE = 128;
|
|
3
3
|
/** Repeated quads; position.z identifies the Splat within each instance. */
|
|
4
4
|
export declare class SplatGeometry extends THREE.InstancedBufferGeometry {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
constructor();
|
|
6
|
+
setSplatCount(count: number): void;
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@ import * as THREE from "three";
|
|
|
2
2
|
export declare const SPLATS_PER_INSTANCE = 128;
|
|
3
3
|
/** Repeated quads; position.z identifies the Splat within each instance. */
|
|
4
4
|
export declare class SplatGeometry extends THREE.InstancedBufferGeometry {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
constructor();
|
|
6
|
+
setSplatCount(count: number): void;
|
|
7
7
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Material } from "three";
|
|
2
|
+
import type { GaussianSplatCompatibleRenderer } from "./rendererUtils.cjs";
|
|
3
|
+
|
|
4
|
+
/** Registers a stochastic material's four-sample variant factory. */
|
|
5
|
+
export declare function registerStochasticSplatMaterial(
|
|
6
|
+
material: Material,
|
|
7
|
+
createVariant: (renderer: GaussianSplatCompatibleRenderer) => Material,
|
|
8
|
+
): void;
|
|
9
|
+
|
|
10
|
+
/** Shares the Splat shader and uniforms, adding four-sample coverage. */
|
|
11
|
+
export declare function createStochasticSplatVariant(
|
|
12
|
+
material: Material,
|
|
13
|
+
renderer: GaussianSplatCompatibleRenderer,
|
|
14
|
+
): Material | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Material } from "three";
|
|
2
|
+
import type { GaussianSplatCompatibleRenderer } from "./rendererUtils.js";
|
|
3
|
+
|
|
4
|
+
/** Registers a stochastic material's four-sample variant factory. */
|
|
5
|
+
export declare function registerStochasticSplatMaterial(
|
|
6
|
+
material: Material,
|
|
7
|
+
createVariant: (renderer: GaussianSplatCompatibleRenderer) => Material,
|
|
8
|
+
): void;
|
|
9
|
+
|
|
10
|
+
/** Shares the Splat shader and uniforms, adding four-sample coverage. */
|
|
11
|
+
export declare function createStochasticSplatVariant(
|
|
12
|
+
material: Material,
|
|
13
|
+
renderer: GaussianSplatCompatibleRenderer,
|
|
14
|
+
): Material | null;
|
|
@@ -1,23 +1,35 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
export type SplatBackend =
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { GaussianSplatCompatibleRenderer } from "./rendererUtils.cjs";
|
|
3
|
+
import type { SplatNodeMaterial } from "./tsl/SplatMaterial.cjs";
|
|
4
|
+
import type { Uniforms } from "./uniforms.cjs";
|
|
5
|
+
import type { WebGLFallbackSplatBackend } from "./webgl-fallback/SplatBackend.cjs";
|
|
6
|
+
import type { WebGLSplatBackend } from "./webgl/SplatBackend.cjs";
|
|
7
|
+
import type { WebGPUSplatBackend } from "./webgpu/SplatBackend.cjs";
|
|
8
|
+
export type SplatBackend =
|
|
9
|
+
| WebGLSplatBackend
|
|
10
|
+
| WebGPUSplatBackend
|
|
11
|
+
| WebGLFallbackSplatBackend;
|
|
12
|
+
export declare function createSplatBackend(
|
|
13
|
+
renderer: GaussianSplatCompatibleRenderer,
|
|
14
|
+
uniforms: Uniforms,
|
|
15
|
+
options: SplatMaterialOptions,
|
|
16
|
+
): SplatBackend;
|
|
17
|
+
export declare function configureSplatOutput(
|
|
18
|
+
renderer: GaussianSplatCompatibleRenderer,
|
|
19
|
+
target: THREE.RenderTarget | null,
|
|
20
|
+
uniforms: Uniforms,
|
|
21
|
+
encodeLinear?: boolean,
|
|
22
|
+
): void;
|
|
11
23
|
export type CPUOrderingUpdate = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
24
|
+
ordering: Uint32Array;
|
|
25
|
+
activeSplats: number;
|
|
26
|
+
requiredCapacity: number;
|
|
27
|
+
shrink: boolean;
|
|
16
28
|
};
|
|
17
29
|
export type SplatMaterial = THREE.ShaderMaterial | SplatNodeMaterial;
|
|
18
30
|
export type SplatMaterialOptions = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
31
|
+
premultipliedAlpha: boolean;
|
|
32
|
+
transparent: boolean;
|
|
33
|
+
depthTest: boolean;
|
|
34
|
+
depthWrite: boolean;
|
|
23
35
|
};
|
|
@@ -1,23 +1,35 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
export type SplatBackend =
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import type { GaussianSplatCompatibleRenderer } from "./rendererUtils.js";
|
|
3
|
+
import type { SplatNodeMaterial } from "./tsl/SplatMaterial.js";
|
|
4
|
+
import type { Uniforms } from "./uniforms.js";
|
|
5
|
+
import type { WebGLFallbackSplatBackend } from "./webgl-fallback/SplatBackend.js";
|
|
6
|
+
import type { WebGLSplatBackend } from "./webgl/SplatBackend.js";
|
|
7
|
+
import type { WebGPUSplatBackend } from "./webgpu/SplatBackend.js";
|
|
8
|
+
export type SplatBackend =
|
|
9
|
+
| WebGLSplatBackend
|
|
10
|
+
| WebGPUSplatBackend
|
|
11
|
+
| WebGLFallbackSplatBackend;
|
|
12
|
+
export declare function createSplatBackend(
|
|
13
|
+
renderer: GaussianSplatCompatibleRenderer,
|
|
14
|
+
uniforms: Uniforms,
|
|
15
|
+
options: SplatMaterialOptions,
|
|
16
|
+
): SplatBackend;
|
|
17
|
+
export declare function configureSplatOutput(
|
|
18
|
+
renderer: GaussianSplatCompatibleRenderer,
|
|
19
|
+
target: THREE.RenderTarget | null,
|
|
20
|
+
uniforms: Uniforms,
|
|
21
|
+
encodeLinear?: boolean,
|
|
22
|
+
): void;
|
|
11
23
|
export type CPUOrderingUpdate = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
24
|
+
ordering: Uint32Array;
|
|
25
|
+
activeSplats: number;
|
|
26
|
+
requiredCapacity: number;
|
|
27
|
+
shrink: boolean;
|
|
16
28
|
};
|
|
17
29
|
export type SplatMaterial = THREE.ShaderMaterial | SplatNodeMaterial;
|
|
18
30
|
export type SplatMaterialOptions = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
31
|
+
premultipliedAlpha: boolean;
|
|
32
|
+
transparent: boolean;
|
|
33
|
+
depthTest: boolean;
|
|
34
|
+
depthWrite: boolean;
|
|
23
35
|
};
|