@dtour/scatter 0.1.0 → 0.2.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/dist/data/arrow.d.ts.map +1 -1
- package/dist/data/messages.d.ts +2 -2
- package/dist/data/messages.d.ts.map +1 -1
- package/dist/data/palettes.d.ts.map +1 -1
- package/dist/data/parquet.d.ts +2 -0
- package/dist/data/parquet.d.ts.map +1 -1
- package/dist/data/parse.d.ts +5 -1
- package/dist/data/parse.d.ts.map +1 -1
- package/dist/data/types.d.ts +2 -0
- package/dist/data/types.d.ts.map +1 -1
- package/dist/gpu/client.d.ts +71 -2
- package/dist/gpu/client.d.ts.map +1 -1
- package/dist/gpu/color-pipeline.d.ts +1 -9
- package/dist/gpu/color-pipeline.d.ts.map +1 -1
- package/dist/gpu/device.d.ts.map +1 -1
- package/dist/gpu/messages.d.ts +52 -1
- package/dist/gpu/messages.d.ts.map +1 -1
- package/dist/gpu/pipeline.d.ts +24 -9
- package/dist/gpu/pipeline.d.ts.map +1 -1
- package/dist/gpu/residual-pc-pipeline.d.ts +19 -0
- package/dist/gpu/residual-pc-pipeline.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/pca/jacobi.d.ts.map +1 -1
- package/dist/renderer.d.ts +7 -4
- package/dist/renderer.d.ts.map +1 -1
- package/dist/scatter.js +494 -159
- package/dist/selection.d.ts.map +1 -1
- package/dist/webgl/client.d.ts +10 -0
- package/dist/webgl/client.d.ts.map +1 -0
- package/dist/webgl/worker.d.ts +2 -0
- package/dist/webgl/worker.d.ts.map +1 -0
- package/package.json +6 -1
package/dist/data/arrow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrow.d.ts","sourceRoot":"","sources":["../../src/data/arrow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,WAAW,EAAE,iBAAiB,EAAE,CAAC;CAClC,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,WAAW,KAAG,
|
|
1
|
+
{"version":3,"file":"arrow.d.ts","sourceRoot":"","sources":["../../src/data/arrow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,WAAW,EAAE,iBAAiB,EAAE,CAAC;CAClC,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,WAAW,KAAG,WAiD/C,CAAC"}
|
package/dist/data/messages.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export type DataToGpu = {
|
|
|
38
38
|
indices: Uint32Array;
|
|
39
39
|
}[];
|
|
40
40
|
} | {
|
|
41
|
-
type: '
|
|
41
|
+
type: 'setColorContinuous';
|
|
42
42
|
dataVersion: number;
|
|
43
43
|
columnIndex: number;
|
|
44
44
|
min: number;
|
|
@@ -46,7 +46,7 @@ export type DataToGpu = {
|
|
|
46
46
|
/** Packed RGBA u32 colormap LUT (e.g. 25 stops for viridis). */
|
|
47
47
|
colormap: Uint32Array;
|
|
48
48
|
} | {
|
|
49
|
-
type: '
|
|
49
|
+
type: 'setColorCategorical';
|
|
50
50
|
dataVersion: number;
|
|
51
51
|
catColumnName: string;
|
|
52
52
|
/** Packed RGBA u32 per label. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/data/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACrC;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/data/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACrC;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AAGpG,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKvC,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,yEAAyE;IACzE,kBAAkB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,EAAE,CAAC;CAC9D,GAED;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,QAAQ,EAAE,WAAW,CAAC;CACvB,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB,GAED;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,MAAM,EAAE,YAAY,CAAC;CACtB,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,cAAc,EAAE,WAAW,CAAC;CAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palettes.d.ts","sourceRoot":"","sources":["../../src/data/palettes.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAQ/C,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAiElD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAiQnD,
|
|
1
|
+
{"version":3,"file":"palettes.d.ts","sourceRoot":"","sources":["../../src/data/palettes.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAQ/C,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAiElD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAiQnD,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EA0BhD,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EA0B9C,CAAC"}
|
package/dist/data/parquet.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import type { CategoricalColumn } from './types.ts';
|
|
|
2
2
|
export type ParquetResult = {
|
|
3
3
|
numeric: Record<string, Float32Array>;
|
|
4
4
|
categorical: CategoricalColumn[];
|
|
5
|
+
/** Raw JSON string from the Parquet "dtour" key_value_metadata entry. */
|
|
6
|
+
embeddedConfig?: string;
|
|
5
7
|
};
|
|
6
8
|
/**
|
|
7
9
|
* Load a Parquet file from an ArrayBuffer and extract all numeric columns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet.d.ts","sourceRoot":"","sources":["../../src/data/parquet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,WAAW,EAAE,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"parquet.d.ts","sourceRoot":"","sources":["../../src/data/parquet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AA2GF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAU,QAAQ,WAAW,KAAG,OAAO,CAAC,aAAa,CA4F5E,CAAC"}
|
package/dist/data/parse.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { AnalyzedData } from './types.ts';
|
|
2
|
+
export type ParseResult = AnalyzedData & {
|
|
3
|
+
/** Raw JSON from Parquet "dtour" key_value_metadata. Undefined for Arrow. */
|
|
4
|
+
embeddedConfig?: string;
|
|
5
|
+
};
|
|
2
6
|
/**
|
|
3
7
|
* Detect format, load, extract numeric columns, normalize to [-1, 1].
|
|
4
8
|
* Runs inside the Data Worker.
|
|
5
9
|
*/
|
|
6
|
-
export declare const parseBuffer: (buffer: ArrayBuffer) => Promise<
|
|
10
|
+
export declare const parseBuffer: (buffer: ArrayBuffer) => Promise<ParseResult>;
|
|
7
11
|
//# sourceMappingURL=parse.d.ts.map
|
package/dist/data/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/data/parse.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAU,QAAQ,WAAW,KAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/data/parse.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IACvC,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAU,QAAQ,WAAW,KAAG,OAAO,CAAC,WAAW,CAuC1E,CAAC"}
|
package/dist/data/types.d.ts
CHANGED
package/dist/data/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oGAAoG;IACpG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC"}
|
package/dist/gpu/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Metadata } from '../data/types.ts';
|
|
2
2
|
export type ScatterOptions = {
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/** The main canvas to render into. */
|
|
4
|
+
canvas: HTMLCanvasElement;
|
|
5
5
|
/** Initial camera zoom level. Default 1. */
|
|
6
6
|
zoom?: number;
|
|
7
7
|
/** Device pixel ratio. Default `window.devicePixelRatio ?? 1`. */
|
|
@@ -23,6 +23,35 @@ export type ScatterStatus = {
|
|
|
23
23
|
eigenvectors: Float32Array[];
|
|
24
24
|
eigenvalues: Float32Array;
|
|
25
25
|
numDims: number;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'playbackTick';
|
|
28
|
+
position: number;
|
|
29
|
+
frameMs?: number;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'playbackStopped';
|
|
32
|
+
frameTimes: Float64Array;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'benchmarkResult';
|
|
35
|
+
frameTimes: Float64Array;
|
|
36
|
+
numPoints: number;
|
|
37
|
+
numDims: number;
|
|
38
|
+
stats: {
|
|
39
|
+
avgMs: number;
|
|
40
|
+
fps: number;
|
|
41
|
+
p50Ms: number;
|
|
42
|
+
p95Ms: number;
|
|
43
|
+
minMs: number;
|
|
44
|
+
maxMs: number;
|
|
45
|
+
};
|
|
46
|
+
} | {
|
|
47
|
+
type: 'metricsResult';
|
|
48
|
+
gpuMemoryBytes: number;
|
|
49
|
+
numPoints: number;
|
|
50
|
+
numDims: number;
|
|
51
|
+
workerJsHeapBytes: number | null;
|
|
52
|
+
} | {
|
|
53
|
+
type: 'residualPC';
|
|
54
|
+
residualPC: Float32Array;
|
|
26
55
|
};
|
|
27
56
|
export type ScatterInstance = {
|
|
28
57
|
/** Transfer an Arrow IPC or Parquet ArrayBuffer for loading. Ownership is transferred. */
|
|
@@ -78,6 +107,46 @@ export type ScatterInstance = {
|
|
|
78
107
|
clearSelection: () => void;
|
|
79
108
|
/** Request GPU-accelerated PCA computation. Results arrive via subscribe as 'pcaResult'. */
|
|
80
109
|
computePCA: () => void;
|
|
110
|
+
/** Start worker-driven playback. Worker runs its own rAF loop and posts position updates. */
|
|
111
|
+
startPlayback: (speed: number, direction: 1 | -1) => void;
|
|
112
|
+
/** Stop worker-driven playback. */
|
|
113
|
+
stopPlayback: () => void;
|
|
114
|
+
/** Set max rendered points. 0 = disabled (render all). Uses deterministic hash decimation. */
|
|
115
|
+
setMaxPoints: (n: number) => void;
|
|
116
|
+
/** Enable 3D camera rotation mode. Computes residual PC for the 3rd projected axis. */
|
|
117
|
+
enable3d: () => void;
|
|
118
|
+
/** Disable 3D camera rotation mode. Reverts to standard 2D projection. */
|
|
119
|
+
disable3d: () => void;
|
|
120
|
+
/** Update the 3×3 camera rotation matrix (column-major, 9 floats). */
|
|
121
|
+
set3dRotation: (matrix: Float32Array) => void;
|
|
122
|
+
/** Run a render benchmark on loaded data. Sweeps through the full tour, timing each frame. */
|
|
123
|
+
benchmark: (numFrames?: number) => Promise<{
|
|
124
|
+
frameTimes: Float64Array;
|
|
125
|
+
numPoints: number;
|
|
126
|
+
numDims: number;
|
|
127
|
+
stats: {
|
|
128
|
+
avgMs: number;
|
|
129
|
+
fps: number;
|
|
130
|
+
p50Ms: number;
|
|
131
|
+
p95Ms: number;
|
|
132
|
+
minMs: number;
|
|
133
|
+
maxMs: number;
|
|
134
|
+
};
|
|
135
|
+
}>;
|
|
136
|
+
/** Get a point-in-time snapshot of GPU memory, dataset dimensions, and JS heap usage. */
|
|
137
|
+
getMetrics: () => Promise<{
|
|
138
|
+
gpuMemoryBytes: number;
|
|
139
|
+
numPoints: number;
|
|
140
|
+
numDims: number;
|
|
141
|
+
/** Main-thread JS heap (V8 heap of the calling context). */
|
|
142
|
+
jsHeapUsedBytes: number | null;
|
|
143
|
+
/** GPU-worker JS heap (V8 heap of the render worker). */
|
|
144
|
+
workerJsHeapUsedBytes: number | null;
|
|
145
|
+
}>;
|
|
146
|
+
/** Add a preview canvas. Ownership is transferred; the worker blits rendered previews to its 2D context. */
|
|
147
|
+
addPreviewCanvas: (id: number, canvas: HTMLCanvasElement) => void;
|
|
148
|
+
/** Remove a previously added preview canvas. */
|
|
149
|
+
removePreviewCanvas: (id: number) => void;
|
|
81
150
|
/** Subscribe to status events from both workers. Returns an unsubscribe function. */
|
|
82
151
|
subscribe: (handler: (status: ScatterStatus) => void) => () => void;
|
|
83
152
|
/** Terminate both workers and release resources. */
|
package/dist/gpu/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/gpu/client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,cAAc,GAAG;IAC3B,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/gpu/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
export type ColorPipelines = {
|
|
2
|
-
colorContinuous: GPUComputePipeline;
|
|
3
|
-
colorCategorical: GPUComputePipeline;
|
|
4
2
|
selectContinuous: GPUComputePipeline;
|
|
5
3
|
selectCategorical: GPUComputePipeline;
|
|
6
4
|
bindGroupLayout: GPUBindGroupLayout;
|
|
7
5
|
paramsBuffer: GPUBuffer;
|
|
8
6
|
};
|
|
9
7
|
export declare const createColorPipelines: (device: GPUDevice) => ColorPipelines;
|
|
10
|
-
/** Create a bind group for
|
|
8
|
+
/** Create a bind group for a selection compute operation. */
|
|
11
9
|
export declare const createColorBindGroup: (device: GPUDevice, layout: GPUBindGroupLayout, source: GPUBuffer, lookup: GPUBuffer, output: GPUBuffer, params: GPUBuffer) => GPUBindGroup;
|
|
12
|
-
/** Dispatch a color/selection compute shader and return the command buffer. */
|
|
13
|
-
export declare const dispatchColorCompute: (device: GPUDevice, pipeline: GPUComputePipeline, bindGroup: GPUBindGroup, numPoints: number) => GPUCommandBuffer;
|
|
14
|
-
export declare const writeContinuousColorParams: (device: GPUDevice, buf: GPUBuffer, numPoints: number, columnOffset: number, min: number, range: number, lutSize: number) => void;
|
|
15
|
-
export declare const writeCategoricalColorParams: (device: GPUDevice, buf: GPUBuffer, numPoints: number, paletteSize: number) => void;
|
|
16
10
|
export declare const writeContinuousSelectParams: (device: GPUDevice, buf: GPUBuffer, numPoints: number, columnOffset: number, numRanges: number) => void;
|
|
17
11
|
export declare const writeCategoricalSelectParams: (device: GPUDevice, buf: GPUBuffer, numPoints: number, numLabels: number) => void;
|
|
18
|
-
/** Pack an RGB palette [[r,g,b], ...] into Uint32Array of 0xAABBGGRR values. */
|
|
19
|
-
export declare const packPalette: (palette: [number, number, number][]) => Uint32Array;
|
|
20
12
|
//# sourceMappingURL=color-pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-pipeline.d.ts","sourceRoot":"","sources":["../../src/gpu/color-pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"color-pipeline.d.ts","sourceRoot":"","sources":["../../src/gpu/color-pipeline.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,eAAe,EAAE,kBAAkB,CAAC;IACpC,YAAY,EAAE,SAAS,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,KAAG,cAgCxD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,EACjB,QAAQ,kBAAkB,EAC1B,QAAQ,SAAS,EACjB,QAAQ,SAAS,EACjB,QAAQ,SAAS,EACjB,QAAQ,SAAS,KAChB,YAUC,CAAC;AAIL,eAAO,MAAM,2BAA2B,GACtC,QAAQ,SAAS,EACjB,KAAK,SAAS,EACd,WAAW,MAAM,EACjB,cAAc,MAAM,EACpB,WAAW,MAAM,KAChB,IAOF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,QAAQ,SAAS,EACjB,KAAK,SAAS,EACd,WAAW,MAAM,EACjB,WAAW,MAAM,KAChB,IAMF,CAAC"}
|
package/dist/gpu/device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/gpu/device.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/gpu/device.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,UAAU,CA2CrD,CAAC"}
|
package/dist/gpu/messages.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
export type MainToGpu = {
|
|
2
2
|
type: 'init';
|
|
3
|
-
|
|
3
|
+
canvas: OffscreenCanvas;
|
|
4
4
|
dataPort: MessagePort;
|
|
5
5
|
zoom: number;
|
|
6
6
|
dpr: number;
|
|
7
|
+
} | {
|
|
8
|
+
type: 'addPreviewCanvas';
|
|
9
|
+
id: number;
|
|
10
|
+
canvas: OffscreenCanvas;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'removePreviewCanvas';
|
|
13
|
+
id: number;
|
|
7
14
|
} | {
|
|
8
15
|
type: 'setBases';
|
|
9
16
|
bases: Float32Array[];
|
|
@@ -47,6 +54,27 @@ export type MainToGpu = {
|
|
|
47
54
|
polygon: Float32Array;
|
|
48
55
|
} | {
|
|
49
56
|
type: 'computePCA';
|
|
57
|
+
} | {
|
|
58
|
+
type: 'startPlayback';
|
|
59
|
+
speed: number;
|
|
60
|
+
direction: 1 | -1;
|
|
61
|
+
} | {
|
|
62
|
+
type: 'stopPlayback';
|
|
63
|
+
} | {
|
|
64
|
+
type: 'setMaxPoints';
|
|
65
|
+
maxPoints: number;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'enable3d';
|
|
68
|
+
} | {
|
|
69
|
+
type: 'disable3d';
|
|
70
|
+
} | {
|
|
71
|
+
type: 'set3dRotation';
|
|
72
|
+
matrix: Float32Array;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'benchmark';
|
|
75
|
+
numFrames: number;
|
|
76
|
+
} | {
|
|
77
|
+
type: 'getMetrics';
|
|
50
78
|
};
|
|
51
79
|
export type GpuToMain = {
|
|
52
80
|
type: 'ready';
|
|
@@ -61,5 +89,28 @@ export type GpuToMain = {
|
|
|
61
89
|
eigenvectors: Float32Array[];
|
|
62
90
|
eigenvalues: Float32Array;
|
|
63
91
|
numDims: number;
|
|
92
|
+
} | {
|
|
93
|
+
type: 'playbackTick';
|
|
94
|
+
position: number;
|
|
95
|
+
/** Milliseconds since the previous frame (rAF delta). */
|
|
96
|
+
frameMs?: number;
|
|
97
|
+
} | {
|
|
98
|
+
type: 'playbackStopped';
|
|
99
|
+
frameTimes: Float64Array;
|
|
100
|
+
} | {
|
|
101
|
+
type: 'benchmarkResult';
|
|
102
|
+
frameTimes: Float64Array;
|
|
103
|
+
numPoints: number;
|
|
104
|
+
numDims: number;
|
|
105
|
+
} | {
|
|
106
|
+
type: 'metricsResult';
|
|
107
|
+
gpuMemoryBytes: number;
|
|
108
|
+
numPoints: number;
|
|
109
|
+
numDims: number;
|
|
110
|
+
/** JS heap measured from inside the GPU worker (its own V8 context). */
|
|
111
|
+
workerJsHeapBytes: number | null;
|
|
112
|
+
} | {
|
|
113
|
+
type: 'residualPC';
|
|
114
|
+
residualPC: Float32Array;
|
|
64
115
|
};
|
|
65
116
|
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/gpu/messages.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/gpu/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/gpu/pipeline.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
export type PointPipeline = {
|
|
2
2
|
/** Additive blend pipeline — accumulates light on dark background. */
|
|
3
3
|
additivePipeline: GPURenderPipeline;
|
|
4
|
-
/** Normal (premultiplied-over)
|
|
4
|
+
/** Normal (premultiplied-over) pipeline — standard alpha compositing for per-point colors. */
|
|
5
5
|
normalPipeline: GPURenderPipeline;
|
|
6
6
|
/** Subtractive (reverse-subtract) blend pipeline — subtracts from light background. */
|
|
7
7
|
subtractivePipeline: GPURenderPipeline;
|
|
8
8
|
bindGroupLayout: GPUBindGroupLayout;
|
|
9
9
|
uniformBuffer: GPUBuffer;
|
|
10
10
|
cameraBuffer: GPUBuffer;
|
|
11
|
-
/** Small 4-byte default buffer used when no
|
|
12
|
-
|
|
11
|
+
/** Small 4-byte default buffer used when no colormap LUT is loaded. */
|
|
12
|
+
defaultColorLutBuffer: GPUBuffer;
|
|
13
13
|
/** Small 4-byte default buffer used when no selection mask is set. */
|
|
14
14
|
defaultSelectionBuffer: GPUBuffer;
|
|
15
|
+
/** Small 4-byte default buffer used when no categorical indices are bound. */
|
|
16
|
+
defaultCatIndicesBuffer: GPUBuffer;
|
|
15
17
|
};
|
|
16
18
|
/** Resolved style with concrete numeric values, ready for GPU upload. */
|
|
17
19
|
export type PointStyle = {
|
|
@@ -25,8 +27,17 @@ export type RawPointStyle = {
|
|
|
25
27
|
opacity: number | 'auto';
|
|
26
28
|
color: [number, number, number];
|
|
27
29
|
};
|
|
30
|
+
/** Color mode: 0 = uniform color, 1 = continuous (data column → colormap), 2 = categorical. */
|
|
31
|
+
export type ColorMode = 0 | 1 | 2;
|
|
32
|
+
/** Color mapping state for the shader LUT approach. */
|
|
33
|
+
export type ColorState = {
|
|
34
|
+
mode: ColorMode;
|
|
35
|
+
columnOffset: number;
|
|
36
|
+
min: number;
|
|
37
|
+
range: number;
|
|
38
|
+
numStops: number;
|
|
39
|
+
};
|
|
28
40
|
export type StyleFlags = {
|
|
29
|
-
usePerPointColor: boolean;
|
|
30
41
|
useSelectionMask: boolean;
|
|
31
42
|
};
|
|
32
43
|
export type CameraState = {
|
|
@@ -39,18 +50,22 @@ export type CameraState = {
|
|
|
39
50
|
insetOffsetY: number;
|
|
40
51
|
/** Zoom multiplier — scales content to fit visible area below toolbar. */
|
|
41
52
|
insetZoom: number;
|
|
53
|
+
/** Whether 3D camera rotation is active. */
|
|
54
|
+
use3d: boolean;
|
|
55
|
+
/** 3×3 rotation matrix (column-major, 9 floats). null = identity. */
|
|
56
|
+
rotation: Float32Array | null;
|
|
42
57
|
};
|
|
43
|
-
export declare const createPointPipeline: (device: GPUDevice,
|
|
44
|
-
export declare const writeUniforms: (device: GPUDevice, uniformBuffer: GPUBuffer, style: PointStyle, flags?: StyleFlags, useSubtractive?: boolean) => void;
|
|
58
|
+
export declare const createPointPipeline: (device: GPUDevice, hdrFormat?: GPUTextureFormat) => PointPipeline;
|
|
59
|
+
export declare const writeUniforms: (device: GPUDevice, uniformBuffer: GPUBuffer, style: PointStyle, flags?: StyleFlags, colorState?: ColorState, useSubtractive?: boolean, numPoints?: number, numDims?: number, biasX?: number, biasY?: number, maxPoints?: number, biasZ?: number) => void;
|
|
45
60
|
export declare const writeCamera: (device: GPUDevice, cameraBuffer: GPUBuffer, camera: CameraState) => void;
|
|
46
|
-
export declare const createPointBindGroup: (device: GPUDevice, layout: GPUBindGroupLayout, uniformBuffer: GPUBuffer,
|
|
61
|
+
export declare const createPointBindGroup: (device: GPUDevice, layout: GPUBindGroupLayout, uniformBuffer: GPUBuffer, dataBuffer: GPUBuffer, cameraBuffer: GPUBuffer, colorLutBuffer: GPUBuffer, selectionBuffer: GPUBuffer, adjBasisBuffer: GPUBuffer, catIndicesBuffer: GPUBuffer) => GPUBindGroup;
|
|
47
62
|
export type TonemapPipeline = {
|
|
48
63
|
pipeline: GPURenderPipeline;
|
|
49
64
|
bindGroupLayout: GPUBindGroupLayout;
|
|
50
|
-
/**
|
|
65
|
+
/** 4-byte uniform buffer: [mode]. */
|
|
51
66
|
paramsBuffer: GPUBuffer;
|
|
52
67
|
};
|
|
53
|
-
/** Tonemap mode: 0 = exponential (additive), 1 = clamp (
|
|
68
|
+
/** Tonemap mode: 0 = exponential (additive), 1 = clamp (normal / subtractive). */
|
|
54
69
|
export declare const writeTonemapParams: (device: GPUDevice, paramsBuffer: GPUBuffer, mode: number) => void;
|
|
55
70
|
export declare const createTonemapPipeline: (device: GPUDevice, canvasFormat: GPUTextureFormat) => TonemapPipeline;
|
|
56
71
|
export declare const createTonemapBindGroup: (device: GPUDevice, layout: GPUBindGroupLayout, hdrTextureView: GPUTextureView, paramsBuffer: GPUBuffer) => GPUBindGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/gpu/pipeline.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,sEAAsE;IACtE,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/gpu/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const RESIDUAL_PC_MAX_DIMS = 64;
|
|
2
|
+
export type ResidualPcPipeline = {
|
|
3
|
+
partialPipeline: GPUComputePipeline;
|
|
4
|
+
finalPipeline: GPUComputePipeline;
|
|
5
|
+
bindGroupLayout: GPUBindGroupLayout;
|
|
6
|
+
paramsBuffer: GPUBuffer;
|
|
7
|
+
};
|
|
8
|
+
export declare const createResidualPcPipeline: (device: GPUDevice) => ResidualPcPipeline;
|
|
9
|
+
/**
|
|
10
|
+
* Compute the first PC of the residual complement on the GPU.
|
|
11
|
+
*
|
|
12
|
+
* The GPU reduces N points to a p×p covariance matrix (two passes).
|
|
13
|
+
* Power iteration (15 steps) runs on the CPU — p is always small (≤64).
|
|
14
|
+
*
|
|
15
|
+
* @param basis p×2 column-major Float32Array already written to basisBuffer
|
|
16
|
+
* @returns p-element unit vector orthogonal to both basis columns
|
|
17
|
+
*/
|
|
18
|
+
export declare const computeResidualPCGpu: (device: GPUDevice, pipeline: ResidualPcPipeline, dataBuffer: GPUBuffer, normParamsBuffer: GPUBuffer, basisBuffer: GPUBuffer, basis: Float32Array, numPoints: number, numDims: number) => Promise<Float32Array>;
|
|
19
|
+
//# sourceMappingURL=residual-pc-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"residual-pc-pipeline.d.ts","sourceRoot":"","sources":["../../src/gpu/residual-pc-pipeline.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAKvC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,kBAAkB,CAAC;IACpC,aAAa,EAAE,kBAAkB,CAAC;IAClC,eAAe,EAAE,kBAAkB,CAAC;IACpC,YAAY,EAAE,SAAS,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,SAAS,KAAG,kBAoC5D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,EACjB,UAAU,kBAAkB,EAC5B,YAAY,SAAS,EACrB,kBAAkB,SAAS,EAC3B,aAAa,SAAS,EACtB,OAAO,YAAY,EACnB,WAAW,MAAM,EACjB,SAAS,MAAM,KACd,OAAO,CAAC,YAAY,CAsEtB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createScatter } from './gpu/client.ts';
|
|
2
2
|
export type { ScatterOptions, ScatterInstance, ScatterStatus } from './gpu/client.ts';
|
|
3
|
+
export { createScatterWebGL } from './webgl/client.ts';
|
|
3
4
|
export type { Metadata } from './data/types.ts';
|
|
4
5
|
export { computeArcLengths, interpolateAtPosition } from './tour/arc-length.ts';
|
|
5
6
|
export { OKABE_ITO, GLASBEY_DARK, GLASBEY_LIGHT, VIRIDIS_25, MAGMA_25 } from './data/palettes.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtF,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/pca/jacobi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jacobi.d.ts","sourceRoot":"","sources":["../../src/pca/jacobi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,YAAY,EACpB,GAAG,MAAM,KACR;IAAE,WAAW,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,YAAY,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"jacobi.d.ts","sourceRoot":"","sources":["../../src/pca/jacobi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,YAAY,EACpB,GAAG,MAAM,KACR;IAAE,WAAW,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,YAAY,EAAE,CAAA;CA8E3D,CAAC"}
|
package/dist/renderer.d.ts
CHANGED
|
@@ -9,12 +9,15 @@ export type CanvasView = {
|
|
|
9
9
|
export declare const configureCanvas: (canvas: OffscreenCanvas, device: GPUDevice) => CanvasView;
|
|
10
10
|
/**
|
|
11
11
|
* Encode a render pass for numPoints instanced quads into a texture view.
|
|
12
|
-
* The target is typically an HDR
|
|
13
|
-
*
|
|
12
|
+
* The target is typically an HDR float texture for later tone mapping.
|
|
13
|
+
*
|
|
14
|
+
* Large point counts are split into multiple draw calls using firstInstance
|
|
15
|
+
* offsets so that @builtin(instance_index) covers [0, numPoints) across all
|
|
16
|
+
* draws — storage buffer indexing and decimation hashing are unaffected.
|
|
14
17
|
*/
|
|
15
|
-
export declare const renderPoints: (
|
|
18
|
+
export declare const renderPoints: (encoder: GPUCommandEncoder, target: GPUTextureView, pipeline: GPURenderPipeline, bindGroup: GPUBindGroup, numPoints: number, clearColor?: [number, number, number]) => void;
|
|
16
19
|
/**
|
|
17
20
|
* Encode a fullscreen tone-map pass that reads an HDR texture and writes to a canvas.
|
|
18
21
|
*/
|
|
19
|
-
export declare const tonemapToCanvas: (
|
|
22
|
+
export declare const tonemapToCanvas: (encoder: GPUCommandEncoder, view: CanvasView, tonemapPipeline: GPURenderPipeline, tonemapBindGroup: GPUBindGroup) => void;
|
|
20
23
|
//# sourceMappingURL=renderer.d.ts.map
|
package/dist/renderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,eAAe,EAAE,QAAQ,SAAS,KAAG,UAU5E,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,eAAe,EAAE,QAAQ,SAAS,KAAG,UAU5E,CAAC;AAQF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,SAAS,iBAAiB,EAC1B,QAAQ,cAAc,EACtB,UAAU,iBAAiB,EAC3B,WAAW,YAAY,EACvB,WAAW,MAAM,EACjB,aAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,KAC/C,IAqBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,iBAAiB,EAC1B,MAAM,UAAU,EAChB,iBAAiB,iBAAiB,EAClC,kBAAkB,YAAY,KAC7B,IAeF,CAAC"}
|