@ifc-lite/cache 2.0.7 → 2.0.9

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/glb.d.ts CHANGED
@@ -39,9 +39,13 @@ interface GLTFNode {
39
39
  expressId?: number;
40
40
  };
41
41
  children?: number[];
42
- /** Node-local translation (xyz). Our exporter places all geometry under a
43
- * single translated root node, so this must be composed down the hierarchy. */
42
+ /** Node-local translation (xyz). The from-meshes exporter places all geometry
43
+ * under a single translated root node, so this is composed down the hierarchy. */
44
44
  translation?: number[];
45
+ /** Node-local column-major 4x4 (glTF convention). The from-bytes instanced
46
+ * exporter places each shared-template occurrence with a node MATRIX (rotation +
47
+ * translation); mutually exclusive with `translation` per the glTF spec. */
48
+ matrix?: number[];
45
49
  }
46
50
  interface GLTFMesh {
47
51
  primitives: GLTFPrimitive[];
package/dist/glb.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
package/dist/glb.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
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
+ import { safeUtf8Decode } from '@ifc-lite/data';
4
5
  // glTF 2.0 constants
5
6
  const GLB_MAGIC = 0x46546c67; // 'glTF'
6
7
  const GLB_VERSION = 2;
@@ -53,8 +54,13 @@ export function parseGLB(data) {
53
54
  throw new Error('Chunk extends beyond file');
54
55
  }
55
56
  if (chunkType === CHUNK_TYPE_JSON) {
56
- const jsonBytes = data.subarray(offset, offset + chunkLength);
57
- const jsonString = new TextDecoder().decode(jsonBytes);
57
+ // Decode SAB-safe: the viewer streams large imports (>= 256 MB) into a
58
+ // SharedArrayBuffer (acquireFileBuffer), and `TextDecoder.decode` rejects any
59
+ // SharedArrayBuffer-backed view (a Spectre mitigation) with "...can't be a
60
+ // SharedArrayBuffer...". safeUtf8Decode copies the JSON chunk into a private
61
+ // (non-shared) scratch buffer on the SAB path, so re-importing a large GLB no
62
+ // longer throws. Only the small JSON chunk is copied; BIN stays zero-copy.
63
+ const jsonString = safeUtf8Decode(data, offset, offset + chunkLength);
58
64
  json = JSON.parse(jsonString);
59
65
  }
60
66
  else if (chunkType === CHUNK_TYPE_BIN) {
@@ -205,6 +211,35 @@ function readAccessorData(gltf, bin, accessorIdx) {
205
211
  }
206
212
  return result;
207
213
  }
214
+ const MAT4_IDENTITY = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
215
+ /** Column-major 4x4 multiply `a * b`. */
216
+ function mat4Mul(a, b) {
217
+ const out = new Array(16);
218
+ for (let col = 0; col < 4; col++) {
219
+ for (let row = 0; row < 4; row++) {
220
+ let s = 0;
221
+ for (let k = 0; k < 4; k++)
222
+ s += a[k * 4 + row] * b[col * 4 + k];
223
+ out[col * 4 + row] = s;
224
+ }
225
+ }
226
+ return out;
227
+ }
228
+ /** A node's local transform: its `matrix` (column-major) or a translation matrix. */
229
+ function nodeLocalMat4(nd) {
230
+ if (Array.isArray(nd.matrix) && nd.matrix.length === 16)
231
+ return nd.matrix;
232
+ const t = nd.translation;
233
+ return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, t?.[0] ?? 0, t?.[1] ?? 0, t?.[2] ?? 0, 1];
234
+ }
235
+ /** True when a 4x4's upper-left 3x3 is the identity (within epsilon) — i.e. the
236
+ * node carries pure translation, so vertices need no rotation/scale baking. */
237
+ function linearIsIdentity(m) {
238
+ const e = 1e-6;
239
+ return (Math.abs(m[0] - 1) < e && Math.abs(m[1]) < e && Math.abs(m[2]) < e &&
240
+ Math.abs(m[4]) < e && Math.abs(m[5] - 1) < e && Math.abs(m[6]) < e &&
241
+ Math.abs(m[8]) < e && Math.abs(m[9]) < e && Math.abs(m[10] - 1) < e);
242
+ }
208
243
  /**
209
244
  * Parse GLB geometry into MeshData format
210
245
  *
@@ -218,36 +253,36 @@ export function parseGLBToMeshData(gltf, bin) {
218
253
  if (!gltf.nodes || !gltf.meshes) {
219
254
  return meshes;
220
255
  }
221
- // Compose node translations down the hierarchy. Our exporter parents every
222
- // element node under one translated root (placement rides that root, vertices
223
- // are centre-relative), so a parser that read accessors alone would land the
224
- // whole model at the scene centre. Walk from the scene roots accumulating
225
- // translation, then bake it into each mesh node's vertices absolute world.
226
- const nodeWorldT = new Map();
256
+ // Compose each node's world transform down the hierarchy as a column-major 4x4.
257
+ // The exporter parents every element node under one translated root (placement
258
+ // rides that root; vertices are scene-centre-relative). The from-meshes path uses
259
+ // pure node TRANSLATIONS; the from-bytes INSTANCED path places each shared-template
260
+ // occurrence with a node MATRIX (rotation + translation). We compose the full 4x4
261
+ // so both round-trip: the translation rides each mesh as `MeshData.origin` (kept
262
+ // out of the f32 buffer for georef precision) and any rotation/scale is baked into
263
+ // the small, local imported vertices below.
264
+ const nodeWorldM = new Map();
227
265
  {
228
266
  const seen = new Set();
229
267
  const roots = gltf.scenes?.[gltf.scene ?? 0]?.nodes ?? gltf.nodes.map((_, i) => i);
230
- const walk = (idx, px, py, pz) => {
268
+ const walk = (idx, parent) => {
231
269
  const nd = gltf.nodes?.[idx];
232
270
  if (!nd || seen.has(idx))
233
271
  return; // guard against malformed cycles
234
272
  seen.add(idx);
235
- const t = nd.translation;
236
- const x = px + (t?.[0] ?? 0);
237
- const y = py + (t?.[1] ?? 0);
238
- const z = pz + (t?.[2] ?? 0);
239
- nodeWorldT.set(idx, [x, y, z]);
273
+ const world = mat4Mul(parent, nodeLocalMat4(nd));
274
+ nodeWorldM.set(idx, world);
240
275
  for (const c of nd.children ?? [])
241
- walk(c, x, y, z);
276
+ walk(c, world);
242
277
  };
243
278
  for (const r of roots)
244
- walk(r, 0, 0, 0);
279
+ walk(r, MAT4_IDENTITY);
245
280
  // Extraction below iterates ALL nodes, not just scene-reachable ones. Walk any
246
281
  // node the scene roots didn't reach (disconnected components) as its own root so
247
282
  // every mesh node gets a composed transform — never silently emitted in local space.
248
283
  for (let i = 0; i < gltf.nodes.length; i++) {
249
284
  if (!seen.has(i))
250
- walk(i, 0, 0, 0);
285
+ walk(i, MAT4_IDENTITY);
251
286
  }
252
287
  }
253
288
  const DEFAULT_COLOR = [0.8, 0.8, 0.8, 1.0];
@@ -288,23 +323,10 @@ export function parseGLBToMeshData(gltf, bin) {
288
323
  if (posAccessorIdx === undefined)
289
324
  continue;
290
325
  // Read position data
291
- let positions = readAccessorData(gltf, bin, posAccessorIdx);
326
+ const positions = readAccessorData(gltf, bin, posAccessorIdx);
292
327
  if (!(positions instanceof Float32Array)) {
293
328
  throw new Error('Position data must be Float32');
294
329
  }
295
- // Fold the node's composed world translation into the vertices (a fresh
296
- // buffer — readAccessorData may alias the shared bin). Yields absolute
297
- // world positions so bounds/render need no per-node transform handling.
298
- const wt = nodeWorldT.get(nodeIdx);
299
- if (wt && (wt[0] !== 0 || wt[1] !== 0 || wt[2] !== 0)) {
300
- const placed = new Float32Array(positions.length);
301
- for (let i = 0; i < positions.length; i += 3) {
302
- placed[i] = positions[i] + wt[0];
303
- placed[i + 1] = positions[i + 1] + wt[1];
304
- placed[i + 2] = positions[i + 2] + wt[2];
305
- }
306
- positions = placed;
307
- }
308
330
  // Read normal data (optional, generate if missing)
309
331
  let normals;
310
332
  if (normAccessorIdx !== undefined) {
@@ -336,12 +358,47 @@ export function parseGLBToMeshData(gltf, bin) {
336
358
  indices[i] = i;
337
359
  }
338
360
  }
361
+ // Apply the node's composed world transform. The TRANSLATION rides each mesh
362
+ // as `MeshData.origin` (world = origin + position) and is kept OUT of the f32
363
+ // vertex buffer: the exporter emits scene-centre-relative vertices precisely so
364
+ // a georeferenced placement (~1e6 m) does not re-snap every vertex to a ~0.5 m
365
+ // grid (the #1446 round-trip corruption); the renderer folds `origin` (#1114).
366
+ // Any ROTATION/SCALE (a from-bytes instanced occurrence's node MATRIX) is baked
367
+ // into the small, local vertices + normals here — MeshData has a translation
368
+ // origin channel but no rotation channel, so honoring the matrix means rotating
369
+ // the imported geometry, which stays f32-precise because the vertices are local.
370
+ const m = nodeWorldM.get(nodeIdx) ?? MAT4_IDENTITY;
371
+ const t = [m[12], m[13], m[14]];
372
+ let outPositions = positions;
373
+ let outNormals = normals;
374
+ if (!linearIsIdentity(m)) {
375
+ outPositions = new Float32Array(positions.length);
376
+ for (let i = 0; i + 2 < positions.length; i += 3) {
377
+ const x = positions[i], y = positions[i + 1], z = positions[i + 2];
378
+ outPositions[i] = m[0] * x + m[4] * y + m[8] * z;
379
+ outPositions[i + 1] = m[1] * x + m[5] * y + m[9] * z;
380
+ outPositions[i + 2] = m[2] * x + m[6] * y + m[10] * z;
381
+ }
382
+ outNormals = new Float32Array(normals.length);
383
+ for (let i = 0; i + 2 < normals.length; i += 3) {
384
+ const x = normals[i], y = normals[i + 1], z = normals[i + 2];
385
+ const nx = m[0] * x + m[4] * y + m[8] * z;
386
+ const ny = m[1] * x + m[5] * y + m[9] * z;
387
+ const nz = m[2] * x + m[6] * y + m[10] * z;
388
+ const len = Math.hypot(nx, ny, nz) || 1;
389
+ outNormals[i] = nx / len;
390
+ outNormals[i + 1] = ny / len;
391
+ outNormals[i + 2] = nz / len;
392
+ }
393
+ }
394
+ const origin = t[0] !== 0 || t[1] !== 0 || t[2] !== 0 ? t : undefined;
339
395
  meshes.push({
340
396
  expressId,
341
- positions,
342
- normals,
397
+ positions: outPositions,
398
+ normals: outNormals,
343
399
  indices,
344
400
  color: resolveMaterialColor(primitive.material),
401
+ ...(origin ? { origin } : {}),
345
402
  });
346
403
  }
347
404
  }
package/dist/glb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"glb.js","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAW/D,qBAAqB;AACrB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,SAAS;AACvC,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,SAAS;AAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,UAAU;AAE7C,kBAAkB;AAClB,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,eAAe,GAAG,IAAI,CAAC;AAmF7B;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAgB;IACvC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAEzE,6BAA6B;IAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,eAAe;IACf,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,GAAwB,IAAI,CAAC;IACrC,IAAI,GAAG,GAAsB,IAAI,CAAC;IAElC,OAAO,MAAM,GAAG,WAAW,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,CAAC,GAAG,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,MAAM,GAAG,WAAW,GAAG,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAiB,CAAC;QAChD,CAAC;aAAM,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;YACxC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,WAAW,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;IAC/D,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;QAEzC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,aAAqB;IAC7C,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,cAAc,CAAC;QACpB,KAAK,uBAAuB;YAC1B,OAAO,CAAC,CAAC;QACX,KAAK,eAAe,CAAC;QACrB,KAAK,wBAAwB;YAC3B,OAAO,CAAC,CAAC;QACX,KAAK,sBAAsB,CAAC;QAC5B,KAAK,eAAe;YAClB,OAAO,CAAC,CAAC;QACX;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,EAAE,CAAC;QACZ;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,IAAkB,EAClB,GAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,UAAU,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;IACnD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,WAAW,CAAC;IAExD,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAE/E,wDAAwD;IACxD,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU,CAAC,CAAC;QAEjE,QAAQ,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC/B,KAAK,eAAe;gBAClB,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;YAC3F,KAAK,sBAAsB;gBACzB,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;YAC1F,KAAK,wBAAwB;gBAC3B,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;YAC1F,KAAK,uBAAuB;gBAC1B,OAAO,KAAK,CAAC;YACf;gBACE,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GACV,QAAQ,CAAC,aAAa,KAAK,eAAe;QACxC,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC;QACnD,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,sBAAsB;YACjD,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC;YAClD,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,wBAAwB;gBACnD,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC;gBAClD,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAE1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,GAAG,UAAU,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC;YACrD,IAAI,KAAa,CAAC;YAElB,QAAQ,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC/B,KAAK,eAAe;oBAClB,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,sBAAsB;oBACzB,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,wBAAwB;oBAC3B,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,uBAAuB;oBAC1B,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACtC,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAkB,EAAE,GAAe;IACpE,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC/D,CAAC;QACC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAQ,EAAE;YACrE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,iCAAiC;YACnE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE;gBAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,+EAA+E;QAC/E,iFAAiF;QACjF,qFAAqF;QACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAqC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7E,MAAM,oBAAoB,GAAG,CAC3B,WAA+B,EACG,EAAE;QACpC,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,EAAE,oBAAoB,EAAE,eAAe,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,IACE,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5C,CAAC;YACD,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAEtC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,SAAS;QAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;QAElE,oEAAoE;QACpE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,sFAAsF;YACtF,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzD,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrD,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YACpD,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC;YAEzC,IAAI,cAAc,KAAK,SAAS;gBAAE,SAAS;YAE3C,qBAAqB;YACrB,IAAI,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,CAAC,SAAS,YAAY,YAAY,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,wEAAwE;YACxE,uEAAuE;YACvE,wEAAwE;YACxE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC;gBACD,SAAS,GAAG,MAAM,CAAC;YACrB,CAAC;YAED,mDAAmD;YACnD,IAAI,OAAqB,CAAC;YAC1B,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;gBAC9D,IAAI,CAAC,CAAC,QAAQ,YAAY,YAAY,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,GAAG,QAAQ,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,OAAO,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;YAED,sDAAsD;YACtD,IAAI,OAAoB,CAAC;YACzB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAC5D,IAAI,OAAO,YAAY,YAAY,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;gBACD,mCAAmC;gBACnC,OAAO;oBACL,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,OAAO,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS;gBACT,SAAS;gBACT,OAAO;gBACP,OAAO;gBACP,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"glb.js","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAYpB,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe;IAKhD;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,GAAG,OAAO;IAMtE;;OAEG;IACG,IAAI,CACR,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;CAsF5B"}
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAapB,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe;IAKhD;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,GAAG,OAAO;IAMtE;;OAEG;IACG,IAAI,CACR,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;CA6F5B"}
package/dist/reader.js CHANGED
@@ -11,6 +11,7 @@ import { readProperties } from './sections/properties.js';
11
11
  import { readQuantities } from './sections/quantities.js';
12
12
  import { readRelationships } from './sections/relationships.js';
13
13
  import { readGeometry } from './sections/geometry.js';
14
+ import { readInstancedShards } from './sections/instanced-shards.js';
14
15
  import { readEntityIndex } from './sections/entity-index.js';
15
16
  export class BinaryCacheReader {
16
17
  /**
@@ -101,6 +102,13 @@ export class BinaryCacheReader {
101
102
  reader.position = geometrySection.offset;
102
103
  result.geometry = readGeometry(reader, header.version);
103
104
  }
105
+ // GPU-instancing shards (cache v10+): opaque repeated occurrences that were
106
+ // partitioned off the flat geometry section. Restored via the instanced path.
107
+ const shardsSection = sectionMap.get(SectionType.InstancedShards);
108
+ if (shardsSection && result.geometry) {
109
+ reader.position = shardsSection.offset;
110
+ result.geometry.instancedShards = readInstancedShards(reader);
111
+ }
104
112
  }
105
113
  return result;
106
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,OAAO,EACL,WAAW,GAKZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,OAAO,iBAAiB;IAC5B;;OAEG;IACH,UAAU,CAAC,MAAmB;QAC5B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,WAAwB,EAAE,YAAyB;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,MAAmB,EACnB,UAA4B,EAAE;QAE9B,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAEvD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,8BAA8B;QAC9B,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,kDAAkD;QAClD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAEpC,gBAAgB;QAChB,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC;QACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE/C,kBAAkB;QAClB,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC3C,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnD,kBAAkB;QAClB,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC3C,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnD,qBAAqB;QACrB,MAAM,oBAAoB,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC;QAC9C,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,SAAS,GAAmB;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO;YACP,QAAQ;YACR,UAAU;YACV,UAAU;YACV,aAAa;SACd,CAAC;QAEF,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,CAAC;QAE9C,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,CAAC,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;YAC5C,MAAM,CAAC,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC;gBACzC,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,4EAA4E;YAC5E,8EAA8E;YAC9E,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAClE,IAAI,aAAa,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC;gBACvC,MAAM,CAAC,QAAQ,CAAC,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * InstancedShards section (cache v10). GPU-instanced occurrences are rendered from
3
+ * compact IFNS shards that are NOT part of the flat geometry section, so without
4
+ * persisting them a cache reload would silently drop all opaque repeated geometry.
5
+ *
6
+ * Format: a length-prefixed blob array — uint32 shard count, then per shard a uint32
7
+ * byte length followed by the raw IFNS bytes (already a self-contained wire format,
8
+ * so no re-encode is needed). Restored shards are fed back through the renderer's
9
+ * normal `decodeInstancedShard` → `addInstancedShard` path.
10
+ */
11
+ import { BufferWriter, BufferReader } from '../utils/buffer-utils.js';
12
+ export declare function writeInstancedShards(writer: BufferWriter, shards: ReadonlyArray<ArrayBuffer>): void;
13
+ export declare function readInstancedShards(reader: BufferReader): ArrayBuffer[];
14
+ //# sourceMappingURL=instanced-shards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instanced-shards.d.ts","sourceRoot":"","sources":["../../src/sections/instanced-shards.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GACjC,IAAI,CAON;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAuBvE"}
@@ -0,0 +1,34 @@
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
+ export function writeInstancedShards(writer, shards) {
5
+ writer.writeUint32(shards.length);
6
+ for (const shard of shards) {
7
+ const bytes = new Uint8Array(shard);
8
+ writer.writeUint32(bytes.length);
9
+ writer.writeBytes(bytes);
10
+ }
11
+ }
12
+ export function readInstancedShards(reader) {
13
+ const count = reader.readUint32();
14
+ const out = [];
15
+ for (let i = 0; i < count; i++) {
16
+ // readBytes() uses Uint8Array.slice(), which silently clamps to the buffer
17
+ // end on a truncated cache — returning a short shard the decoder would then
18
+ // mis-parse. Validate length against the bytes actually remaining so a
19
+ // corrupt/truncated section fails fast instead of dropping geometry. (#1238)
20
+ if (reader.remaining < 4) {
21
+ throw new Error(`Truncated InstancedShards: missing length for shard ${i}/${count}`);
22
+ }
23
+ const len = reader.readUint32();
24
+ if (len > reader.remaining) {
25
+ throw new Error(`Truncated InstancedShards: shard ${i} declares ${len} bytes but only ${reader.remaining} remain`);
26
+ }
27
+ const bytes = reader.readBytes(len);
28
+ // readBytes may return a view into the larger cache buffer; copy out the exact
29
+ // bytes so the shard is a standalone ArrayBuffer the decoder can own/transfer.
30
+ out.push(bytes.slice().buffer);
31
+ }
32
+ return out;
33
+ }
34
+ //# sourceMappingURL=instanced-shards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instanced-shards.js","sourceRoot":"","sources":["../../src/sections/instanced-shards.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,MAAM,UAAU,oBAAoB,CAClC,MAAoB,EACpB,MAAkC;IAElC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,2EAA2E;QAC3E,4EAA4E;QAC5E,uEAAuE;QACvE,6EAA6E;QAC7E,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,oCAAoC,CAAC,aAAa,GAAG,mBAAmB,MAAM,CAAC,SAAS,SAAS,CAClG,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACpC,+EAA+E;QAC/E,+EAA+E;QAC/E,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAqB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/types.d.ts CHANGED
@@ -36,7 +36,25 @@ export declare const MAGIC = 1279477321;
36
36
  * old glitchy stack. The bump invalidates those caches so layered walls re-mesh
