@ifc-lite/geometry 2.6.0 → 2.7.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/batch-sizing.d.ts +74 -0
- package/dist/batch-sizing.d.ts.map +1 -0
- package/dist/batch-sizing.js +45 -0
- package/dist/batch-sizing.js.map +1 -0
- package/dist/coordinate-handler.d.ts.map +1 -1
- package/dist/coordinate-handler.js +17 -9
- package/dist/coordinate-handler.js.map +1 -1
- package/dist/geometry-coordinate.d.ts.map +1 -1
- package/dist/geometry-coordinate.js +7 -0
- package/dist/geometry-coordinate.js.map +1 -1
- package/dist/geometry-parallel.d.ts +20 -0
- package/dist/geometry-parallel.d.ts.map +1 -1
- package/dist/geometry-parallel.js +85 -12
- package/dist/geometry-parallel.js.map +1 -1
- package/dist/geometry.worker.d.ts +37 -22
- package/dist/geometry.worker.d.ts.map +1 -1
- package/dist/geometry.worker.js +118 -67
- package/dist/geometry.worker.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/watchdog.d.ts +23 -10
- package/dist/watchdog.d.ts.map +1 -1
- package/dist/watchdog.js +22 -18
- package/dist/watchdog.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive per-call job budget for the streaming geometry worker's inner
|
|
3
|
+
* `processGeometryBatch` calls.
|
|
4
|
+
*
|
|
5
|
+
* A `processGeometryBatch` call is synchronous WASM: while it runs the worker
|
|
6
|
+
* posts no events, no meshes stream, and nothing feeds the host's stall
|
|
7
|
+
* watchdog. So the silent window the watchdog sees equals one call's
|
|
8
|
+
* wall-time = jobs × ms-per-job. The catch is ms-per-job is dominated by CSG
|
|
9
|
+
* density, which varies by one-to-two orders of magnitude across models (an
|
|
10
|
+
* extruded slab vs. a dense steel connection). A *fixed* job count therefore
|
|
11
|
+
* produces wildly different silent windows: the old `512` was <1 s on light
|
|
12
|
+
* geometry but ~23 s on dense steel — long enough to trip the watchdog and
|
|
13
|
+
* kill a healthy load (issue #1097).
|
|
14
|
+
*
|
|
15
|
+
* Instead of committing to one count, the worker targets a fixed wall-time per
|
|
16
|
+
* call (`targetMs`) and resizes the next call from the throughput it just
|
|
17
|
+
* measured, clamped to [`minJobs`, `maxJobs`]. Light regions grow toward MAX
|
|
18
|
+
* (few calls, good decoder-cache locality — re-decode of shared sub-entities
|
|
19
|
+
* is amortised over more jobs); dense regions shrink toward MIN (small, regular
|
|
20
|
+
* heartbeats). The size is carried across chunks so density learned on one
|
|
21
|
+
* chunk applies to the next — dense CSG clusters by file region, so once a
|
|
22
|
+
* worker sees density it stays small for the rest of that region.
|
|
23
|
+
*
|
|
24
|
+
* Throughput vs. safety: a SMALLER `targetMs` streams more smoothly and keeps
|
|
25
|
+
* the silent window further under the watchdog grace, but a TOO-small target
|
|
26
|
+
* collapses dense regions to tiny batches that re-pay decoder-cache setup and
|
|
27
|
+
* re-decode shared sub-entities per call — the dominant cost once the O(file)
|
|
28
|
+
* pre-pass scan is seeded out. The defaults below were tuned on the largest
|
|
29
|
+
* real models (300 MB–1 GB, CSG-dense steel + architectural) to sit at the
|
|
30
|
+
* knee: large enough that decode overhead is a few percent, small enough that
|
|
31
|
+
* the steady-state silent window stays well under the watchdog's subsequent
|
|
32
|
+
* grace (see watchdog.ts). The only window adaptive sizing can't pre-empt is
|
|
33
|
+
* the single call that first crosses a light→dense boundary at MAX size, so
|
|
34
|
+
* `maxJobs × worst-realistic-ms-per-job` is kept under that grace too.
|
|
35
|
+
*
|
|
36
|
+
* Extracted from the worker (which can't be unit-tested — it imports the WASM
|
|
37
|
+
* module at top level) so the formula stays covered, mirroring `watchdog.ts`.
|
|
38
|
+
*/
|
|
39
|
+
export interface BatchSizingConfig {
|
|
40
|
+
/** Wall-time budget a single `processGeometryBatch` call should aim for. */
|
|
41
|
+
targetMs: number;
|
|
42
|
+
/** Smallest job count — floors decoder-cache thrash on the densest regions. */
|
|
43
|
+
minJobs: number;
|
|
44
|
+
/**
|
|
45
|
+
* Largest job count — caps the lone transitional call that crosses into a
|
|
46
|
+
* dense region before throughput is re-measured. Kept so `maxJobs ×
|
|
47
|
+
* worst-ms-per-job` stays under the watchdog's subsequent grace.
|
|
48
|
+
*/
|
|
49
|
+
maxJobs: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Defaults tuned on the largest real models. `targetMs` of 8 s keeps dense
|
|
53
|
+
* steel batches large enough to amortise decoder setup (vs. the ~2 s first cut
|
|
54
|
+
* which collapsed them to the floor and ran ~2× slower), while staying ~4×
|
|
55
|
+
* under the 30 s browser grace. `maxJobs` of 512 matches the historical fixed
|
|
56
|
+
* batch on light geometry (no throughput regression there) and, at the
|
|
57
|
+
* observed worst density (~45 ms/job → 23 s), still lands under the grace for
|
|
58
|
+
* the one transitional call.
|
|
59
|
+
*/
|
|
60
|
+
export declare const DEFAULT_BATCH_SIZING: BatchSizingConfig;
|
|
61
|
+
/**
|
|
62
|
+
* Merge a partial override (e.g. a runtime tuning hook) onto the defaults,
|
|
63
|
+
* dropping any non-finite/non-positive field and enforcing `minJobs <=
|
|
64
|
+
* maxJobs`. Always returns a usable config.
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveBatchSizing(partial?: Partial<BatchSizingConfig> | null): BatchSizingConfig;
|
|
67
|
+
/**
|
|
68
|
+
* The next per-call job budget given the last call's job count + wall-time.
|
|
69
|
+
* Pure. Targets `cfg.targetMs`, clamped to [`cfg.minJobs`, `cfg.maxJobs`]. A
|
|
70
|
+
* zero/sub-ms measurement (a trivially light batch) grows straight to MAX.
|
|
71
|
+
* With nothing measured (`jobs <= 0`) the `current` size is returned unchanged.
|
|
72
|
+
*/
|
|
73
|
+
export declare function nextAdaptiveBatchJobs(current: number, jobs: number, elapsedMs: number, cfg?: BatchSizingConfig): number;
|
|
74
|
+
//# sourceMappingURL=batch-sizing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-sizing.d.ts","sourceRoot":"","sources":["../src/batch-sizing.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAIlC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,GAAG,iBAAiB,CAOjG;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,iBAAwC,GAC5C,MAAM,CAMR"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Defaults tuned on the largest real models. `targetMs` of 8 s keeps dense
|
|
6
|
+
* steel batches large enough to amortise decoder setup (vs. the ~2 s first cut
|
|
7
|
+
* which collapsed them to the floor and ran ~2× slower), while staying ~4×
|
|
8
|
+
* under the 30 s browser grace. `maxJobs` of 512 matches the historical fixed
|
|
9
|
+
* batch on light geometry (no throughput regression there) and, at the
|
|
10
|
+
* observed worst density (~45 ms/job → 23 s), still lands under the grace for
|
|
11
|
+
* the one transitional call.
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_BATCH_SIZING = {
|
|
14
|
+
targetMs: 8_000,
|
|
15
|
+
minJobs: 64,
|
|
16
|
+
maxJobs: 512,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Merge a partial override (e.g. a runtime tuning hook) onto the defaults,
|
|
20
|
+
* dropping any non-finite/non-positive field and enforcing `minJobs <=
|
|
21
|
+
* maxJobs`. Always returns a usable config.
|
|
22
|
+
*/
|
|
23
|
+
export function resolveBatchSizing(partial) {
|
|
24
|
+
const pick = (v, fallback) => typeof v === 'number' && Number.isFinite(v) && v > 0 ? Math.floor(v) : fallback;
|
|
25
|
+
const targetMs = pick(partial?.targetMs, DEFAULT_BATCH_SIZING.targetMs);
|
|
26
|
+
const minJobs = pick(partial?.minJobs, DEFAULT_BATCH_SIZING.minJobs);
|
|
27
|
+
const maxJobs = Math.max(minJobs, pick(partial?.maxJobs, DEFAULT_BATCH_SIZING.maxJobs));
|
|
28
|
+
return { targetMs, minJobs, maxJobs };
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The next per-call job budget given the last call's job count + wall-time.
|
|
32
|
+
* Pure. Targets `cfg.targetMs`, clamped to [`cfg.minJobs`, `cfg.maxJobs`]. A
|
|
33
|
+
* zero/sub-ms measurement (a trivially light batch) grows straight to MAX.
|
|
34
|
+
* With nothing measured (`jobs <= 0`) the `current` size is returned unchanged.
|
|
35
|
+
*/
|
|
36
|
+
export function nextAdaptiveBatchJobs(current, jobs, elapsedMs, cfg = DEFAULT_BATCH_SIZING) {
|
|
37
|
+
if (jobs <= 0)
|
|
38
|
+
return current;
|
|
39
|
+
const msPerJob = elapsedMs / jobs;
|
|
40
|
+
if (!(msPerJob > 0))
|
|
41
|
+
return cfg.maxJobs;
|
|
42
|
+
const projected = Math.floor(cfg.targetMs / msPerJob);
|
|
43
|
+
return Math.max(cfg.minJobs, Math.min(cfg.maxJobs, projected));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=batch-sizing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-sizing.js","sourceRoot":"","sources":["../src/batch-sizing.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAsD/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,GAAG;CACb,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2C;IAC5E,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,QAAgB,EAAU,EAAE,CACpD,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IACxF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,IAAY,EACZ,SAAiB,EACjB,MAAyB,oBAAoB;IAE7C,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9B,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IAClC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-handler.d.ts","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,IAAI;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC;IACpB,2HAA2H;IAC3H,mBAAmB,EAAE,OAAO,CAAC;IAC7B,4FAA4F;IAC5F,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,kIAAkI;IAClI,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAO;IAG5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD,OAAO,CAAC,eAAe,CAAe;IAWtC,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,eAAe,CAAiC;IAExD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"coordinate-handler.d.ts","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,IAAI;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC;IACpB,2HAA2H;IAC3H,mBAAmB,EAAE,OAAO,CAAC;IAC7B,4FAA4F;IAC5F,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,kIAAkI;IAClI,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAO;IAG5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD,OAAO,CAAC,eAAe,CAAe;IAWtC,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,eAAe,CAAiC;IAExD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAuD5D;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAUjC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQrC;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAwB9E;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI;IAe5C;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc;IA4EjD;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAQxC;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAQxC;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;;;;;OAMG;IACH,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAqFjD;;;;;;;OAOG;IACH,+BAA+B,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IA2BxD;;OAEG;IACH,wBAAwB,IAAI,cAAc,GAAG,IAAI;IAgCjD;;OAEG;IACH,sBAAsB,IAAI,cAAc;IAuBxC;;;;;;OAMG;IACH,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAKlF;;OAEG;IACH,KAAK,IAAI,IAAI;CAShB"}
|
|
@@ -57,10 +57,14 @@ export class CoordinateHandler {
|
|
|
57
57
|
let corruptedVertexCount = 0;
|
|
58
58
|
for (const mesh of meshes) {
|
|
59
59
|
const positions = mesh.positions;
|
|
60
|
+
// world = origin + position (per-element local frame); without folding
|
|
61
|
+
// the origin, bounds collapse to each element's local frame near 0.
|
|
62
|
+
const o = mesh.origin;
|
|
63
|
+
const ox = o ? o[0] : 0, oy = o ? o[1] : 0, oz = o ? o[2] : 0;
|
|
60
64
|
for (let i = 0; i < positions.length; i += 3) {
|
|
61
|
-
const x = positions[i];
|
|
62
|
-
const y = positions[i + 1];
|
|
63
|
-
const z = positions[i + 2];
|
|
65
|
+
const x = positions[i] + ox;
|
|
66
|
+
const y = positions[i + 1] + oy;
|
|
67
|
+
const z = positions[i + 2] + oz;
|
|
64
68
|
// Only include values within threshold (filter out outliers/garbage)
|
|
65
69
|
const coordsFinite = Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z);
|
|
66
70
|
const withinThreshold = coordsFinite &&
|
|
@@ -99,10 +103,14 @@ export class CoordinateHandler {
|
|
|
99
103
|
const len = positions.length;
|
|
100
104
|
if (len < 3)
|
|
101
105
|
continue;
|
|
106
|
+
// world = origin + position (per-element local frame); without the
|
|
107
|
+
// origin every element's sampled verts sit near 0 → bounds collapse.
|
|
108
|
+
const o = mesh.origin;
|
|
109
|
+
const ox = o ? o[0] : 0, oy = o ? o[1] : 0, oz = o ? o[2] : 0;
|
|
102
110
|
// Sample first vertex
|
|
103
|
-
const x0 = positions[0];
|
|
104
|
-
const y0 = positions[1];
|
|
105
|
-
const z0 = positions[2];
|
|
111
|
+
const x0 = positions[0] + ox;
|
|
112
|
+
const y0 = positions[1] + oy;
|
|
113
|
+
const z0 = positions[2] + oz;
|
|
106
114
|
if (x0 < minX)
|
|
107
115
|
minX = x0;
|
|
108
116
|
if (y0 < minY)
|
|
@@ -117,9 +125,9 @@ export class CoordinateHandler {
|
|
|
117
125
|
maxZ = z0;
|
|
118
126
|
// Sample last vertex (if different from first)
|
|
119
127
|
if (len >= 6) {
|
|
120
|
-
const x1 = positions[len - 3];
|
|
121
|
-
const y1 = positions[len - 2];
|
|
122
|
-
const z1 = positions[len - 1];
|
|
128
|
+
const x1 = positions[len - 3] + ox;
|
|
129
|
+
const y1 = positions[len - 2] + oy;
|
|
130
|
+
const z1 = positions[len - 1] + oz;
|
|
123
131
|
if (x1 < minX)
|
|
124
132
|
minX = x1;
|
|
125
133
|
if (y1 < minY)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-handler.js","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coordinate-handler.js","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-coordinate.d.ts","sourceRoot":"","sources":["../src/geometry-coordinate.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,GAAG,kBAAkB,GACvC,MAAM,CAeR;AAID;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,OAAO,gBAAgB,EAAE,cAAc,GAClD,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"geometry-coordinate.d.ts","sourceRoot":"","sources":["../src/geometry-coordinate.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,GAAG,kBAAkB,GACvC,MAAM,CAeR;AAID;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,OAAO,gBAAgB,EAAE,cAAc,GAClD,QAAQ,EAAE,CA6EZ;AAmCD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,cAAc,CAIhB"}
|
|
@@ -49,6 +49,12 @@ export function convertMeshCollectionToBatch(collection) {
|
|
|
49
49
|
// directly would copy a fresh Float32Array out of WASM per access.
|
|
50
50
|
const color = mesh.color;
|
|
51
51
|
const geometryHash = geometryHashes.get(mesh.expressId);
|
|
52
|
+
// Per-element local-frame origin (world = origin + position); [0,0,0] or
|
|
53
|
+
// absent getter (older bundle) → absolute positions.
|
|
54
|
+
const originArr = mesh.origin;
|
|
55
|
+
const origin = originArr && originArr.length === 3 && (originArr[0] || originArr[1] || originArr[2])
|
|
56
|
+
? [originArr[0], originArr[1], originArr[2]]
|
|
57
|
+
: undefined;
|
|
52
58
|
const meshData = {
|
|
53
59
|
expressId: mesh.expressId,
|
|
54
60
|
ifcType: mesh.ifcType,
|
|
@@ -57,6 +63,7 @@ export function convertMeshCollectionToBatch(collection) {
|
|
|
57
63
|
indices: mesh.indices,
|
|
58
64
|
color: [color[0], color[1], color[2], color[3]],
|
|
59
65
|
...(shadingColor ? { shadingColor } : {}),
|
|
66
|
+
...(origin ? { origin } : {}),
|
|
60
67
|
// #957 follow-up: carry the Model/Types geometry class so the viewer's
|
|
61
68
|
// view-mode filter can show/hide type-library geometry.
|
|
62
69
|
geometryClass: mesh.geometryClass ?? 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-coordinate.js","sourceRoot":"","sources":["../src/geometry-coordinate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geometry-coordinate.js","sourceRoot":"","sources":["../src/geometry-coordinate.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
import type { CoordinateHandler } from './coordinate-handler.js';
|
|
23
23
|
import type { TessellationQuality } from './types.js';
|
|
24
24
|
import type { StreamingGeometryEvent } from './index.js';
|
|
25
|
+
import type { BatchSizingConfig } from './batch-sizing.js';
|
|
25
26
|
export interface ProcessParallelOptions {
|
|
26
27
|
/**
|
|
27
28
|
* Fires when the streaming pre-pass finishes building the entity index
|
|
@@ -70,6 +71,25 @@ export interface ProcessParallelOptions {
|
|
|
70
71
|
wasmUrls?: {
|
|
71
72
|
wasm?: string;
|
|
72
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* Issue #1097 — optional override for the worker's adaptive batch sizing
|
|
76
|
+
* (the watchdog↔throughput knob). Takes precedence over the `globalThis`
|
|
77
|
+
* tuning hook; omitted ⇒ `DEFAULT_BATCH_SIZING`. Forwarded to every worker
|
|
78
|
+
* in its `stream-start` message and validated there.
|
|
79
|
+
*/
|
|
80
|
+
batchSizing?: Partial<BatchSizingConfig>;
|
|
81
|
+
/**
|
|
82
|
+
* #1097 load-time visibility filter. `disabledTypes` (uppercase STEP keywords)
|
|
83
|
+
* and `skipTypeGeometry` are forwarded to the prepass so the matching geometry
|
|
84
|
+
* jobs are never produced — cutting decode + CSG + tessellation + upload for
|
|
85
|
+
* hidden types (spaces/annotations/grids/type-library). Takes precedence over
|
|
86
|
+
* the `globalThis.__IFC_LITE_VISIBILITY_FILTER` hook. Toggling a type back on
|
|
87
|
+
* requires a reload.
|
|
88
|
+
*/
|
|
89
|
+
visibilityFilter?: {
|
|
90
|
+
disabledTypes?: string[];
|
|
91
|
+
skipTypeGeometry?: boolean;
|
|
92
|
+
};
|
|
73
93
|
}
|
|
74
94
|
export declare function processParallel(buffer: Uint8Array, coordinator: CoordinateHandler, sharedRtcOffset?: {
|
|
75
95
|
x: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-parallel.d.ts","sourceRoot":"","sources":["../src/geometry-parallel.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAY,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"geometry-parallel.d.ts","sourceRoot":"","sources":["../src/geometry-parallel.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAY,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAsC3D,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CACd,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,KACjB,IAAI,CAAC;IACV;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7E;AAED,wBAAuB,eAAe,CACpC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,iBAAiB,EAC9B,eAAe,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;AACrD,gFAAgF;AAChF,WAAW,CAAC,EAAE,iBAAiB,EAC/B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,cAAc,CAAC,sBAAsB,CAAC,CAkrBxC"}
|
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { pickWorkerCount } from './worker-count.js';
|
|
5
|
+
/**
|
|
6
|
+
* Optional runtime override for the geometry worker's adaptive batch sizing
|
|
7
|
+
* (#1097), read off `globalThis` on the host thread. A zero-cost escape hatch
|
|
8
|
+
* for hardware-specific tuning / field-debugging the watchdog↔throughput
|
|
9
|
+
* trade-off without a rebuild; unset ⇒ the worker uses DEFAULT_BATCH_SIZING.
|
|
10
|
+
* Validation/merge happens in the worker via `resolveBatchSizing`.
|
|
11
|
+
*/
|
|
12
|
+
function readBatchSizingOverride() {
|
|
13
|
+
const g = globalThis;
|
|
14
|
+
const v = g.__IFC_LITE_BATCH_SIZING;
|
|
15
|
+
return v && typeof v === 'object' ? v : undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Optional load-time visibility filter (#1097), read off `globalThis` on the
|
|
19
|
+
* host thread (tuning / benchmarking escape hatch). `{ disabledTypes,
|
|
20
|
+
* skipTypeGeometry }` skip the matching geometry jobs at the prepass so they're
|
|
21
|
+
* never decoded/meshed/uploaded. Unset ⇒ load everything.
|
|
22
|
+
*/
|
|
23
|
+
function readVisibilityFilterOverride() {
|
|
24
|
+
const g = globalThis;
|
|
25
|
+
const v = g.__IFC_LITE_VISIBILITY_FILTER;
|
|
26
|
+
return v && typeof v === 'object' ? v : undefined;
|
|
27
|
+
}
|
|
5
28
|
export async function* processParallel(buffer, coordinator, sharedRtcOffset,
|
|
6
29
|
/** Optional pre-allocated SAB the caller already shares with another worker. */
|
|
7
30
|
existingSab, options) {
|
|
@@ -86,6 +109,15 @@ existingSab, options) {
|
|
|
86
109
|
wake();
|
|
87
110
|
return;
|
|
88
111
|
}
|
|
112
|
+
if (msg.type === 'progress') {
|
|
113
|
+
// Worker liveness heartbeat, posted before each bounded WASM call.
|
|
114
|
+
// Forward it so the consumer's stall watchdog measures "one WASM
|
|
115
|
+
// call went silent", not "no meshes lately" — a CSG-heavy stretch
|
|
116
|
+
// can keep every worker busy past the watchdog with nothing to show.
|
|
117
|
+
eventQueue.push({ type: 'progress', phase: 'workers' });
|
|
118
|
+
wake();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
89
121
|
if (msg.type === 'batch') {
|
|
90
122
|
if (firstBatchByWorker[workerIndex] === undefined) {
|
|
91
123
|
firstBatchByWorker[workerIndex] = elapsed();
|
|
@@ -98,6 +130,8 @@ existingSab, options) {
|
|
|
98
130
|
normals: m.normals instanceof Float32Array ? m.normals : new Float32Array(m.normals),
|
|
99
131
|
indices: m.indices instanceof Uint32Array ? m.indices : new Uint32Array(m.indices),
|
|
100
132
|
color: m.color,
|
|
133
|
+
// SurfaceColour for GLB "Shading" export (worker parity fix).
|
|
134
|
+
...(m.shadingColor ? { shadingColor: m.shadingColor } : {}),
|
|
101
135
|
// #961: carry per-vertex UVs + decoded surface texture through to the
|
|
102
136
|
// renderer (transferables; already typed arrays from the worker).
|
|
103
137
|
...(m.uvs ? { uvs: m.uvs } : {}),
|
|
@@ -109,6 +143,9 @@ existingSab, options) {
|
|
|
109
143
|
// worker→main re-map (else the viewer's view-mode filter sees only
|
|
110
144
|
// class 0 and the Types view renders nothing).
|
|
111
145
|
...(m.geometryClass !== undefined ? { geometryClass: m.geometryClass } : {}),
|
|
146
|
+
// Per-element local-frame origin (world = origin + position); the
|
|
147
|
+
// renderer reconstructs world via a per-batch model-matrix translate.
|
|
148
|
+
...(m.origin ? { origin: m.origin } : {}),
|
|
112
149
|
}));
|
|
113
150
|
if (meshes.length > 0) {
|
|
114
151
|
// Update totalMeshes per batch so consumers see a live
|
|
@@ -239,11 +276,13 @@ existingSab, options) {
|
|
|
239
276
|
wake();
|
|
240
277
|
const emptyU32 = new Uint32Array(0);
|
|
241
278
|
const emptyU8 = new Uint8Array(0);
|
|
279
|
+
const batchSizing = options?.batchSizing ?? readBatchSizingOverride();
|
|
242
280
|
for (const worker of workers) {
|
|
243
281
|
worker.postMessage({
|
|
244
282
|
type: 'stream-start',
|
|
245
283
|
sharedBuffer,
|
|
246
284
|
unitScale: prepassMeta.unitScale,
|
|
285
|
+
planeAngleToRadians: prepassMeta.planeAngleToRadians,
|
|
247
286
|
rtcX, rtcY, rtcZ,
|
|
248
287
|
needsShift: effectiveNeedsShift,
|
|
249
288
|
voidKeys: emptyU32,
|
|
@@ -251,6 +290,7 @@ existingSab, options) {
|
|
|
251
290
|
voidValues: emptyU32,
|
|
252
291
|
styleIds: emptyU32,
|
|
253
292
|
styleColors: emptyU8,
|
|
293
|
+
...(batchSizing ? { batchSizing } : {}),
|
|
254
294
|
});
|
|
255
295
|
}
|
|
256
296
|
// Don't drain queued chunks here — wait for the `styles` event so
|
|
@@ -262,22 +302,32 @@ existingSab, options) {
|
|
|
262
302
|
return;
|
|
263
303
|
// Round-robin sending whole chunks to single workers leaves N-1
|
|
264
304
|
// workers idle whenever the chunk count is small. Instead split each
|
|
265
|
-
// Rust chunk
|
|
266
|
-
//
|
|
267
|
-
//
|
|
305
|
+
// Rust chunk across all workers so every worker processes a slice of
|
|
306
|
+
// every chunk in parallel — full pool utilisation from the very first
|
|
307
|
+
// chunk.
|
|
308
|
+
//
|
|
309
|
+
// The split is INTERLEAVED (worker i takes jobs i, i+N, i+2N, …), not
|
|
310
|
+
// contiguous quarters: geometric complexity clusters by file region
|
|
311
|
+
// (e.g. all the CSG-heavy slabs of a steel model at the end of DATA),
|
|
312
|
+
// and a contiguous split hands one worker the entire heavy cluster
|
|
313
|
+
// while the rest go idle — the load's tail runs single-threaded.
|
|
314
|
+
// Striding spreads any hot region evenly across the pool.
|
|
268
315
|
const totalSubJobs = Math.floor(jobs.length / 3);
|
|
269
316
|
if (totalSubJobs === 0)
|
|
270
317
|
return;
|
|
271
|
-
const subPerWorker = Math.ceil(totalSubJobs / workers.length);
|
|
272
318
|
try {
|
|
273
319
|
for (let i = 0; i < workers.length; i++) {
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
if (start >= end)
|
|
320
|
+
const subJobs = Math.floor((totalSubJobs - i + workers.length - 1) / workers.length);
|
|
321
|
+
if (subJobs === 0)
|
|
277
322
|
continue;
|
|
278
|
-
//
|
|
279
|
-
//
|
|
280
|
-
const sub =
|
|
323
|
+
// New ArrayBuffer per piece so each can be in its own transfer
|
|
324
|
+
// list. Cheap relative to the WASM work that follows.
|
|
325
|
+
const sub = new Uint32Array(subJobs * 3);
|
|
326
|
+
for (let j = 0, src = i * 3; j < subJobs * 3; j += 3, src += workers.length * 3) {
|
|
327
|
+
sub[j] = jobs[src];
|
|
328
|
+
sub[j + 1] = jobs[src + 1];
|
|
329
|
+
sub[j + 2] = jobs[src + 2];
|
|
330
|
+
}
|
|
281
331
|
workers[i].postMessage({ type: 'stream-chunk', jobsFlat: sub }, [sub.buffer]);
|
|
282
332
|
}
|
|
283
333
|
}
|
|
@@ -343,6 +393,7 @@ existingSab, options) {
|
|
|
343
393
|
if (evt.type === 'meta') {
|
|
344
394
|
prepassMeta = {
|
|
345
395
|
unitScale: evt.unitScale,
|
|
396
|
+
planeAngleToRadians: evt.planeAngleToRadians ?? undefined,
|
|
346
397
|
rtcOffset: evt.rtcOffset,
|
|
347
398
|
needsShift: evt.needsShift,
|
|
348
399
|
buildingRotation: evt.buildingRotation ?? null,
|
|
@@ -375,6 +426,9 @@ existingSab, options) {
|
|
|
375
426
|
const voidKeys = evt.voidKeys;
|
|
376
427
|
const voidCounts = evt.voidCounts;
|
|
377
428
|
const voidValues = evt.voidValues;
|
|
429
|
+
const materialElementIds = evt.materialElementIds ?? new Uint32Array(0);
|
|
430
|
+
const materialColorCounts = evt.materialColorCounts ?? new Uint32Array(0);
|
|
431
|
+
const materialColors = evt.materialColors ?? new Uint8Array(0);
|
|
378
432
|
console.log(`[stream] styles @ ${elapsed()}ms (${styleIds.length} styled, ${voidKeys.length} void hosts), draining ${queuedChunks.length} queued chunks`);
|
|
379
433
|
for (const w of workers) {
|
|
380
434
|
// Slice each typed array per-worker so each can be in its own
|
|
@@ -386,6 +440,9 @@ existingSab, options) {
|
|
|
386
440
|
const vKeys = voidKeys.slice();
|
|
387
441
|
const vCounts = voidCounts.slice();
|
|
388
442
|
const vValues = voidValues.slice();
|
|
443
|
+
const mIds = materialElementIds.slice();
|
|
444
|
+
const mCounts = materialColorCounts.slice();
|
|
445
|
+
const mColors = materialColors.slice();
|
|
389
446
|
w.postMessage({
|
|
390
447
|
type: 'set-styles',
|
|
391
448
|
styleIds: sIds,
|
|
@@ -393,7 +450,13 @@ existingSab, options) {
|
|
|
393
450
|
voidKeys: vKeys,
|
|
394
451
|
voidCounts: vCounts,
|
|
395
452
|
voidValues: vValues,
|
|
396
|
-
|
|
453
|
+
materialElementIds: mIds,
|
|
454
|
+
materialColorCounts: mCounts,
|
|
455
|
+
materialColors: mColors,
|
|
456
|
+
}, [
|
|
457
|
+
sIds.buffer, sColors.buffer, vKeys.buffer, vCounts.buffer, vValues.buffer,
|
|
458
|
+
mIds.buffer, mCounts.buffer, mColors.buffer,
|
|
459
|
+
]);
|
|
397
460
|
}
|
|
398
461
|
catch (err) {
|
|
399
462
|
console.warn('[stream] set-styles dispatch failed:', err);
|
|
@@ -539,7 +602,17 @@ existingSab, options) {
|
|
|
539
602
|
// has fixed setup cost that compounds badly when invoked 30+ times.
|
|
540
603
|
// Per-chunk fan-out (see `dispatchJobsChunkInternal`) splits each chunk
|
|
541
604
|
// evenly across all workers so parallelism is preserved at every chunk.
|
|
542
|
-
|
|
605
|
+
const visibilityFilter = options?.visibilityFilter ?? readVisibilityFilterOverride();
|
|
606
|
+
if (visibilityFilter?.disabledTypes?.length || visibilityFilter?.skipTypeGeometry) {
|
|
607
|
+
console.log(`[stream] load-time visibility filter: disabledTypes=[${visibilityFilter.disabledTypes?.join(',') ?? ''}] skipTypeGeometry=${visibilityFilter.skipTypeGeometry === true}`);
|
|
608
|
+
}
|
|
609
|
+
prepassWorker.postMessage({
|
|
610
|
+
type: 'prepass-streaming',
|
|
611
|
+
sharedBuffer,
|
|
612
|
+
chunkSize: 50_000,
|
|
613
|
+
...(visibilityFilter?.disabledTypes ? { disabledTypes: visibilityFilter.disabledTypes } : {}),
|
|
614
|
+
...(visibilityFilter?.skipTypeGeometry ? { skipTypeGeometry: true } : {}),
|
|
615
|
+
});
|
|
543
616
|
// Drain the event queue until the pre-pass and all process workers complete.
|
|
544
617
|
// The pre-pass `complete` event is captured inside the message handler
|
|
545
618
|
// (we set prepassJobsTotal there) but the worker stays alive briefly
|