@ifc-lite/geometry 2.8.0 → 2.9.1

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.
@@ -0,0 +1,128 @@
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
+ * Binary format parsing for INSTANCED geometry shards ("IFNS").
6
+ *
7
+ * Mirrors the Rust encoder in `rust/geometry/src/instancing.rs`
8
+ * (`encode_instanced` / `decode_instanced`). Carries each UNIQUE template
9
+ * geometry once + a per-occurrence instance row (transform + entity id + colour),
10
+ * so the renderer can upload a template once and `drawIndexed(.., instanceCount)`.
11
+ *
12
+ * Layout (little-endian):
13
+ * Header (8 × uint32): magic, version, templateCount, instanceCount,
14
+ * positionsLen, normalsLen, indicesLen, reserved
15
+ * Template table (templateCount × 48 bytes): posOff, posLen, nrmOff, nrmLen,
16
+ * idxOff, idxLen (6 × uint32) then originX, originY,
17
+ * originZ (3 × float64)
18
+ * Instance table (instanceCount × 88 bytes): templateIndex (uint32),
19
+ * entityId (uint32), colour (4 × float32),
20
+ * transform (16 × float32, row-major)
21
+ * Data: positions (Float32 × positionsLen), normals (Float32 × normalsLen),
22
+ * indices (Uint32 × indicesLen). Offsets/lengths are ELEMENT counts;
23
+ * indices stay local to each template's vertex range (0-based).
24
+ */
25
+ import { toArrayBuffer } from './packed-geometry-decoder.js';
26
+ /** `"IFNS"` little-endian — must match `INSTANCED_MAGIC` in instancing.rs. */
27
+ export const INSTANCED_SHARD_MAGIC = 0x4946_4e53;
28
+ /** Must match `INSTANCED_VERSION` in instancing.rs. */
29
+ export const INSTANCED_SHARD_VERSION = 1;
30
+ const HEADER_WORDS = 8;
31
+ const TEMPLATE_RECORD_BYTES = 48;
32
+ const INSTANCE_RECORD_BYTES = 88;
33
+ /** Whether a payload's leading magic marks it as an instanced ("IFNS") shard. */
34
+ export function isInstancedShard(payload) {
35
+ try {
36
+ const buffer = toArrayBuffer(payload);
37
+ if (buffer.byteLength < 4)
38
+ return false;
39
+ return new Uint32Array(buffer, 0, 1)[0] === INSTANCED_SHARD_MAGIC;
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ }
45
+ /**
46
+ * Decode an instanced ("IFNS") geometry shard. Throws on bad magic/version or a
47
+ * truncated buffer.
48
+ */
49
+ export function decodeInstancedShard(payload) {
50
+ const buffer = toArrayBuffer(payload);
51
+ if (buffer.byteLength < HEADER_WORDS * 4) {
52
+ throw new Error('Instanced shard too small for header');
53
+ }
54
+ const header = new Uint32Array(buffer, 0, HEADER_WORDS);
55
+ const [magic, version, templateCount, instanceCount, positionsLen, normalsLen, indicesLen] = header;
56
+ if (magic !== INSTANCED_SHARD_MAGIC) {
57
+ throw new Error('Invalid instanced shard magic');
58
+ }
59
+ if (version !== INSTANCED_SHARD_VERSION) {
60
+ throw new Error(`Unsupported instanced shard version: ${version}`);
61
+ }
62
+ const templateTableOffset = HEADER_WORDS * 4;
63
+ const instanceTableOffset = templateTableOffset + templateCount * TEMPLATE_RECORD_BYTES;
64
+ const dataOffset = instanceTableOffset + instanceCount * INSTANCE_RECORD_BYTES;
65
+ const positionsByteOffset = dataOffset;
66
+ const normalsByteOffset = positionsByteOffset + positionsLen * 4;
67
+ const indicesByteOffset = normalsByteOffset + normalsLen * 4;
68
+ const expectedBytes = indicesByteOffset + indicesLen * 4;
69
+ if (buffer.byteLength < expectedBytes) {
70
+ throw new Error(`Instanced shard truncated: have ${buffer.byteLength}, need ${expectedBytes}`);
71
+ }
72
+ // Pooled data arrays (views into the shard buffer; sub-viewed per template).
73
+ const positions = new Float32Array(buffer, positionsByteOffset, positionsLen);
74
+ const normals = new Float32Array(buffer, normalsByteOffset, normalsLen);
75
+ const indices = new Uint32Array(buffer, indicesByteOffset, indicesLen);
76
+ const view = new DataView(buffer);
77
+ const templates = [];
78
+ for (let t = 0; t < templateCount; t += 1) {
79
+ const base = templateTableOffset + t * TEMPLATE_RECORD_BYTES;
80
+ const posOff = view.getUint32(base, true);
81
+ const posLen = view.getUint32(base + 4, true);
82
+ const nrmOff = view.getUint32(base + 8, true);
83
+ const nrmLen = view.getUint32(base + 12, true);
84
+ const idxOff = view.getUint32(base + 16, true);
85
+ const idxLen = view.getUint32(base + 20, true);
86
+ const origin = [
87
+ view.getFloat64(base + 24, true),
88
+ view.getFloat64(base + 32, true),
89
+ view.getFloat64(base + 40, true),
90
+ ];
91
+ // Validate each template's pool ranges before subarray — a malformed/wrapped
92
+ // offset would otherwise silently clip (subarray saturates), yielding
93
+ // truncated geometry indistinguishable from a real occurrence.
94
+ if (posOff + posLen > positionsLen ||
95
+ nrmOff + nrmLen > normalsLen ||
96
+ idxOff + idxLen > indicesLen) {
97
+ throw new Error(`Instanced shard template ${t} pool offset out of bounds`);
98
+ }
99
+ templates.push({
100
+ positions: positions.subarray(posOff, posOff + posLen),
101
+ normals: normals.subarray(nrmOff, nrmOff + nrmLen),
102
+ indices: indices.subarray(idxOff, idxOff + idxLen),
103
+ origin,
104
+ });
105
+ }
106
+ const instances = [];
107
+ for (let i = 0; i < instanceCount; i += 1) {
108
+ const base = instanceTableOffset + i * INSTANCE_RECORD_BYTES;
109
+ const templateIndex = view.getUint32(base, true);
110
+ if (templateIndex >= templates.length) {
111
+ throw new Error(`Instanced shard instance ${i} references missing template ${templateIndex} (have ${templates.length})`);
112
+ }
113
+ const entityId = view.getUint32(base + 4, true);
114
+ const color = [
115
+ view.getFloat32(base + 8, true),
116
+ view.getFloat32(base + 12, true),
117
+ view.getFloat32(base + 16, true),
118
+ view.getFloat32(base + 20, true),
119
+ ];
120
+ const transform = new Float32Array(16);
121
+ for (let k = 0; k < 16; k += 1) {
122
+ transform[k] = view.getFloat32(base + 24 + k * 4, true);
123
+ }
124
+ instances.push({ templateIndex, entityId, color, transform });
125
+ }
126
+ return { templates, instances };
127
+ }
128
+ //# sourceMappingURL=packed-instanced-decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packed-instanced-decoder.js","sourceRoot":"","sources":["../src/packed-instanced-decoder.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -163,6 +163,15 @@ export interface GeometryResult {
163
163
  totalTriangles: number;
164
164
  totalVertices: number;
165
165
  coordinateInfo: CoordinateInfo;
166
+ /**
167
+ * Geometry-diff hashes (#924) for instanced-ONLY entities — repeated opaque
168
+ * geometry whose whole mesh set went to the GPU-instanced shard, so it never
169
+ * appears in `meshes`. Keyed by express id → hash. Lets the compare feature
170
+ * detect geometry changes on instanced elements (it would otherwise silently
171
+ * miss them, a regression vs. the pre-instancing flat path). Absent when
172
+ * geometry hashing is off or no entity was fully instanced.
173
+ */
174
+ instancedGeometryHashes?: Map<number, bigint>;
166
175
  }