37
37
  * with the class-3 slices the cull path expects.
38
38
  */
39
- export declare const FORMAT_VERSION = 9;
39
+ /**
40
+ * v9→v10: GPU instancing. Opaque repeated occurrences are partitioned off the flat
41
+ * geometry section into IFNS instancing shards (rendered from compact templates).
42
+ * A v9 cache predates the shard section, so a v9 hit would restore the flat meshes
43
+ * only and silently drop all instanced occurrences — the bump invalidates those so
44
+ * the model re-meshes (and re-writes a complete v10 cache with the shards).
45
+ */
46
+ /**
47
+ * v10→v11: CSG void-cutting caps cutters at 16 per N-ary arrangement and subtracts
48
+ * dense opening groups in chunks (#1432). For a host with >16 disjoint void cutters
49
+ * this is solid-equivalent but NOT byte-identical: the per-chunk consolidate yields
50
+ * a different tessellation and mesh hash than the old single arrangement. On
51
+ * pre-#1432 builds those hosts often exceeded the escalation budget and fell back to
52
+ * an AABB-box, so the chunked cut is also more correct. A v10 cache holds the old
53
+ * (boxed or differently-fragmented) mesh + hash, so without a bump a restored model
54
+ * would render stale geometry and the compare/diff feature would flag those hosts as
55
+ * changed. The bump invalidates pre-#1432 caches so they re-mesh.
56
+ */
57
+ export declare const FORMAT_VERSION = 11;
40
58
  /** Section types in the binary format */
