@jdultra/threedtiles 13.2.1 → 13.2.3

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/README.md CHANGED
@@ -105,6 +105,7 @@ Contact: emeric.beaufays@jdultra.com
105
105
  - quantization, draco, mshopt and ktx2 compression support
106
106
  - point clouds (only through gltf/glb tiles)
107
107
  - loading strategy options ("incremental" or "immediate")
108
+ - Gaussian splats (unofficial gltf extension for now)
108
109
 
109
110
 
110
111
  OGC3DTiles 1.1 are supported.
@@ -1,178 +1,208 @@
1
- let s, n = null;
2
- function F() {
3
- return (n === null || n.byteLength === 0) && (n = new Uint32Array(s.memory.buffer)), n;
1
+ let n, y = null;
2
+ function S() {
3
+ return (y === null || y.byteLength === 0) && (y = new Uint32Array(n.memory.buffer)), y;
4
4
  }
5
- let c = 0;
6
- function M(A, I) {
7
- const g = I(A.length * 4, 4) >>> 0;
8
- return F().set(A, g / 4), c = A.length, g;
5
+ let e = 0;
6
+ function r(I, A) {
7
+ const g = A(I.length * 4, 4) >>> 0;
8
+ return S().set(I, g / 4), e = I.length, g;
9
9
  }
10
- function U(A, I) {
11
- return A = A >>> 0, F().subarray(A / 4, A / 4 + I);
10
+ function f(I, A) {
11
+ return I = I >>> 0, S().subarray(I / 4, I / 4 + A);
12
12
  }
13
- function k(A, I) {
14
- const g = M(A, s.__wbindgen_malloc), B = c, Q = M(I, s.__wbindgen_malloc), i = c, a = s.radix_sort_indices(g, B, Q, i);
15
- var E = U(a[0], a[1]).slice();
16
- return s.__wbindgen_free(a[0], a[1] * 4, 4), E;
13
+ function H(I, A) {
14
+ const g = r(I, n.__wbindgen_malloc), B = e, C = r(A, n.__wbindgen_malloc), E = e, t = n.radix_sort_indices(g, B, C, E);
15
+ var s = f(t[0], t[1]).slice();
16
+ return n.__wbindgen_free(t[0], t[1] * 4, 4), s;
17
17
  }
18
- async function S(A, I) {
19
- if (typeof Response == "function" && A instanceof Response) {
18
+ async function q(I, A) {
19
+ if (typeof Response == "function" && I instanceof Response) {
20
20
  if (typeof WebAssembly.instantiateStreaming == "function")
21
21
  try {
22
- return await WebAssembly.instantiateStreaming(A, I);
22
+ return await WebAssembly.instantiateStreaming(I, A);
23
23
  } catch (B) {
24
- if (A.headers.get("Content-Type") != "application/wasm")
24
+ if (I.headers.get("Content-Type") != "application/wasm")
25
25
  console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", B);
26
26
  else
27
27
  throw B;
28
28
  }
29
- const g = await A.arrayBuffer();
30
- return await WebAssembly.instantiate(g, I);
29
+ const g = await I.arrayBuffer();
30
+ return await WebAssembly.instantiate(g, A);
31
31
  } else {
32
- const g = await WebAssembly.instantiate(A, I);
33
- return g instanceof WebAssembly.Instance ? { instance: g, module: A } : g;
32
+ const g = await WebAssembly.instantiate(I, A);
33
+ return g instanceof WebAssembly.Instance ? { instance: g, module: I } : g;
34
34
  }
35
35
  }
36
- function d() {
37
- const A = {};
38
- return A.wbg = {}, A.wbg.__wbindgen_init_externref_table = function() {
39
- const I = s.__wbindgen_export_0, g = I.grow(4);
40
- I.set(0, void 0), I.set(g + 0, void 0), I.set(g + 1, null), I.set(g + 2, !0), I.set(g + 3, !1);
41
- }, A;
36
+ function l() {
37
+ const I = {};
38
+ return I.wbg = {}, I.wbg.__wbindgen_init_externref_table = function() {
39
+ const A = n.__wbindgen_export_0, g = A.grow(4);
40
+ A.set(0, void 0), A.set(g + 0, void 0), A.set(g + 1, null), A.set(g + 2, !0), A.set(g + 3, !1);
41
+ }, I;
42
42
  }
43
- function J(A, I) {
44
- return s = A.exports, Y.__wbindgen_wasm_module = I, n = null, s.__wbindgen_start(), s;
43
+ function x(I, A) {
44
+ return n = I.exports, J.__wbindgen_wasm_module = A, y = null, n.__wbindgen_start(), n;
45
45
  }
46
- async function Y(A) {
47
- if (s !== void 0) return s;
48
- typeof A < "u" && (Object.getPrototypeOf(A) === Object.prototype ? { module_or_path: A } = A : console.warn("using deprecated parameters for the initialization function; pass a single object instead")), typeof A > "u" && (A = new URL("data:application/wasm;base64,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aiIFIAMgAmsiAkEBcjYCBEGIjMAAIAI2AgBBkIzAACAFNgIAIAgMAQsgCAsMAgsLQQEgAUUNABpBqYjAAC0AABogAUEBECMLIgIEQCAAIAE2AgggACACNgIEIABBADYCAA8LIAAgATYCCCAAQQE2AgQMAQsgAEEANgIECyAAQQE2AgALdgEBfyMAQSBrIgIkAAJ/IAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQIQwBCyACQRhqIAAoAgwiAEEQaikCADcDACACQRBqIABBCGopAgA3AwAgAiAAKQIANwMIIAEoAhQgASgCGCACQQhqEAULIAJBIGokAAtsAQF/IwBBMGsiASQAIAEgADYCACABQYABNgIEIAFBAjYCDCABQZiIwAA2AgggAUICNwIUIAEgAUEEaq1CgICAgCCENwMoIAEgAa1CgICAgCCENwMgIAEgAUEgajYCECABQQhqQYiGwAAQFAALZQAjAEEwayIAJABBqIjAAC0AAARAIABBAjYCDCAAQdiCwAA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIAghDcDICAAIABBIGo2AhAgAEEIakH4gsAAEBQACyAAQTBqJAALtAIBA38jAEEgayICJAAgAkEQaiIDIABBEGopAgA3AwAgAkEIaiIEIABBCGopAgA3AwAgAkEBOwEcIAIgATYCGCACIAApAgA3AwAjAEEgayIAJAAgAigCGCEBIABBEGogAykCADcDACAAQQhqIAQpAgA3AwAgACACNgIcIAAgATYCGCAAIAIpAgA3AwBBACECIwBBEGsiASQAIAAoAgwhAwJAAkACQAJAIAAoAgQOAgABAgsgAw0BQQEhAwwCCyADDQAgACgCACIDKAIEIQIgAygCACEDDAELIAFBgICAgHg2AgAgASAANgIMIAFBxIPAACAAKAIYIAAoAhwiAC0AHCAALQAdEA0ACyABIAI2AgQgASADNgIAIAFBqIPAACAAKAIYIAAoAhwiAC0AHCAALQAdEA0AC0EBAX8gAiAAKAIAIAAoAggiA2tLBEAgACADIAIQDCAAKAIIIQMLIAAoAgQgA2ogASACEAgaIAAgAiADajYCCEEACyYBAX8CQCAAEAEiAUUNACABQQRrLQAAQQNxRQ0AIAEgABAOCyABC00BAn9BqYjAAC0AABogASgCBCECIAEo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", import.meta.url));
49
- const I = d();
50
- (typeof A == "string" || typeof Request == "function" && A instanceof Request || typeof URL == "function" && A instanceof URL) && (A = fetch(A));
51
- const { instance: g, module: B } = await S(await A, I);
52
- return J(g, B);
46
+ async function J(I) {
47
+ if (n !== void 0) return n;
48
+ typeof I < "u" && (Object.getPrototypeOf(I) === Object.prototype ? { module_or_path: I } = I : console.warn("using deprecated parameters for the initialization function; pass a single object instead")), typeof I > "u" && (I = new URL("data:application/wasm;base64,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aiIFIAMgAmsiAkEBcjYCBEGIjMAAIAI2AgBBkIzAACAFNgIAIAgMAQsgCAsMAgsLQQEgAUUNABpBqYjAAC0AABogAUEBECMLIgIEQCAAIAE2AgggACACNgIEIABBADYCAA8LIAAgATYCCCAAQQE2AgQMAQsgAEEANgIECyAAQQE2AgALdgEBfyMAQSBrIgIkAAJ/IAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQIQwBCyACQRhqIAAoAgwiAEEQaikCADcDACACQRBqIABBCGopAgA3AwAgAiAAKQIANwMIIAEoAhQgASgCGCACQQhqEAULIAJBIGokAAtsAQF/IwBBMGsiASQAIAEgADYCACABQYABNgIEIAFBAjYCDCABQZiIwAA2AgggAUICNwIUIAEgAUEEaq1CgICAgCCENwMoIAEgAa1CgICAgCCENwMgIAEgAUEgajYCECABQQhqQYiGwAAQFAALZQAjAEEwayIAJABBqIjAAC0AAARAIABBAjYCDCAAQdiCwAA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIAghDcDICAAIABBIGo2AhAgAEEIakH4gsAAEBQACyAAQTBqJAALtAIBA38jAEEgayICJAAgAkEQaiIDIABBEGopAgA3AwAgAkEIaiIEIABBCGopAgA3AwAgAkEBOwEcIAIgATYCGCACIAApAgA3AwAjAEEgayIAJAAgAigCGCEBIABBEGogAykCADcDACAAQQhqIAQpAgA3AwAgACACNgIcIAAgATYCGCAAIAIpAgA3AwBBACECIwBBEGsiASQAIAAoAgwhAwJAAkACQAJAIAAoAgQOAgABAgsgAw0BQQEhAwwCCyADDQAgACgCACIDKAIEIQIgAygCACEDDAELIAFBgICAgHg2AgAgASAANgIMIAFBxIPAACAAKAIYIAAoAhwiAC0AHCAALQAdEA0ACyABIAI2AgQgASADNgIAIAFBqIPAACAAKAIYIAAoAhwiAC0AHCAALQAdEA0AC0EBAX8gAiAAKAIAIAAoAggiA2tLBEAgACADIAIQDCAAKAIIIQMLIAAoAgQgA2ogASACEAgaIAAgAiADajYCCEEACyYBAX8CQCAAEAEiAUUNACABQQRrLQAAQQNxRQ0AIAEgABAOCyABC00BAn9BqYjAAC0AABogASgCBCECIAEo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", import.meta.url));
49
+ const A = l();
50
+ (typeof I == "string" || typeof Request == "function" && I instanceof Request || typeof URL == "function" && I instanceof URL) && (I = fetch(I));
51
+ const { instance: g, module: B } = await q(await I, A);
52
+ return x(g, B);
53
53
  }
54
- const R = new ArrayBuffer(4), K = new Float32Array(R), L = new Uint32Array(R);
55
- class f {
56
- constructor(I) {
57
- this.points = new Float32Array(4096 * 3), this.distances = new Uint32Array(4096), this.pointSets = /* @__PURE__ */ new Map(), this.numUsed = 0, this.sortOngoing = !1, this.sortCallback = I, this.sortPromise = Promise.resolve();
54
+ const K = new ArrayBuffer(4), b = new Float32Array(K), p = new Uint32Array(K);
55
+ class Z {
56
+ constructor(A) {
57
+ this.points = new Float32Array(4096 * 3), this.distances = new Uint32Array(4096), this.pointSets = /* @__PURE__ */ new Map(), this.numUsed = 0, this.sortOngoing = !1, this.sortCallback = A, this.sortPromise = Promise.resolve();
58
58
  }
59
- hidePoints(I) {
60
- const g = this.pointSets.get(I);
59
+ hidePoints(A) {
60
+ const g = this.pointSets.get(A);
61
61
  g.used && (g.used = !1);
62
62
  }
63
- removePoints(I) {
64
- const g = this.pointSets.get(I);
65
- g.used && (g.used = !1), this.pointSets.delete(I);
63
+ removePoints(A) {
64
+ const g = this.pointSets.get(A);
65
+ g.used && (g.used = !1), this.pointSets.delete(A);
66
66
  let B = 0;
67
- for (const [Q, i] of this.pointSets.entries())
68
- Q + i.length > B && (B = Q + i.length);
67
+ for (const [C, E] of this.pointSets.entries())
68
+ C + E.length > B && (B = C + E.length);
69
69
  }
70
- showPoints(I) {
71
- const g = this.pointSets.get(I);
70
+ showPoints(A) {
71
+ const g = this.pointSets.get(A);
72
72
  g.used || (g.used = !0);
73
73
  }
74
- resizeArrays(I) {
75
- if (isNaN(I) && console.log("hit max splats"), I > this.points.length) {
76
- I = Math.max(this.points.length * 2, I);
77
- const g = new Float32Array(I);
74
+ resizeArrays(A) {
75
+ if (isNaN(A) && console.log("hit max splats"), A > this.points.length) {
76
+ A = Math.max(this.points.length * 2, A);
77
+ const g = new Float32Array(A);
78
78
  g.set(this.points, 0), this.points = g;
79
- const B = Math.floor(I / 3), Q = new Uint32Array(B);
80
- Q.set(this.distances, 0), this.distances = Q;
79
+ const B = Math.floor(A / 3), C = new Uint32Array(B);
80
+ C.set(this.distances, 0), this.distances = C;
81
81
  }
82
82
  }
83
- addBatchesOffsetStrideCount(I, g, B, Q, i) {
84
- const a = Math.max(this.points.length, g[g.length - 1] + i * 3);
85
- this.resizeArrays(a);
86
- for (let E = 0; E < g.length; E++) {
87
- const o = g[E], w = E * i * Q, D = Math.min((I.length - w) / Q, i);
88
- for (let t = 0; t < D; t++)
89
- this.points[o + t * 3] = I[t * Q + B + w], this.points[o + t * 3 + 1] = I[t * Q + B + w + 1], this.points[o + t * 3 + 2] = I[t * Q + B + w + 2];
90
- this.pointSets.set(o, { length: D * 3, used: !1 });
83
+ addBatchesOffsetStrideCount(A, g, B, C, E) {
84
+ const t = Math.max(this.points.length, g[g.length - 1] + E * 3);
85
+ this.resizeArrays(t);
86
+ for (let s = 0; s < g.length; s++) {
87
+ const a = g[s], o = s * E * C, D = Math.min((A.length - o) / C, E);
88
+ for (let i = 0; i < D; i++)
89
+ this.points[a + i * 3] = A[i * C + B + o], this.points[a + i * 3 + 1] = A[i * C + B + o + 1], this.points[a + i * 3 + 2] = A[i * C + B + o + 2];
90
+ this.pointSets.set(a, { length: D * 3, used: !1 });
91
91
  }
92
92
  }
93
- computeDistances(I, g, B) {
93
+ getFrustumPlanes(A, g = 1.2) {
94
+ const B = new Float32Array(24);
95
+ let C = 0;
96
+ const E = (t, s, a, o, D) => {
97
+ const i = 1 / Math.hypot(t, s, a);
98
+ B[C++] = t * i, B[C++] = s * i, B[C++] = a * i;
99
+ let w = o * i;
100
+ if (D && g !== 1) {
101
+ const h = 1 - g;
102
+ w -= h;
103
+ }
104
+ B[C++] = w;
105
+ };
106
+ return E(A[3] + A[0], A[7] + A[4], A[11] + A[8], A[15] + A[12], !0), E(A[3] - A[0], A[7] - A[4], A[11] - A[8], A[15] - A[12], !0), E(A[3] + A[1], A[7] + A[5], A[11] + A[9], A[15] + A[13], !0), E(A[3] - A[1], A[7] - A[5], A[11] - A[9], A[15] - A[13], !0), E(A[3] + A[2], A[7] + A[6], A[11] + A[10], A[15] + A[14], !1), E(A[3] - A[2], A[7] - A[6], A[11] - A[10], A[15] + A[14], !1), B;
107
+ }
108
+ computeDistances(A, g, B, C) {
94
109
  this.distances.fill(0);
95
- const Q = Array.from(this.pointSets.keys()), i = Q.length;
96
- this.numUsed = 0;
97
- for (let E = 0; E < i; E++) {
98
- const o = Q[E], w = this.pointSets.get(o);
99
- if (!w.used) continue;
100
- const D = Math.floor(w.length / 3);
101
- this.numUsed += D;
110
+ const E = Array.from(this.pointSets.keys()), t = E.length;
111
+ let s;
112
+ C && (s = this.getFrustumPlanes(C)), this.numUsed = 0;
113
+ for (let o = 0; o < t; o++) {
114
+ const D = E[o], i = this.pointSets.get(D);
115
+ if (!i.used) continue;
116
+ const w = Math.floor(i.length / 3);
117
+ this.numUsed += w;
102
118
  }
103
119
  this.indexes = new Uint32Array(this.numUsed), this.distances = new Uint32Array(this.numUsed);
104
120
  let a = 0;
105
- for (let E = 0; E < i; E++) {
106
- const o = Q[E], w = Math.floor(o / 3), D = this.pointSets.get(o);
107
- if (!D.used) continue;
108
- const t = Math.floor(D.length / 3);
109
- for (let N = 0; N < t; N++) {
110
- const y = o + N * 3, G = I - this.points[y], e = g - this.points[y + 1], h = B - this.points[y + 2], r = G * G + e * e + h * h;
111
- K[0] = r, this.distances[a] = L[0], this.indexes[a++] = w + N;
121
+ for (let o = 0; o < t; o++) {
122
+ const D = E[o], i = Math.floor(D / 3), w = this.pointSets.get(D);
123
+ if (!w.used) continue;
124
+ const h = Math.floor(w.length / 3);
125
+ for (let c = 0; c < h; c++) {
126
+ const G = D + c * 3, M = this.points[G], F = this.points[G + 1], Y = this.points[G + 2];
127
+ if (s) {
128
+ let k = !0;
129
+ for (let N = 0; N < 24; N += 4)
130
+ if (M * s[N] + F * s[N + 1] + Y * s[N + 2] + s[N + 3] < 0) {
131
+ k = !1;
132
+ break;
133
+ }
134
+ if (!k) continue;
135
+ }
136
+ const R = A - M, U = g - F, d = B - Y, L = R * R + U * U + d * d;
137
+ b[0] = L, this.distances[a] = p[0], this.indexes[a++] = i + c;
112
138
  }
113
139
  }
140
+ this.numUsed = a, this.indexes = this.indexes.subarray(0, a), this.distances = this.distances.subarray(0, a);
114
141
  }
115
- sort(I, g) {
116
- this.pendingSort = I, this.pendingID = g, this.sortOngoing || (this.sortOngoing = !0, this.processSortQueue());
142
+ sort(A, g, B) {
143
+ this.pendingSort = { xyz: A, vpm: g }, this.pendingID = B, this.sortOngoing || (this.sortOngoing = !0, this.processSortQueue());
117
144
  }
118
145
  // Asynchronous loop to process sort requests sequentially
119
146
  async processSortQueue() {
120
- for (this.initialized || (await Y(), this.initialized = !0); this.pendingSort; ) {
121
- const I = this.pendingSort, g = this.pendingID;
122
- this.pendingSort = null, this.pendingID = null;
123
- const B = performance.now();
124
- this.computeDistances(I[0], I[1], I[2]), this.indexes = k(this.indexes, this.distances), performance.now() - B, this.sortCallback(this.indexes, this.numUsed, g), await new Promise((Q) => setTimeout(Q, 0));
147
+ for (this.initialized || (await J(), this.initialized = !0); this.pendingSort; ) {
148
+ const { xyz: A, vpm: g } = this.pendingSort, B = this.pendingID;
149
+ this.pendingSort = null, this.pendingID = null, this.computeDistances(A[0], A[1], A[2], g);
150
+ const C = performance.now();
151
+ this.indexes = H(this.indexes, this.distances);
152
+ const E = performance.now() - C;
153
+ this.sortCallback(this.indexes, this.numUsed, B, E), await new Promise((t) => setTimeout(t, 0));
125
154
  }
126
155
  this.sortOngoing = !1;
127
156
  }
128
157
  }
129
- const H = (A, I, g) => {
130
- const B = new Uint32Array(A);
158
+ const m = (I, A, g, B) => {
159
+ const C = new Uint32Array(I);
131
160
  postMessage({
132
- order: B.buffer,
133
- count: I,
134
- id: g
135
- }, [B.buffer]);
161
+ order: C.buffer,
162
+ count: A,
163
+ id: g,
164
+ sortPerf: B
165
+ }, [C.buffer]);
136
166
  };
137
- let C;
138
- self.onmessage = function(A) {
167
+ let Q;
168
+ self.onmessage = function(I) {
139
169
  try {
140
- switch (A.data.method) {
170
+ switch (I.data.method) {
141
171
  case "addBatches":
142
- C || (C = new f(H)), C.addBatchesOffsetStrideCount(new Float32Array(A.data.positions), A.data.insertionIndexes, A.data.offset, A.data.stride, A.data.batchSize);
172
+ Q || (Q = new Z(m)), Q.addBatchesOffsetStrideCount(new Float32Array(I.data.positions), I.data.insertionIndexes, I.data.offset, I.data.stride, I.data.batchSize);
143
173
  break;
144
174
  case "hide":
145
- C && C.hidePoints(A.data.insertionIndex);
175
+ Q && Q.hidePoints(I.data.insertionIndex);
146
176
  break;
147
177
  case "hideBatches":
148
- C && (A.data.insertionIndexes.forEach((I) => {
149
- C.hidePoints(I);
150
- }), C.sort(A.data.xyz, A.data.id));
178
+ Q && (I.data.insertionIndexes.forEach((A) => {
179
+ Q.hidePoints(A);
180
+ }), Q.sort(I.data.xyz, I.data.vpm, I.data.id));
151
181
  break;
152
182
  case "show":
153
- C && (C.showPoints(A.data.insertionIndex), C.sort(A.data.xyz, A.data.id));
183
+ Q && (Q.showPoints(I.data.insertionIndex), Q.sort(I.data.xyz, I.data.vpm, I.data.id));
154
184
  break;
155
185
  case "showBatches":
156
- C && (A.data.insertionIndexes.forEach((I) => {
157
- C.showPoints(I);
158
- }), C.sort(A.data.xyz, A.data.id));
186
+ Q && (I.data.insertionIndexes.forEach((A) => {
187
+ Q.showPoints(A);
188
+ }), Q.sort(I.data.xyz, I.data.vpm, I.data.id));
159
189
  break;
160
190
  case "remove":
161
- C && (C.removePoints(A.data.insertionIndex), C.sort(A.data.xyz, A.data.id));
191
+ Q && (Q.removePoints(I.data.insertionIndex), Q.sort(I.data.xyz, I.data.vpm, I.data.id));
162
192
  break;
163
193
  case "removeBatches":
164
- C && (A.data.insertionIndexes.forEach((I) => {
165
- C.removePoints(I);
166
- }), C.sort(A.data.xyz, A.data.id));
194
+ Q && (I.data.insertionIndexes.forEach((A) => {
195
+ Q.removePoints(A);
196
+ }), Q.sort(I.data.xyz, I.data.vpm, I.data.id));
167
197
  break;
168
198
  case "sort":
169
- C && C.sort(A.data.xyz, A.data.id);
199
+ Q && Q.sort(I.data.xyz, I.data.vpm, I.data.id);
170
200
  break;
171
201
  default:
172
- throw new Error(`No method with name ${A.data.method}`);
202
+ throw new Error(`No method with name ${I.data.method}`);
173
203
  }
174
- } catch (I) {
175
- postMessage({ error: I.message });
204
+ } catch (A) {
205
+ postMessage({ error: A.message });
176
206
  }
177
207
  };
178
- //# sourceMappingURL=PointsManager.worker-5fpGpVvf.js.map
208
+ //# sourceMappingURL=PointsManager.worker-dH1fNyu8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PointsManager.worker-dH1fNyu8.js","sources":["../src/splats/radix/wasm_sorter.js","../src/splats/PointsManager.js","../src/splats/PointsManager.worker.js"],"sourcesContent":["let wasm;\n\nlet cachedUint32ArrayMemory0 = null;\n\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n/**\n * Radix Sort implementation for sorting indices based on distances.\n * Both `indices` and `distances` should have the same length.\n * Returns a new vector of sorted indices in descending order based on distances.\n * @param {Uint32Array} indices\n * @param {Uint32Array} distances\n * @returns {Uint32Array}\n */\nexport function radix_sort_indices(indices, distances) {\n const ptr0 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(distances, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.radix_sort_indices(ptr0, len0, ptr1, len1);\n var v3 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v3;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_0;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedUint32ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('wasm_sorter_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import init, { radix_sort_indices } from './radix/wasm_sorter.js';\r\n\r\nconst buffer = new ArrayBuffer(4);\r\nconst floatView = new Float32Array(buffer);\r\nconst uintView = new Uint32Array(buffer);\r\n\r\nclass PointsManager {\r\n constructor(sortCallback) {\r\n this.points = new Float32Array(4096 * 3);\r\n this.distances = new Uint32Array(4096);\r\n this.pointSets = new Map(); // Map<number, object>\r\n this.numUsed = 0;\r\n this.sortOngoing = false;\r\n this.sortCallback = sortCallback;\r\n this.sortPromise = Promise.resolve();\r\n }\r\n\r\n\r\n\r\n hidePoints(insertionIndex) {\r\n //console.log(\"hide\");\r\n const pointSet = this.pointSets.get(insertionIndex);\r\n if (pointSet.used) {\r\n pointSet.used = false;\r\n }\r\n }\r\n removePoints(insertionIndex) {\r\n /* console.log(\"remove\"); */\r\n const pointSet = this.pointSets.get(insertionIndex);\r\n if (pointSet.used) {\r\n pointSet.used = false;\r\n }\r\n\r\n this.pointSets.delete(insertionIndex);\r\n\r\n // Determine newLength based on remaining points\r\n let newLength = 0;\r\n for (const [key, aPointSet] of this.pointSets.entries()) {\r\n if (key + aPointSet.length > newLength) {\r\n newLength = key + aPointSet.length;\r\n }\r\n }\r\n\r\n }\r\n showPoints(insertionIndex) {\r\n /* console.log(\"show\"); */\r\n const pointSet = this.pointSets.get(insertionIndex);\r\n if (!pointSet.used) {\r\n pointSet.used = true;\r\n }\r\n\r\n }\r\n\r\n resizeArrays(newLength) {\r\n\r\n if (isNaN(newLength)) {\r\n console.log(\"hit max splats\")\r\n }\r\n //console.log(newLength)\r\n if (newLength > this.points.length) {\r\n newLength = Math.max(this.points.length * 2, newLength);\r\n // Resize points array\r\n const newPoints = new Float32Array(newLength);\r\n newPoints.set(this.points, 0);\r\n this.points = newPoints;\r\n\r\n // Resize distances array\r\n const newNumPoints = Math.floor(newLength / 3);\r\n const newDistances = new Uint32Array(newNumPoints);\r\n newDistances.set(this.distances, 0);\r\n this.distances = newDistances;\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n addBatchesOffsetStrideCount(positions, insertionIndexes, offset, stride, batchSize) {\r\n\r\n const newLength = Math.max(this.points.length, insertionIndexes[insertionIndexes.length - 1] + batchSize * 3);\r\n\r\n this.resizeArrays(newLength);\r\n for (let batchIndex = 0; batchIndex < insertionIndexes.length; batchIndex++) {\r\n\r\n const insertionIndex = insertionIndexes[batchIndex];\r\n const start = Math.floor(insertionIndex / 3);\r\n const batchPositionStartIndex = batchIndex * batchSize * stride;\r\n const batchNumPoints = Math.min((positions.length - batchPositionStartIndex) / stride, batchSize);\r\n\r\n\r\n for (let i = 0; i < batchNumPoints; i++) {\r\n\r\n this.points[insertionIndex + i * 3] = positions[i * stride + offset + batchPositionStartIndex]\r\n this.points[insertionIndex + i * 3 + 1] = positions[i * stride + offset + batchPositionStartIndex + 1]\r\n this.points[insertionIndex + i * 3 + 2] = positions[i * stride + offset + batchPositionStartIndex + 2]\r\n\r\n }\r\n this.pointSets.set(insertionIndex, { length: batchNumPoints * 3, used: false });\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n getFrustumPlanes(viewProj, margin = 1.2) { \r\n const p = new Float32Array(24);\r\n let i = 0;\r\n \r\n const emit = (a, b, c, d, useMargin) => {\r\n const invLen = 1 / Math.hypot(a, b, c);\r\n p[i++] = a * invLen; // Nx\r\n p[i++] = b * invLen; // Ny\r\n p[i++] = c * invLen; // Nz\r\n \r\n let d_normalized = d * invLen; // D_orig\r\n \r\n if (useMargin && margin !== 1.0) {\r\n const shift_amount = (1.0-margin);\r\n d_normalized -= shift_amount; // D_new = D_orig - shift_amount\r\n }\r\n p[i++] = d_normalized; // Store the (potentially shifted) D\r\n };\r\n \r\n // a,b,c,d args useMargin\r\n emit(viewProj[3] + viewProj[0], viewProj[7] + viewProj[4], viewProj[11] + viewProj[8], viewProj[15] + viewProj[12], true); // left\r\n emit(viewProj[3] - viewProj[0], viewProj[7] - viewProj[4], viewProj[11] - viewProj[8], viewProj[15] - viewProj[12], true); // right\r\n emit(viewProj[3] + viewProj[1], viewProj[7] + viewProj[5], viewProj[11] + viewProj[9], viewProj[15] + viewProj[13], true); // bottom\r\n emit(viewProj[3] - viewProj[1], viewProj[7] - viewProj[5], viewProj[11] - viewProj[9], viewProj[15] - viewProj[13], true); // top\r\n emit(viewProj[3] + viewProj[2], viewProj[7] + viewProj[6], viewProj[11] + viewProj[10], viewProj[15] + viewProj[14], false); // near\r\n emit(viewProj[3] - viewProj[2], viewProj[7] - viewProj[6], viewProj[11] - viewProj[10], viewProj[15] + viewProj[14], false); // far\r\n \r\n return p;\r\n }\r\n\r\n computeDistances(x, y, z,vpm) {\r\n\r\n this.distances.fill(0);\r\n const keys = Array.from(this.pointSets.keys());\r\n const numKeys = keys.length;\r\n let planes;\r\n if(!!vpm){\r\n planes = this.getFrustumPlanes(vpm);\r\n }\r\n this.numUsed = 0;\r\n for (let i = 0; i < numKeys; i++) {\r\n const key = keys[i];\r\n const pointSet = this.pointSets.get(key);\r\n if (!pointSet.used) continue;\r\n const length = Math.floor(pointSet.length / 3);\r\n this.numUsed += length\r\n }\r\n //console.log(\"num used : \"+this.numUsed);\r\n this.indexes = new Uint32Array(this.numUsed);\r\n this.distances = new Uint32Array(this.numUsed);\r\n let c = 0;\r\n for (let i = 0; i < numKeys; i++) {\r\n const key = keys[i];\r\n const keyBase = Math.floor(key / 3);\r\n const pointSet = this.pointSets.get(key);\r\n if (!pointSet.used) continue;\r\n const length = Math.floor(pointSet.length / 3);\r\n //this.numUsed += length\r\n for (let j = 0; j < length; j++) {\r\n const idx = key + (j * 3);\r\n const vx = this.points[idx];\r\n const vy = this.points[idx + 1];\r\n const vz = this.points[idx + 2];\r\n\r\n // frustum culling //\r\n if(planes){\r\n let visible = true;\r\n for (let p = 0; p < 24; p += 4) {\r\n if (vx * planes[p] +\r\n vy * planes[p + 1] +\r\n vz * planes[p + 2] +\r\n planes[p + 3] < 0) { // outside this plane\r\n visible = false;\r\n break;\r\n }\r\n }\r\n if (!visible) continue;\r\n }\r\n \r\n const dx = x - vx;\r\n const dy = y - vy;\r\n const dz = z - vz;\r\n const d = dx * dx + dy * dy + dz * dz;\r\n floatView[0] = d;\r\n this.distances[c] = uintView[0];\r\n this.indexes[c++] = keyBase + j;\r\n }\r\n }\r\n this.numUsed = c;\r\n \r\n this.indexes = this.indexes.subarray(0, c);\r\n this.distances = this.distances.subarray(0, c);\r\n }\r\n\r\n sort(xyz, vpm, id) {\r\n // Always store the latest sort request\r\n this.pendingSort = { xyz, vpm };\r\n this.pendingID = id;\r\n //console.log(`Received sort request with ID: ${id}`);\r\n\r\n // If no sort is currently ongoing, start processing\r\n if (!this.sortOngoing) {\r\n this.sortOngoing = true;\r\n this.processSortQueue();\r\n }\r\n }\r\n\r\n // Asynchronous loop to process sort requests sequentially\r\n async processSortQueue() {\r\n if (!this.initialized) {\r\n await init();\r\n this.initialized = true;\r\n }\r\n while (this.pendingSort) {\r\n const { xyz, vpm } = this.pendingSort;\r\n const currentID = this.pendingID;\r\n\r\n // Clear the pending sort to capture any new requests during processing\r\n this.pendingSort = null;\r\n this.pendingID = null;\r\n\r\n //console.log(`Starting sort with ID: ${currentID}`);\r\n\r\n \r\n\r\n // Perform the synchronous sort operations\r\n\r\n this.computeDistances(xyz[0], xyz[1], xyz[2], vpm);\r\n //console.log((performance.now() - start)+' ms');\r\n\r\n //console.log(this.indexes.length)\r\n const start = performance.now();\r\n this.indexes = radix_sort_indices(this.indexes, this.distances);\r\n \r\n\r\n const duration = performance.now() - start;\r\n //console.log(`Sort with ID: ${currentID} completed in ${duration.toFixed(2)}ms`);\r\n\r\n // Callback after sorting is done\r\n this.sortCallback(this.indexes, this.numUsed, currentID, duration);\r\n\r\n // Yield control to the event loop to handle new incoming sort requests\r\n await new Promise(resolve => setTimeout(resolve, 0));\r\n }\r\n\r\n // No more pending sorts\r\n this.sortOngoing = false;\r\n //console.log(\"No more pending sorts. SortWorker is idle.\");\r\n }\r\n} export { PointsManager }","import { PointsManager } from \"./PointsManager\";\r\n\r\nconst sortCallback = ((array, numUsed, id, sortPerf)=>{\r\n const copy = new Uint32Array(array)\r\n postMessage({\r\n order: copy.buffer,\r\n count: numUsed,\r\n id: id,\r\n sortPerf: sortPerf\r\n }, [copy.buffer]);\r\n})\r\nlet pointsManager;\r\nself.onmessage = function (e) {\r\n\r\n try {\r\n\r\n switch (e.data.method) {\r\n \r\n case \"addBatches\":\r\n if (!pointsManager) {\r\n pointsManager = new PointsManager(sortCallback);\r\n }\r\n pointsManager.addBatchesOffsetStrideCount(new Float32Array(e.data.positions), e.data.insertionIndexes, e.data.offset, e.data.stride, e.data.batchSize);\r\n break\r\n case \"hide\":\r\n\r\n if (!!pointsManager) {\r\n pointsManager.hidePoints(e.data.insertionIndex);\r\n }\r\n\r\n break\r\n case \"hideBatches\":\r\n\r\n if (!!pointsManager) {\r\n e.data.insertionIndexes.forEach(insertionIndex => {\r\n pointsManager.hidePoints(insertionIndex);\r\n });\r\n pointsManager.sort(e.data.xyz, e.data.vpm, e.data.id)\r\n }\r\n\r\n break\r\n case \"show\":\r\n if (!!pointsManager) {\r\n pointsManager.showPoints(e.data.insertionIndex);\r\n pointsManager.sort(e.data.xyz, e.data.vpm, e.data.id)\r\n }\r\n\r\n break;\r\n case \"showBatches\":\r\n\r\n if (!!pointsManager) {\r\n e.data.insertionIndexes.forEach(insertionIndex => {\r\n pointsManager.showPoints(insertionIndex);\r\n });\r\n pointsManager.sort(e.data.xyz, e.data.vpm, e.data.id)\r\n }\r\n\r\n break\r\n case \"remove\":\r\n if (!!pointsManager) {\r\n pointsManager.removePoints(e.data.insertionIndex);\r\n pointsManager.sort(e.data.xyz, e.data.vpm, e.data.id)\r\n }\r\n\r\n break\r\n case \"removeBatches\":\r\n\r\n if (!!pointsManager) {\r\n e.data.insertionIndexes.forEach(insertionIndex => {\r\n pointsManager.removePoints(insertionIndex);\r\n });\r\n pointsManager.sort(e.data.xyz, e.data.vpm, e.data.id)\r\n }\r\n\r\n break\r\n case \"sort\":\r\n \r\n if (!!pointsManager) {\r\n pointsManager.sort(e.data.xyz, e.data.vpm, e.data.id)\r\n }\r\n break\r\n default:\r\n throw new Error(`No method with name ${e.data.method}`)\r\n }\r\n } catch (error) {\r\n postMessage({ error: error.message })\r\n }\r\n}"],"names":["wasm","cachedUint32ArrayMemory0","getUint32ArrayMemory0","WASM_VECTOR_LEN","passArray32ToWasm0","arg","malloc","ptr","getArrayU32FromWasm0","len","radix_sort_indices","indices","distances","ptr0","len0","ptr1","len1","ret","v3","__wbg_load","module","imports","e","bytes","instance","__wbg_get_imports","table","offset","__wbg_finalize_init","__wbg_init","module_or_path","buffer","floatView","uintView","PointsManager","sortCallback","insertionIndex","pointSet","newLength","key","aPointSet","newPoints","newNumPoints","newDistances","positions","insertionIndexes","stride","batchSize","batchIndex","batchPositionStartIndex","batchNumPoints","viewProj","margin","p","i","emit","a","b","c","d","useMargin","invLen","d_normalized","shift_amount","x","y","z","vpm","keys","numKeys","planes","length","keyBase","j","idx","vx","vy","vz","visible","dx","dy","dz","xyz","id","init","currentID","start","duration","resolve","array","numUsed","sortPerf","copy","pointsManager","error"],"mappings":"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"}
@@ -12,10 +12,14 @@ export class PointsManager {
12
12
  showPoints(insertionIndex: any): void;
13
13
  resizeArrays(newLength: any): void;
14
14
  addBatchesOffsetStrideCount(positions: any, insertionIndexes: any, offset: any, stride: any, batchSize: any): void;
15
- computeDistances(x: any, y: any, z: any): void;
15
+ getFrustumPlanes(viewProj: any, margin?: number): Float32Array<ArrayBuffer>;
16
+ computeDistances(x: any, y: any, z: any, vpm: any): void;
16
17
  indexes: any;
17
- sort(xyz: any, id: any): void;
18
- pendingSort: any;
18
+ sort(xyz: any, vpm: any, id: any): void;
19
+ pendingSort: {
20
+ xyz: any;
21
+ vpm: any;
22
+ } | null | undefined;
19
23
  pendingID: any;
20
24
  processSortQueue(): Promise<void>;
21
25
  initialized: boolean | undefined;
@@ -28,6 +28,8 @@ export class SplatsMesh extends Mesh<import("three").BufferGeometry<import("thre
28
28
  * @param {number} quality value between 0 and 1 (1 highest quality)
29
29
  */
30
30
  setQuality(quality: number): void;
31
+ setSplatsCPUCulling(splatsCPUCuling: any): void;
32
+ splatsCPUCuling: any;
31
33
  updateShaderParams(camera: any): void;
32
34
  dispose(): void;
33
35
  copyTex2D(src: any, dst: any, scissorBox: any, layer: any): void;
@@ -42,13 +44,14 @@ export class SplatsMesh extends Mesh<import("three").BufferGeometry<import("thre
42
44
  * @param {number} cropRadius
43
45
  */
44
46
  setSplatsCropRadius(cropRadius: number): void;
45
- sort(cameraPosition: any): void;
47
+ sort(cameraPosition: any, viewProjModel: any): void;
48
+ viewProjModel: Matrix4 | undefined;
46
49
  raycast(raycaster: any, intersects: any): void;
47
50
  addSplatsTile(positions: any, colors: any, cov1: any, cov2: any): {
48
51
  hide: () => void;
49
52
  show: (callback: any) => void;
50
53
  remove: () => void;
51
- sort: (cameraPosition: any) => void;
54
+ sort: (cameraPosition: any, viewProjModel: any) => void;
52
55
  raycast: () => void;
53
56
  isSplatsBatch: boolean;
54
57
  } | undefined;
@@ -64,3 +67,4 @@ import { ShaderMaterial } from "three";
64
67
  import { OrthographicCamera } from "three";
65
68
  import { Scene } from "three";
66
69
  import { PlaneGeometry } from "three";
70
+ import { Matrix4 } from "three";