167
176
  /**
168
177
  * Representation identifier types for symbolic representations
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB;;qEAEiE;IACjE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;uDAGmD;IACnD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD;;;qEAGiE;IACjE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;iDAC6C;IAC7C,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB;;6DAEyD;IACzD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;;0EAIsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;8BAK0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;4CAKwC;IACxC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACX;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,sEAAsE;IACtE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,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;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,KAAK,EAAE;QACL,SAAS,EAAE,YAAY,CAAC;QACxB,iEAAiE;QACjE,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,yDAAyD;QACzD,eAAe,CAAC,EAAE,UAAU,CAAC;QAC7B,2CAA2C;QAC3C,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;KACxE,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;CAChC;AAOD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACzD,0BAA0B;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACrD,6DAA6D;IAC7D,aAAa,IAAI,WAAW,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3C,oDAAoD;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IACvC,4DAA4D;IAC5D,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker-count.d.ts","sourceRoot":"","sources":["../src/worker-count.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CA+G/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEjE"}
1
+ {"version":3,"file":"worker-count.d.ts","sourceRoot":"","sources":["../src/worker-count.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAqI/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEjE"}
@@ -30,7 +30,30 @@ export function computeWorkerCount(inputs) {
30
30
  // Cores-based ceiling (preserves the previous tier behaviour, but expressed
31
31
  // as upper bounds rather than exact picks).
32
32
  let coresCap;
33
- if (cores >= 16 && deviceMemoryGB >= 16) {
33
+ // Small files load in a few seconds (not a sustained grind) and cost trivial
34
+ // memory, so neither the thermal nor the bandwidth/RAM concerns the per-core
35
+ // caps below guard against bind. A small but geometry-heavy model is
36
+ // COMPUTE-bound (boolean-clipped steel — 170_KM is 20 MB / ~5000 booleans —
37
+ // or dense breps), which scales with cores; the 3–4-worker cap left most of
38
+ // an active-cooled (10+ core) machine idle. The measured bandwidth ceiling
39
+ // was a >512 MB georef result (#1159) — the opposite regime. Give small files
40
+ // near-full parallelism; the memoryCap below still gates if RAM is tight, and
41
+ // `?geomWorkers=N` still overrides per-host.
42
+ //
43
+ // Lower bound (MIN_PARALLEL_MB): the caller spawns workers from a file-size
44
+ // PROXY (`fileSizeMB × 100`) before the pre-pass reports real job counts, so
45
+ // the totalJobs ceiling below can't yet protect a *light* small model. Gating
46
+ // the bump to ≥8 MB keeps tiny/simple models (which load in a couple seconds
47
+ // on a few workers) off the fast path — so we don't pay extra WASM-init/heap
48
+ // for idle workers on a model with little parallel work — while the 8–64 MB
49
+ // band, where there's enough geometry to amortize the workers, still scales.
50
+ // (#1258 review P2.)
51
+ const SMALL_FILE_MB = 64;
52
+ const MIN_PARALLEL_MB = 8;
53
+ if (fileSizeMB >= MIN_PARALLEL_MB && fileSizeMB <= SMALL_FILE_MB && cores >= 10) {
54
+ coresCap = Math.min(maxWorkers, cores - 2);
55
+ }
56
+ else if (cores >= 16 && deviceMemoryGB >= 16) {
34
57
  coresCap = Math.min(maxWorkers, Math.floor(cores / 2));
35
58
  }
36
59
  else if (cores >= 12 && deviceMemoryGB >= 8) {
@@ -1 +1 @@
1
- {"version":3,"file":"worker-count.js","sourceRoot":"","sources":["../src/worker-count.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-count.js","sourceRoot":"","sources":["../src/worker-count.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/geometry",
3
- "version": "2.8.0",
3
+ "version": "2.9.1",
4
4
  "description": "Geometry processing bridge for IFC-Lite - 1.9x faster than web-ifc",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@ifc-lite/data": "^2.2.0",
17
- "@ifc-lite/wasm": "^2.10.0"
17
+ "@ifc-lite/wasm": "^2.11.0"
18
18
  },
19
19
  "optionalDependencies": {
20
20
  "@tauri-apps/api": "^2.11.0"