@sparkjsdev/spark 0.1.3 → 0.1.5

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.
@@ -13,6 +13,8 @@ export type SparkRendererOptions = {
13
13
  enable2DGS?: boolean;
14
14
  preBlurAmount?: number;
15
15
  blurAmount?: number;
16
+ focalDistance?: number;
17
+ apertureAngle?: number;
16
18
  falloff?: number;
17
19
  clipXY?: number;
18
20
  view?: SparkViewpointOptions;
@@ -28,8 +30,20 @@ export declare class SparkRenderer extends THREE.Mesh {
28
30
  enable2DGS: boolean;
29
31
  preBlurAmount: number;
30
32
  blurAmount: number;
33
+ focalDistance: number;
34
+ apertureAngle: number;
31
35
  falloff: number;
32
36
  clipXY: number;
37
+ renderScale: number;
38
+ splatTexture: null | {
39
+ enable?: boolean;
40
+ texture?: THREE.Data3DTexture;
41
+ multiply?: THREE.Matrix2;
42
+ add?: THREE.Vector2;
43
+ near?: number;
44
+ far?: number;
45
+ mid?: number;
46
+ };
33
47
  time?: number;
34
48
  deltaTime?: number;
35
49
  clock: THREE.Clock;
@@ -49,11 +63,18 @@ export declare class SparkRenderer extends THREE.Mesh {
49
63
  private envViewpoint;
50
64
  private static cubeRender;
51
65
  private static pmrem;
66
+ static EMPTY_SPLAT_TEXTURE: THREE.Data3DTexture;
52
67
  constructor(options: SparkRendererOptions);
53
68
  static makeUniforms(): {
54
69
  renderSize: {
55
70
  value: THREE.Vector2;
56
71
  };
72
+ near: {
73
+ value: number;
74
+ };
75
+ far: {
76
+ value: number;
77
+ };
57
78
  numSplats: {
58
79
  value: number;
59
80
  };
@@ -75,12 +96,43 @@ export declare class SparkRenderer extends THREE.Mesh {
75
96
  blurAmount: {
76
97
  value: number;
77
98
  };
99
+ focalDistance: {
100
+ value: number;
101
+ };
102
+ apertureAngle: {
103
+ value: number;
104
+ };
78
105
  falloff: {
79
106
  value: number;
80
107
  };
81
108
  clipXY: {
82
109
  value: number;
83
110
  };
111
+ renderScale: {
112
+ value: number;
113
+ };
114
+ splatTexEnable: {
115
+ value: boolean;
116
+ };
117
+ splatTexture: {
118
+ type: string;
119
+ value: THREE.Data3DTexture;
120
+ };
121
+ splatTexMul: {
122
+ value: THREE.Matrix2;
123
+ };
124
+ splatTexAdd: {
125
+ value: THREE.Vector2;
126
+ };
127
+ splatTexNear: {
128
+ value: number;
129
+ };
130
+ splatTexFar: {
131
+ value: number;
132
+ };
133
+ splatTexMid: {
134
+ value: number;
135
+ };
84
136
  packedSplats: {
85
137
  type: string;
86
138
  value: THREE.DataArrayTexture;
@@ -4,22 +4,65 @@ import { SplatMesh } from './SplatMesh';
4
4
  export declare class SplatLoader extends Loader {
5
5
  fileLoader: FileLoader;
6
6
  fileType?: SplatFileType;
7
+ packedSplats?: PackedSplats;
7
8
  constructor(manager?: LoadingManager);
8
9
  load(url: string, onLoad?: (decoded: PackedSplats) => void, onProgress?: (event: ProgressEvent) => void, onError?: (error: unknown) => void): void;
9
10
  loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<PackedSplats>;
11
+ loadExtra(url: string): Promise<ArrayBuffer>;
10
12
  parse(packedSplats: PackedSplats): SplatMesh;
11
13
  }
12
14
  export declare enum SplatFileType {
13
15
  PLY = "ply",
14
16
  SPZ = "spz",
15
17
  SPLAT = "splat",
16
- KSPLAT = "ksplat"
18
+ KSPLAT = "ksplat",
19
+ PCSOGS = "pcsogs"
17
20
  }
18
21
  export declare function getSplatFileType(fileBytes: Uint8Array): SplatFileType | undefined;
19
22
  export declare function getFileExtension(pathOrUrl: string): string;
20
23
  export declare function getSplatFileTypeFromPath(pathOrUrl: string): SplatFileType | undefined;
21
- export declare function unpackSplats({ input, fileType, pathOrUrl, }: {
24
+ export type PcSogsJson = {
25
+ means: {
26
+ shape: number[];
27
+ dtype: string;
28
+ mins: number[];
29
+ maxs: number[];
30
+ files: string[];
31
+ };
32
+ scales: {
33
+ shape: number[];
34
+ dtype: string;
35
+ mins: number[];
36
+ maxs: number[];
37
+ files: string[];
38
+ };
39
+ quats: {
40
+ shape: number[];
41
+ dtype: string;
42
+ encoding?: string;
43
+ files: string[];
44
+ };
45
+ sh0: {
46
+ shape: number[];
47
+ dtype: string;
48
+ mins: number[];
49
+ maxs: number[];
50
+ files: string[];
51
+ };
52
+ shN: {
53
+ shape: number[];
54
+ dtype: string;
55
+ mins: number;
56
+ maxs: number;
57
+ quantization: number;
58
+ files: string[];
59
+ };
60
+ };
61
+ export declare function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean;
62
+ export declare function tryPcSogs(input: ArrayBuffer | Uint8Array | string): PcSogsJson | undefined;
63
+ export declare function unpackSplats({ input, extraFiles, fileType, pathOrUrl, }: {
22
64
  input: Uint8Array | ArrayBuffer;
65
+ extraFiles?: Record<string, ArrayBuffer>;
23
66
  fileType?: SplatFileType;
24
67
  pathOrUrl?: string;
25
68
  }): Promise<{
@@ -74,6 +74,7 @@ export declare class PointerControls {
74
74
  reverseScroll: boolean;
75
75
  moveInertia: number;
76
76
  rotateInertia: number;
77
+ pointerRollScale: number;
77
78
  enable: boolean;
78
79
  doublePress: ({ position, intervalMs, }: {
79
80
  position: THREE.Vector2;
@@ -91,7 +92,7 @@ export declare class PointerControls {
91
92
  scroll: THREE.Vector3;
92
93
  rotateVelocity: THREE.Vector3;
93
94
  moveVelocity: THREE.Vector3;
94
- constructor({ canvas, rotateSpeed, slideSpeed, scrollSpeed, swapRotateSlide, reverseRotate, reverseSlide, reverseSwipe, reverseScroll, moveInertia, rotateInertia, doublePress, }: {
95
+ constructor({ canvas, rotateSpeed, slideSpeed, scrollSpeed, swapRotateSlide, reverseRotate, reverseSlide, reverseSwipe, reverseScroll, moveInertia, rotateInertia, pointerRollScale, doublePress, }: {
95
96
  canvas: HTMLCanvasElement;
96
97
  rotateSpeed?: number;
97
98
  slideSpeed?: number;
@@ -103,6 +104,7 @@ export declare class PointerControls {
103
104
  reverseScroll?: boolean;
104
105
  moveInertia?: number;
105
106
  rotateInertia?: number;
107
+ pointerRollScale?: number;
106
108
  doublePress?: ({ position, intervalMs, }: {
107
109
  position: THREE.Vector2;
108
110
  intervalMs: number;
@@ -13,6 +13,7 @@ export declare const hashFloat: <T extends ValueTypes>(value: DynoVal<T>) => Dyn
13
13
  export declare const hashVec2: <T extends ValueTypes>(value: DynoVal<T>) => DynoVal<"vec2">;
14
14
  export declare const hashVec3: <T extends ValueTypes>(value: DynoVal<T>) => DynoVal<"vec3">;
15
15
  export declare const hashVec4: <T extends ValueTypes>(value: DynoVal<T>) => DynoVal<"vec4">;
16
+ export declare const normalizedDepth: (z: DynoVal<"float">, zNear: DynoVal<"float">, zFar: DynoVal<"float">) => DynoVal<"float">;
16
17
  export declare class DynoRemapIndex extends Dyno<{
17
18
  from: "int";
18
19
  to: "int";
@@ -137,3 +138,17 @@ export declare class HashVec4<T extends ValueTypes> extends DynoBlock<{
137
138
  });
138
139
  dynoOut(): DynoValue<"vec4">;
139
140
  }
141
+ export declare class NormalizedDepth extends Dyno<{
142
+ z: "float";
143
+ zNear: "float";
144
+ zFar: "float";
145
+ }, {
146
+ depth: "float";
147
+ }> implements HasDynoOut<"float"> {
148
+ constructor({ z, zNear, zFar, }: {
149
+ z: DynoVal<"float">;
150
+ zNear: DynoVal<"float">;
151
+ zFar: DynoVal<"float">;
152
+ });
153
+ dynoOut(): DynoValue<"float">;
154
+ }
@@ -1,7 +1,7 @@
1
1
  export { SparkRenderer, type SparkRendererOptions } from './SparkRenderer';
2
2
  export { SparkViewpoint, type SparkViewpointOptions } from './SparkViewpoint';
3
3
  export * as dyno from './dyno';
4
- export { SplatLoader, unpackSplats, SplatFileType, getSplatFileType, } from './SplatLoader';
4
+ export { SplatLoader, unpackSplats, SplatFileType, getSplatFileType, isPcSogs, } from './SplatLoader';
5
5
  export { PlyReader } from './ply';
6
6
  export { SpzReader, SpzWriter, transcodeSpz } from './spz';
7
7
  export { PackedSplats, type PackedSplatsOptions } from './PackedSplats';
@@ -13,6 +13,7 @@ export { SplatSkinning, type SplatSkinningOptions } from './SplatSkinning';
13
13
  export { SplatEdit, type SplatEditOptions, SplatEditSdf, type SplatEditSdfOptions, SplatEditSdfType, SplatEditRgbaBlendMode, SplatEdits, } from './SplatEdit';
14
14
  export { constructGrid, constructAxes, constructSpherePoints, imageSplats, textSplats, } from './splatConstructors';
15
15
  export * as generators from './generators';
16
+ export * as modifiers from './modifiers';
16
17
  export { VRButton } from './vrButton';
17
18
  export { type JointId, JointEnum, JOINT_IDS, NUM_JOINTS, JOINT_INDEX, JOINT_RADIUS, JOINT_SEGMENTS, JOINT_SEGMENT_STEPS, JOINT_TIPS, FINGER_TIPS, Hand, HANDS, type Joint, type HandJoints, type HandsJoints, XrHands, HandMovement, } from './hands';
18
19
  export { SparkControls, FpsMovement, PointerControls } from './controls';
@@ -0,0 +1,17 @@
1
+ import { SplatTransformer } from '../SplatGenerator';
2
+ import { SplatMesh } from '../SplatMesh';
3
+ import { DynoVal } from '../dyno';
4
+ export declare function makeDepthColorModifier(splatToView: SplatTransformer, minDepth: DynoVal<"float">, maxDepth: DynoVal<"float">, reverse: DynoVal<"bool">): import('../dyno').DynoBlock<{
5
+ gsplat: {
6
+ type: "Gsplat";
7
+ };
8
+ }, {
9
+ gsplat: {
10
+ type: "Gsplat";
11
+ };
12
+ }>;
13
+ export declare function setDepthColor(splats: SplatMesh, minDepth: number, maxDepth: number, reverse?: boolean): {
14
+ minDepth: import('../dyno').DynoConst<"float">;
15
+ maxDepth: import('../dyno').DynoConst<"float">;
16
+ reverse: import('../dyno').DynoConst<"bool">;
17
+ };
@@ -0,0 +1,12 @@
1
+ import { SplatTransformer } from '../SplatGenerator';
2
+ import { SplatMesh } from '../SplatMesh';
3
+ export declare function makeNormalColorModifier(splatToView: SplatTransformer): import('../dyno').DynoBlock<{
4
+ gsplat: {
5
+ type: "Gsplat";
6
+ };
7
+ }, {
8
+ gsplat: {
9
+ type: "Gsplat";
10
+ };
11
+ }>;
12
+ export declare function setWorldNormalColor(splats: SplatMesh): void;
@@ -0,0 +1,2 @@
1
+ export * from './modifiers/normalColor';
2
+ export * from './modifiers/depthColor';
@@ -0,0 +1,5 @@
1
+ export declare function unpackPcSogs(fileBytes: Uint8Array, extraFiles: Record<string, ArrayBuffer>): Promise<{
2
+ packedArray: Uint32Array;
3
+ numSplats: number;
4
+ extra: Record<string, unknown>;
5
+ }>;
@@ -43,6 +43,7 @@ export declare function setPackedSplat(packedSplats: Uint32Array, index: number,
43
43
  export declare function setPackedSplatCenter(packedSplats: Uint32Array, index: number, x: number, y: number, z: number): void;
44
44
  export declare function setPackedSplatScales(packedSplats: Uint32Array, index: number, scaleX: number, scaleY: number, scaleZ: number): void;
45
45
  export declare function setPackedSplatQuat(packedSplats: Uint32Array, index: number, quatX: number, quatY: number, quatZ: number, quatW: number): void;
46
+ export declare function setPackedSplatRgba(packedSplats: Uint32Array, index: number, r: number, g: number, b: number, a: number): void;
46
47
  export declare function setPackedSplatRgb(packedSplats: Uint32Array, index: number, r: number, g: number, b: number): void;
47
48
  export declare function setPackedSplatOpacity(packedSplats: Uint32Array, index: number, opacity: number): void;
48
49
  export declare function unpackSplat(packedSplats: Uint32Array, index: number): {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparkjsdev/spark",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "An advanced 3D Gaussian Splatting renderer for THREE.js",
5
5
  "homepage": "https://sparkjs.dev/",
6
6
  "type": "module",
@@ -32,9 +32,9 @@
32
32
  "lint:fix": "biome check . --fix",
33
33
  "lint:summary": "biome check --reporter=summary",
34
34
  "prepare": "npm run build:wasm && lefthook install",
35
- "site:build": "npm run build && npm run site:clean && node scripts/copy-site-files.js && mkdocs build",
35
+ "site:build": "npm run build && npm run site:clean && node scripts/copy-site-files.js && mkdocs build && node scripts/rename-assets-to-static.js",
36
36
  "site:clean": "node scripts/clean-site-files.js && node scripts/clean-site.js",
37
- "site:deploy": "node scripts/deploy-site.js",
37
+ "site:deploy": "npm run site:build && node scripts/deploy-site.js",
38
38
  "site:serve": "node scripts/serve-site.js site",
39
39
  "start": "npm run dev",
40
40
  "test": "node --no-warnings --loader ts-node/esm --test test/**/*.test.ts"
@@ -58,6 +58,7 @@
58
58
  "spark-internal-rs": "file:rust/spark-internal-rs/pkg"
59
59
  },
60
60
  "dependencies": {
61
+ "@jsquash/webp": "^1.5.0",
61
62
  "fflate": "^0.8.2"
62
63
  },
63
64
  "keywords": ["3d", "three.js", "gsplats", "3dgs", "gaussian", "splats"]