41
59
  export declare enum SectionType {
42
60
  Strings = 1,
@@ -47,7 +65,8 @@ export declare enum SectionType {
47
65
  Geometry = 6,
48
66
  Spatial = 7,
49
67
  Bounds = 8,
50
- EntityIndex = 9
68
+ EntityIndex = 9,
69
+ InstancedShards = 10
51
70
  }
52
71
  /** IFC schema version */
53
72
  export declare enum SchemaVersion {
@@ -169,6 +188,10 @@ export interface CacheReadResult {
169
188
  totalVertices: number;
170
189
  totalTriangles: number;
171
190
  coordinateInfo: CoordinateInfo;
191
+ /** Raw IFNS GPU-instancing shard bytes (opaque repeated occurrences), persisted
192
+ * so a cache reload re-uploads them via the instanced path instead of dropping
193
+ * the instanced geometry. Empty/absent for non-instanced models. */
194
+ instancedShards?: ArrayBuffer[];
172
195
  };
173
196
  }
174
197
  /** Header size in bytes */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -34,7 +34,25 @@ export const MAGIC = 0x4C434649; // "IFCL" in little-endian
34
34
  * old glitchy stack. The bump invalidates those caches so layered walls re-mesh
35
35
  * with the class-3 slices the cull path expects.
36
36
  */
37
- export const FORMAT_VERSION = 9;
37
+ /**
38
+ * v9→v10: GPU instancing. Opaque repeated occurrences are partitioned off the flat
39
+ * geometry section into IFNS instancing shards (rendered from compact templates).
40
+ * A v9 cache predates the shard section, so a v9 hit would restore the flat meshes
41
+ * only and silently drop all instanced occurrences — the bump invalidates those so
42
+ * the model re-meshes (and re-writes a complete v10 cache with the shards).
43
+ */
44
+ /**
45
+ * v10→v11: CSG void-cutting caps cutters at 16 per N-ary arrangement and subtracts
46
+ * dense opening groups in chunks (#1432). For a host with >16 disjoint void cutters
47
+ * this is solid-equivalent but NOT byte-identical: the per-chunk consolidate yields
48
+ * a different tessellation and mesh hash than the old single arrangement. On
49
+ * pre-#1432 builds those hosts often exceeded the escalation budget and fell back to
50
+ * an AABB-box, so the chunked cut is also more correct. A v10 cache holds the old
51
+ * (boxed or differently-fragmented) mesh + hash, so without a bump a restored model
52
+ * would render stale geometry and the compare/diff feature would flag those hosts as
53
+ * changed. The bump invalidates pre-#1432 caches so they re-mesh.
54
+ */
55
+ export const FORMAT_VERSION = 11;
38
56
  /** Section types in the binary format */
39
57
  export var SectionType;
40
58
  (function (SectionType) {
@@ -47,6 +65,7 @@ export var SectionType;
47
65
  SectionType[SectionType["Spatial"] = 7] = "Spatial";
48
66
  SectionType[SectionType["Bounds"] = 8] = "Bounds";
49
67
  SectionType[SectionType["EntityIndex"] = 9] = "EntityIndex";
68
+ SectionType[SectionType["InstancedShards"] = 10] = "InstancedShards";
50
69
  })(SectionType || (SectionType = {}));
51
70
  /** IFC schema version */
52
71
  export var SchemaVersion;
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAS/D,0BAA0B;AAC1B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,0BAA0B;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,yCAAyC;AACzC,MAAM,CAAN,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,qDAAY,CAAA;IACZ,yDAAc,CAAA;IACd,yDAAc,CAAA;IACd,+DAAiB,CAAA;IACjB,qDAAY,CAAA;IACZ,mDAAW,CAAA;IACX,iDAAU,CAAA;IACV,2DAAe,CAAA;AACjB,CAAC,EAVW,WAAW,KAAX,WAAW,QAUtB;AAED,yBAAyB;AACzB,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,qDAAU,CAAA;IACV,iDAAQ,CAAA;IACR,qDAAU,CAAA;AACZ,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,mBAAmB;AACnB,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,yDAAmB,CAAA;IACnB,2DAAoB,CAAA;IACpB,yDAAmB,CAAA;AACrB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,oBAAoB;AACpB,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,+CAAQ,CAAA;IACR,2DAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAqHD,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAS/D,0BAA0B;AAC1B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,0BAA0B;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;GAMG;AACH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,yCAAyC;AACzC,MAAM,CAAN,IAAY,WAWX;AAXD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,qDAAY,CAAA;IACZ,yDAAc,CAAA;IACd,yDAAc,CAAA;IACd,+DAAiB,CAAA;IACjB,qDAAY,CAAA;IACZ,mDAAW,CAAA;IACX,iDAAU,CAAA;IACV,2DAAe,CAAA;IACf,oEAAoB,CAAA;AACtB,CAAC,EAXW,WAAW,KAAX,WAAW,QAWtB;AAED,yBAAyB;AACzB,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,qDAAU,CAAA;IACV,iDAAQ,CAAA;IACR,qDAAU,CAAA;AACZ,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,mBAAmB;AACnB,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,yDAAmB,CAAA;IACnB,2DAAoB,CAAA;IACpB,yDAAmB,CAAA;AACrB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,oBAAoB;AACpB,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,+CAAQ,CAAA;IACR,2DAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAyHD,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC"}
package/dist/writer.d.ts CHANGED
@@ -8,6 +8,10 @@ export interface GeometryData {
8
8
  totalVertices: number;
9
9
  totalTriangles: number;
10
10
  coordinateInfo: CoordinateInfo;
11
+ /** Raw IFNS GPU-instancing shard bytes (opaque repeated occurrences). Persisted so
12
+ * a cache reload re-uploads them via the instanced path; the flat `meshes` above
13
+ * deliberately excludes these occurrences. Empty/absent for non-instanced models. */
14
+ instancedShards?: ArrayBuffer[];
11
15
  }
12
16
  export declare class BinaryCacheWriter {
13
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EASL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACG,KAAK,CACT,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,YAAY,EAAE,WAAW,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IAsIvB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EASL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAapB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B;;0FAEsF;IACtF,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACG,KAAK,CACT,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,YAAY,EAAE,WAAW,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IAiJvB,OAAO,CAAC,YAAY;CAGrB"}
package/dist/writer.js CHANGED
@@ -11,6 +11,7 @@ import { writeProperties } from './sections/properties.js';
11
11
  import { writeQuantities } from './sections/quantities.js';
12
12
  import { writeRelationships } from './sections/relationships.js';
13
13
  import { writeGeometry } from './sections/geometry.js';
14
+ import { writeInstancedShards } from './sections/instanced-shards.js';
14
15
  import { writeEntityIndex } from './sections/entity-index.js';
15
16
  export class BinaryCacheWriter {
16
17
  /**
@@ -82,6 +83,16 @@ export class BinaryCacheWriter {
82
83
  sectionBuffers.push({ type: SectionType.Geometry, buffer: geometryBuffer });
83
84
  totalVertices = geometry.totalVertices;
84
85
  totalTriangles = geometry.totalTriangles;
86
+ // InstancedShards section (optional) — GPU-instanced occurrences live here, not
87
+ // in the flat geometry section, so persist them or a reload drops them.
88
+ if (geometry.instancedShards && geometry.instancedShards.length > 0) {
89
+ const shardsBuffer = this.writeSection(() => {
90
+ const writer = new BufferWriter();
91
+ writeInstancedShards(writer, geometry.instancedShards);
92
+ return writer.build();
93
+ });
94
+ sectionBuffers.push({ type: SectionType.InstancedShards, buffer: shardsBuffer });
95
+ }
85
96
  }
86
97
  // Calculate offsets
87
98
  const sectionTableSize = sectionBuffers.length * SECTION_ENTRY_SIZE;
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/cache",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Binary cache format for IFC-Lite - fast model loading",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,11 +14,11 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@ifc-lite/data": "^2.2.0",
17
- "@ifc-lite/geometry": "^2.9.0"
17
+ "@ifc-lite/geometry": "^2.13.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "typescript": "^6.0.3",
21
- "vitest": "^4.1.0"
21
+ "vitest": "^4.1.9"
22
22
  },
23
23
  "license": "MPL-2.0",
24
24
  "author": "Louis True",