@ifc-lite/renderer 1.43.0 → 1.44.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.
Files changed (102) hide show
  1. package/dist/camera-animation.d.ts +20 -32
  2. package/dist/camera-animation.d.ts.map +1 -1
  3. package/dist/camera-animation.js +71 -358
  4. package/dist/camera-animation.js.map +1 -1
  5. package/dist/camera-controls.d.ts +11 -51
  6. package/dist/camera-controls.d.ts.map +1 -1
  7. package/dist/camera-controls.js +140 -12
  8. package/dist/camera-controls.js.map +1 -1
  9. package/dist/camera-first-person.d.ts +52 -0
  10. package/dist/camera-first-person.d.ts.map +1 -0
  11. package/dist/camera-first-person.js +119 -0
  12. package/dist/camera-first-person.js.map +1 -0
  13. package/dist/camera-framing.d.ts +86 -0
  14. package/dist/camera-framing.d.ts.map +1 -0
  15. package/dist/camera-framing.js +230 -0
  16. package/dist/camera-framing.js.map +1 -0
  17. package/dist/camera-guards.d.ts +148 -0
  18. package/dist/camera-guards.d.ts.map +1 -0
  19. package/dist/camera-guards.js +150 -0
  20. package/dist/camera-guards.js.map +1 -0
  21. package/dist/camera-matrices.d.ts +14 -0
  22. package/dist/camera-matrices.d.ts.map +1 -0
  23. package/dist/camera-matrices.js +146 -0
  24. package/dist/camera-matrices.js.map +1 -0
  25. package/dist/camera-preset-view.d.ts +56 -0
  26. package/dist/camera-preset-view.d.ts.map +1 -0
  27. package/dist/camera-preset-view.js +180 -0
  28. package/dist/camera-preset-view.js.map +1 -0
  29. package/dist/camera-projection.d.ts +1 -1
  30. package/dist/camera-projection.d.ts.map +1 -1
  31. package/dist/camera-projection.js +83 -30
  32. package/dist/camera-projection.js.map +1 -1
  33. package/dist/camera-state.d.ts +62 -0
  34. package/dist/camera-state.d.ts.map +1 -0
  35. package/dist/camera-state.js +5 -0
  36. package/dist/camera-state.js.map +1 -0
  37. package/dist/camera.d.ts +22 -11
  38. package/dist/camera.d.ts.map +1 -1
  39. package/dist/camera.js +75 -120
  40. package/dist/camera.js.map +1 -1
  41. package/dist/environment.d.ts.map +1 -1
  42. package/dist/environment.js +23 -1
  43. package/dist/environment.js.map +1 -1
  44. package/dist/fill-bridge-anchor.d.ts +32 -0
  45. package/dist/fill-bridge-anchor.d.ts.map +1 -0
  46. package/dist/fill-bridge-anchor.js +82 -0
  47. package/dist/fill-bridge-anchor.js.map +1 -0
  48. package/dist/fill-predicates.d.ts +44 -0
  49. package/dist/fill-predicates.d.ts.map +1 -0
  50. package/dist/fill-predicates.js +65 -0
  51. package/dist/fill-predicates.js.map +1 -0
  52. package/dist/fill-triangulate.d.ts +102 -0
  53. package/dist/fill-triangulate.d.ts.map +1 -0
  54. package/dist/fill-triangulate.js +333 -0
  55. package/dist/fill-triangulate.js.map +1 -0
  56. package/dist/index.d.ts +154 -8
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +294 -45
  59. package/dist/index.js.map +1 -1
  60. package/dist/math.d.ts +49 -1
  61. package/dist/math.d.ts.map +1 -1
  62. package/dist/math.js +122 -67
  63. package/dist/math.js.map +1 -1
  64. package/dist/renderer-symbolic-overlays.d.ts.map +1 -1
  65. package/dist/renderer-symbolic-overlays.js +20 -25
  66. package/dist/renderer-symbolic-overlays.js.map +1 -1
  67. package/dist/scene-geometry.d.ts +32 -0
  68. package/dist/scene-geometry.d.ts.map +1 -1
  69. package/dist/scene-geometry.js +66 -0
  70. package/dist/scene-geometry.js.map +1 -1
  71. package/dist/scene.d.ts +25 -0
  72. package/dist/scene.d.ts.map +1 -1
  73. package/dist/scene.js +91 -109
  74. package/dist/scene.js.map +1 -1
  75. package/dist/section-2d-lift.d.ts +109 -0
  76. package/dist/section-2d-lift.d.ts.map +1 -0
  77. package/dist/section-2d-lift.js +168 -0
  78. package/dist/section-2d-lift.js.map +1 -0
  79. package/dist/section-2d-line-buffer.d.ts +58 -0
  80. package/dist/section-2d-line-buffer.d.ts.map +1 -0
  81. package/dist/section-2d-line-buffer.js +109 -0
  82. package/dist/section-2d-line-buffer.js.map +1 -0
  83. package/dist/section-2d-overlay.d.ts +28 -77
  84. package/dist/section-2d-overlay.d.ts.map +1 -1
  85. package/dist/section-2d-overlay.js +161 -593
  86. package/dist/section-2d-overlay.js.map +1 -1
  87. package/dist/section-plane-basis.d.ts +22 -3
  88. package/dist/section-plane-basis.d.ts.map +1 -1
  89. package/dist/section-plane-basis.js +51 -10
  90. package/dist/section-plane-basis.js.map +1 -1
  91. package/dist/section-plane.d.ts.map +1 -1
  92. package/dist/section-plane.js +10 -1
  93. package/dist/section-plane.js.map +1 -1
  94. package/dist/shaders/section-2d-overlay.wgsl.d.ts +102 -0
  95. package/dist/shaders/section-2d-overlay.wgsl.d.ts.map +1 -0
  96. package/dist/shaders/section-2d-overlay.wgsl.js +281 -0
  97. package/dist/shaders/section-2d-overlay.wgsl.js.map +1 -0
  98. package/dist/symbolic-overlay-pipelines.d.ts +10 -39
  99. package/dist/symbolic-overlay-pipelines.d.ts.map +1 -1
  100. package/dist/symbolic-overlay-pipelines.js +20 -163
  101. package/dist/symbolic-overlay-pipelines.js.map +1 -1
  102. package/package.json +3 -2
@@ -0,0 +1,333 @@
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
+ * Even-odd triangulation of a flat ring set (issue #2516).
6
+ *
7
+ * Two consumers hand us the same shape of input — a bag of closed 2D rings in
8
+ * the (x, z) plane with no promised winding and no promised order:
9
+ *
10
+ * - section cut caps (`buildCapFillGeometry`), where the rings are a cut
11
+ * polygon's outer boundary plus the openings/voids the plane sliced
12
+ * through;
13
+ * - `IfcAnnotationFillArea` (`SymbolicFillPipeline`), where the rings are the
14
+ * annotation's outer bound plus its inner bounds.
15
+ *
16
+ * Both used to assume "ring 0 is the outer boundary, everything else is a hole"
17
+ * and then bridge the holes in and ear-clip. That produced a *near-empty* cap
18
+ * wherever a profile had a hole: the bridge duplicates two vertices, and the
19
+ * old ear test treated any vertex lying ON a candidate ear (including those
20
+ * duplicates) as obstructing it, so almost no ear was ever clipped. A 4x4
21
+ * square with a 2x2 hole came out at area 2 instead of 12.
22
+ *
23
+ * The fix here is deliberately NOT "reverse the hole's winding" — with the
24
+ * hole merely added rather than subtracted the same case comes out at 20. What
25
+ * is actually needed is the even-odd rule:
26
+ *
27
+ * 1. Nest the rings: a ring's depth is the number of other rings that
28
+ * contain it. Even depth = filled boundary, odd depth = hole. That is what
29
+ * makes a hole-inside-a-hole (an island) come back as solid rather than as
30
+ * another void.
31
+ * 2. Group each even-depth ring with its immediate children.
32
+ * 3. Bridge each group's holes into its boundary and ear-clip, with an ear
33
+ * test that (a) only lets REFLEX vertices obstruct an ear and (b) ignores
34
+ * vertices coincident with the ear's own corners, which is exactly the
35
+ * bridge duplicate that used to deadlock the clipper.
36
+ *
37
+ * Everything is O(n²) in the ring's vertex count, which is fine: fill regions
38
+ * and cut cross-sections are tens of vertices, not thousands.
39
+ */
40
+ import { chooseBridgeAnchor } from './fill-bridge-anchor.js';
41
+ import { orient, pointOnSegment, ringScale, samePoint, } from './fill-predicates.js';
42
+ /**
43
+ * Shoelace area of a ring in the (x, z) plane. Positive = counter-clockwise.
44
+ * Winding normalisation is built on this, and tests use it to state the
45
+ * analytic area a ring set must triangulate to.
46
+ */
47
+ export function signedRingArea(ring) {
48
+ let a = 0;
49
+ for (let i = 0; i < ring.length; i++) {
50
+ const p = ring[i];
51
+ const q = ring[(i + 1) % ring.length];
52
+ a += p.x * q.z - q.x * p.z;
53
+ }
54
+ return a / 2;
55
+ }
56
+ /** Crossing-number point-in-polygon. Points exactly on the ring are undefined
57
+ * here — callers screen those out with {@link pointOnRing} first. */
58
+ function pointInRing(p, ring) {
59
+ let inside = false;
60
+ for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {
61
+ const a = ring[i];
62
+ const b = ring[j];
63
+ if (a.z > p.z !== b.z > p.z &&
64
+ p.x < ((b.x - a.x) * (p.z - a.z)) / (b.z - a.z) + a.x) {
65
+ inside = !inside;
66
+ }
67
+ }
68
+ return inside;
69
+ }
70
+ /** True when `p` lies on one of the ring's edges, endpoints included. */
71
+ function pointOnRing(p, ring) {
72
+ for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {
73
+ if (pointOnSegment(p, ring[i], ring[j], true))
74
+ return true;
75
+ }
76
+ return false;
77
+ }
78
+ /**
79
+ * True when `inner` sits inside `outer`. Well-formed IFC bounds never cross,
80
+ * so the first vertex of `inner` that is not ON `outer` settles it; shared
81
+ * vertices and shared edge stretches (a hole flush against the boundary) are
82
+ * skipped rather than decided.
83
+ */
84
+ function ringInsideRing(inner, outer) {
85
+ for (const p of inner) {
86
+ if (pointOnRing(p, outer))
87
+ continue;
88
+ return pointInRing(p, outer);
89
+ }
90
+ return false;
91
+ }
92
+ /**
93
+ * Sort a bag of rings into filled boundaries and their holes by the even-odd
94
+ * rule. Rings with fewer than 3 vertices are dropped.
95
+ *
96
+ * A ring nested at odd depth is a hole; at even depth it is filled — so an
97
+ * island inside a hole comes back as its own group rather than being counted
98
+ * as void. A ring at depth d+1 that is contained in a ring at depth d is
99
+ * necessarily its immediate child (every ring containing the child also
100
+ * contains the parent, so the counts can only differ by the parent itself),
101
+ * which is why no explicit tree is built.
102
+ */
103
+ export function groupRingsByNesting(rings) {
104
+ const usable = rings.filter((r) => r.length >= 3).map((r) => r.slice());
105
+ const depth = usable.map((r, i) => usable.reduce((d, other, j) => (j !== i && ringInsideRing(r, other) ? d + 1 : d), 0));
106
+ const groups = [];
107
+ for (let i = 0; i < usable.length; i++) {
108
+ if (depth[i] % 2 !== 0)
109
+ continue;
110
+ const holes = [];
111
+ for (let j = 0; j < usable.length; j++) {
112
+ if (j === i || depth[j] !== depth[i] + 1)
113
+ continue;
114
+ if (ringInsideRing(usable[j], usable[i]))
115
+ holes.push(usable[j]);
116
+ }
117
+ groups.push({ outer: usable[i], holes });
118
+ }
119
+ return groups;
120
+ }
121
+ function asCcw(ring) {
122
+ return signedRingArea(ring) >= 0 ? ring : ring.slice().reverse();
123
+ }
124
+ function asCw(ring) {
125
+ return signedRingArea(ring) <= 0 ? ring : ring.slice().reverse();
126
+ }
127
+ /**
128
+ * Stitch each hole into the outer ring with a single bridge edge so the result
129
+ * is one simple polygon ear-clipping can handle. Mirrors mapbox/earcut's
130
+ * `eliminateHoles` pass:
131
+ *
132
+ * 1. For each hole, pick its rightmost (max-x) vertex as the bridge start.
133
+ * 2. Sort holes by descending bridge-start x so outer holes go in first.
134
+ * 3. Pick the anchor on the boundary the bridge can actually reach without
135
+ * crossing anything — see `fill-bridge-anchor.ts`.
136
+ * 4. Splice the hole in at that anchor, closing both ends back to their
137
+ * starts to form a zero-area bridge edge.
138
+ *
139
+ * Windings are normalised here rather than assumed: the boundary is made CCW
140
+ * and every hole CW, so the merged ring's signed area stays consistent no
141
+ * matter how the caller's rings were wound.
142
+ */
143
+ export function joinHoles(outer, holes) {
144
+ if (holes.length === 0)
145
+ return outer;
146
+ const sorted = holes
147
+ // Same degenerate-ring rule the rest of the module uses. Without it a
148
+ // 1- or 2-point "hole" bridges in as a spur, which is silently wrong
149
+ // geometry rather than a dropped hole.
150
+ .filter((h) => h.length >= 3)
151
+ .map((h) => asCw(h))
152
+ .map((ring) => {
153
+ let bestI = 0;
154
+ for (let i = 1; i < ring.length; i++) {
155
+ if (ring[i].x > ring[bestI].x)
156
+ bestI = i;
157
+ }
158
+ return { ring, startIdx: bestI, startX: ring[bestI].x };
159
+ })
160
+ .sort((a, b) => b.startX - a.startX);
161
+ let result = asCcw(outer).slice();
162
+ for (const { ring, startIdx } of sorted) {
163
+ const bestIdx = chooseBridgeAnchor(result, ring, startIdx);
164
+ if (bestIdx < 0)
165
+ continue;
166
+ const rotated = [...ring.slice(startIdx), ...ring.slice(0, startIdx)];
167
+ result = [
168
+ ...result.slice(0, bestIdx + 1),
169
+ ...rotated,
170
+ rotated[0],
171
+ result[bestIdx],
172
+ ...result.slice(bestIdx + 1),
173
+ ];
174
+ }
175
+ return result;
176
+ }
177
+ function pointInTriangle(p, a, b, c) {
178
+ const s1 = (p.x - c.x) * (a.z - c.z) - (a.x - c.x) * (p.z - c.z);
179
+ const s2 = (p.x - a.x) * (b.z - a.z) - (b.x - a.x) * (p.z - a.z);
180
+ const s3 = (p.x - b.x) * (c.z - b.z) - (c.x - b.x) * (p.z - b.z);
181
+ const hasNeg = s1 < 0 || s2 < 0 || s3 < 0;
182
+ const hasPos = s1 > 0 || s2 > 0 || s3 > 0;
183
+ return !(hasNeg && hasPos);
184
+ }
185
+ /**
186
+ * Ear-clipping triangulation of a simple polygon (which may be a bridged
187
+ * polygon-with-holes). Returns triangles as index triples into `ring`.
188
+ *
189
+ * Two properties keep the bridged case from deadlocking, and both are the
190
+ * #2516 fix:
191
+ *
192
+ * - only a REFLEX vertex can obstruct an ear of a simple polygon, so convex
193
+ * vertices are not tested at all. Testing them made every vertex lying on
194
+ * an axis-aligned ear edge veto that ear;
195
+ * - a vertex coincident with one of the ear's own corners is skipped. That
196
+ * is precisely the duplicate the bridge introduces; the slit it belongs to
197
+ * has zero width, so it cannot cover any of the ear.
198
+ *
199
+ * When no ear can be found the clipper drops one zero-area (collinear or
200
+ * duplicated) vertex — which cannot change the covered region — and retries,
201
+ * rather than bailing out with most of the polygon untriangulated.
202
+ *
203
+ * If even that leaves no ear the loop stops and returns what it has, which is
204
+ * a PARTIAL fill. That is deliberate, and it is the least-bad option rather
205
+ * than an oversight:
206
+ *
207
+ * - it is not reachable for well-formed rings. Measured over 20 000 rotated
208
+ * multi-notch boundaries with a hole in a random solid column, 4 000
209
+ * axis-aligned ones and 2 000 concave stars with up to three concave
210
+ * holes: zero occurrences, zero area error. It fires on schema-illegal
211
+ * input, e.g. an inner bound that pokes outside its outer bound;
212
+ * - throwing would lose the whole cap upload over one bad profile;
213
+ * - falling back to a fan over the outer ring would reintroduce BOTH defects
214
+ * this module exists to remove — holes not subtracted, and inversion on
215
+ * concave cross-sections.
216
+ *
217
+ * What the partial output does NOT promise is that it only ever omits area:
218
+ * a self-intersecting ring triangulates to more than even-odd would fill,
219
+ * because ear clipping reads "inside" from the ring's normalised orientation
220
+ * rather than from crossing parity. What it does promise — and what a render
221
+ * thread needs — is that it returns in bounded time, emits only vertices it
222
+ * was given, and stays inside the input's own extent.
223
+ * `fill-triangulate.test.ts` pins those.
224
+ */
225
+ export function earClip(ring) {
226
+ const n = ring.length;
227
+ if (n < 3)
228
+ return [];
229
+ // No 3-vertex fast path: it returned the caller's index order unnormalised,
230
+ // so a clockwise TRIANGLE came back clockwise while a clockwise quad came
231
+ // back counter-clockwise. The winding-normalisation below costs nothing at
232
+ // n = 3 and makes every emitted triangle agree.
233
+ // Coordinate comparisons are measured against the ring's own extent, so the
234
+ // same ring triangulates identically whether it is stated in metres or in
235
+ // millimetres.
236
+ const scale = ringScale(ring);
237
+ // Walk the ring counter-clockwise so the ear test below has a fixed sign.
238
+ let area2 = 0;
239
+ for (let i = 0; i < n; i++) {
240
+ const a = ring[i];
241
+ const b = ring[(i + 1) % n];
242
+ area2 += a.x * b.z - b.x * a.z;
243
+ }
244
+ const indices = [];
245
+ for (let i = 0; i < n; i++)
246
+ indices.push(area2 > 0 ? i : n - 1 - i);
247
+ const triangles = [];
248
+ let safety = indices.length * indices.length;
249
+ while (indices.length > 3 && safety-- > 0) {
250
+ let found = false;
251
+ for (let i = 0; i < indices.length; i++) {
252
+ if (!isEar(ring, indices, i, scale))
253
+ continue;
254
+ const m = indices.length;
255
+ triangles.push([indices[(i + m - 1) % m], indices[i], indices[(i + 1) % m]]);
256
+ indices.splice(i, 1);
257
+ found = true;
258
+ break;
259
+ }
260
+ if (found)
261
+ continue;
262
+ const degenerate = findZeroAreaVertex(ring, indices);
263
+ if (degenerate < 0)
264
+ break; // see the note above on partial output
265
+ indices.splice(degenerate, 1);
266
+ }
267
+ if (indices.length === 3) {
268
+ triangles.push([indices[0], indices[1], indices[2]]);
269
+ }
270
+ return triangles;
271
+ }
272
+ function isEar(ring, indices, i, scale) {
273
+ const m = indices.length;
274
+ const ia = indices[(i + m - 1) % m];
275
+ const ib = indices[i];
276
+ const ic = indices[(i + 1) % m];
277
+ const a = ring[ia];
278
+ const b = ring[ib];
279
+ const c = ring[ic];
280
+ if (orient(a, b, c) <= 0)
281
+ return false; // reflex or degenerate corner
282
+ for (let j = 0; j < m; j++) {
283
+ const ij = indices[j];
284
+ if (ij === ia || ij === ib || ij === ic)
285
+ continue;
286
+ const p = ring[ij];
287
+ if (samePoint(p, a, scale) || samePoint(p, b, scale) || samePoint(p, c, scale))
288
+ continue;
289
+ const prev = ring[indices[(j + m - 1) % m]];
290
+ const next = ring[indices[(j + 1) % m]];
291
+ if (orient(prev, p, next) > 0)
292
+ continue; // strictly convex — cannot obstruct
293
+ if (pointInTriangle(p, a, b, c))
294
+ return false;
295
+ }
296
+ return true;
297
+ }
298
+ function findZeroAreaVertex(ring, indices) {
299
+ const m = indices.length;
300
+ for (let i = 0; i < m; i++) {
301
+ const a = ring[indices[(i + m - 1) % m]];
302
+ const b = ring[indices[i]];
303
+ const c = ring[indices[(i + 1) % m]];
304
+ if (orient(a, b, c) === 0)
305
+ return i;
306
+ }
307
+ return -1;
308
+ }
309
+ /**
310
+ * Triangulate a bag of rings under the even-odd rule. This is the single entry
311
+ * point both fill consumers call; see the module comment for why.
312
+ *
313
+ * A hole-free ring set takes the same path it always did — the ring is handed
314
+ * straight to {@link earClip} in its original vertex order — so profiles
315
+ * without holes are byte-identical to before #2516.
316
+ */
317
+ export function triangulateRings(rings) {
318
+ const points = [];
319
+ const triangles = [];
320
+ for (const group of groupRingsByNesting(rings)) {
321
+ const stitched = group.holes.length === 0 ? group.outer : joinHoles(group.outer, group.holes);
322
+ const tris = earClip(stitched);
323
+ if (tris.length === 0)
324
+ continue;
325
+ const base = points.length;
326
+ for (const p of stitched)
327
+ points.push(p);
328
+ for (const [a, b, c] of tris)
329
+ triangles.push([base + a, base + b, base + c]);
330
+ }
331
+ return { points, triangles };
332
+ }
333
+ //# sourceMappingURL=fill-triangulate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill-triangulate.js","sourceRoot":"","sources":["../src/fill-triangulate.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,12 +4,13 @@
4
4
  export { WebGPUDevice } from './device.js';
5
5
  export { RenderPipeline } from './pipeline.js';
6
6
  export { Camera } from './camera.js';
7
- export type { ProjectionMode } from './camera-controls.js';
7
+ export type { ProjectionMode } from './camera-state.js';
8
8
  export { pickFitPolicy } from './camera-fit-policy.js';
9
9
  export type { FitPolicy, FitPolicyKind, Bounds3, PickFitPolicyOptions } from './camera-fit-policy.js';
10
10
  export { Scene } from './scene.js';
11
11
  export { Picker } from './picker.js';
12
12
  export { MathUtils } from './math.js';
13
+ export { viewBasis } from './math.js';
13
14
  export { SectionPlaneRenderer } from './section-plane.js';
14
15
  export { Section2DOverlayRenderer } from './section-2d-overlay.js';
15
16
  export { SymbolicFillPipeline, SymbolicTextPipeline, type SymbolicFillInput, type SymbolicTextInput, } from './symbolic-overlay-pipelines.js';
@@ -86,9 +87,28 @@ export declare class Renderer {
86
87
  private skyPass;
87
88
  private edlOptions;
88
89
  private pointCloudRenderer;
89
- /** Set true at the end of `init()`; gates `whenReady()`. */
90
+ /**
91
+ * Set true at the end of the LATEST `init()`; gates `whenReady()` and
92
+ * `isReady()`. Revoked synchronously by `init()` and by `destroy()`, and
93
+ * overridden (not cleared) by a device loss — see `deviceLost`, which the
94
+ * two readiness methods consult alongside this flag because the loss can
95
+ * land in the middle of the init that is about to set it.
96
+ */
90
97
  private ready;
91
98
  private readyWaiters;
99
+ /**
100
+ * Set by the public `destroy()`, cleared synchronously by `init()`. It is
101
+ * the difference between "not ready YET" and "never going to be ready":
102
+ * `whenReady()` parks for the first and rejects for the second.
103
+ *
104
+ * Without it a caller parked across the teardown waits forever, because
105
+ * nothing after `destroy()` will ever reach `markReady()` — the host's
106
+ * remount builds a NEW Renderer rather than re-initialising this one. The
107
+ * private `teardown()` deliberately does NOT set it: the teardown
108
+ * `initOnce()` runs on the previous init's objects is part of an init that
109
+ * IS going to publish readiness, and its waiters must survive to be flushed.
110
+ */
111
+ private destroyed;
92
112
  /**
93
113
  * The tail of the `init()` queue. `init()` chains onto this rather than
94
114
  * running immediately, so two overlapping calls cannot both walk past the
@@ -98,12 +118,33 @@ export declare class Renderer {
98
118
  * caller) so one failure does not deadlock every later call.
99
119
  */
100
120
  private initChain;
121
+ /**
122
+ * Incremented synchronously by every `init()` call AND by every public
123
+ * `destroy()`. It stamps "the lifecycle event an in-flight init belongs to":
124
+ * an init that no longer carries the current stamp has been superseded and
125
+ * must neither allocate nor publish readiness.
126
+ *
127
+ * Both bumps are load-bearing, for the same reason. Because the queue above
128
+ * defers the body, an init can finish while a later one is still waiting its
129
+ * turn; that later call is about to tear down everything the earlier one
130
+ * built, so the earlier one must not publish readiness. And a host that calls
131
+ * `destroy()` while an init is parked on `await device.init(...)` gets the
132
+ * same hazard from the other direction: without the bump that init resumes,
133
+ * allocates a full replacement GPU stack nothing references, and re-publishes
134
+ * `ready` against a renderer that has already been torn down (#2465).
135
+ *
136
+ * The teardown `initOnce()` runs as part of its OWN re-init deliberately does
137
+ * NOT bump it — see `destroy()` vs `teardown()`. Bumping there would make
138
+ * every re-init invalidate itself, and nothing would ever become ready again.
139
+ */
140
+ private initGeneration;
101
141
  /**
102
142
  * Set once the GPU device is lost for a non-intentional reason (driver
103
143
  * reset / VRAM exhaustion — see `WebGPUDevice`). Every GPU resource is then
104
144
  * dead, so `render()` becomes a no-op (it would only spew validation errors)
105
- * until the host re-initialises the renderer. Consumers learn of this via
106
- * `onDeviceLost` and typically respond by reloading the model.
145
+ * and the renderer stops reporting itself ready (`isReady()` goes false,
146
+ * `whenReady()` rejects) until the host re-initialises it. Consumers learn
147
+ * of this via `onDeviceLost` and typically respond by reloading the model.
107
148
  *
108
149
  * Two signals set it: the async `device.lost` promise (Chromium), and a
109
150
  * frame throwing a `DOMException` out of `render()` (Safari 26.5, which
@@ -113,6 +154,29 @@ export declare class Renderer {
113
154
  * device, and it must cost one frame, not the session.
114
155
  */
115
156
  private deviceLost;
157
+ /**
158
+ * The lifecycle generation the latched loss belongs to (see
159
+ * `initGeneration`); null until the first loss, and never cleared
160
+ * afterwards. It is only ever read next to `deviceLost`, which is what
161
+ * makes a stale stamp harmless — and that pairing is required, not
162
+ * cosmetic: a loss that latched between `init()` bumping the generation and
163
+ * its queued body running is stamped with the CURRENT generation, and only
164
+ * the flag that body clears says the renderer has moved on.
165
+ *
166
+ * `whenReady()` rejects only while this still equals the CURRENT generation,
167
+ * which is what re-arms the wait the instant a host calls `init()` — before
168
+ * the queued body has had a chance to clear `deviceLost` itself. Without
169
+ * that, `renderer.init(); await renderer.whenReady();` — the recovery shape
170
+ * `init()` already revokes readiness synchronously for — would reject inside
171
+ * the microtask window on a renderer that is being brought back up.
172
+ *
173
+ * Scoping it here rather than clearing `deviceLost` in `init()` keeps the
174
+ * flag meaning exactly one thing everywhere else: `render()`, the pick path
175
+ * and `getGPUDevice()` must stay shut for the OLD device across that same
176
+ * window, and clearing early would let frames run against dead GPU objects
177
+ * (and, on Safari, re-latch and re-notify the loss they already reported).
178
+ */
179
+ private deviceLostGeneration;
116
180
  /** Retained so a listener registered AFTER the loss still learns of it. */
117
181
  private deviceLostInfo;
118
182
  private deviceLostListeners;
@@ -226,15 +290,51 @@ export declare class Renderer {
226
290
  * the async WebGPU init resolves — should `await renderer.whenReady()`
227
291
  * before `beginPointCloudStream`, which otherwise throws
228
292
  * "Renderer not initialized".
293
+ *
294
+ * REJECTS (with an `Error` whose `name` is `RendererDestroyedError`) if
295
+ * `destroy()` runs while the caller is waiting, or if it already ran and no
296
+ * `init()` has been started since. It never resolves against a destroyed
297
+ * renderer — that is what this method exists to prevent — so the only
298
+ * alternative would be a promise that never settles, which suspends the
299
+ * caller's async frame permanently and takes everything the frame captured
300
+ * with it. The viewer reaches that state on an ordinary path: `Viewport`
301
+ * builds a NEW `Renderer` per mount and destroys the old one in its effect
302
+ * cleanup, so a `destroy()` there is FINAL for the instance a consumer
303
+ * captured — a point-cloud drop that straddles a layout swap or a
304
+ * StrictMode remount would otherwise hang mid-load, with no error, forever.
305
+ * Callers should handle the rejection as "the target went away", not as a
306
+ * load failure.
307
+ *
308
+ * It also REJECTS (`RendererDeviceLostError`) while the GPU device is lost.
309
+ * The device is what this method promises, and a lost one cannot serve the
310
+ * call the caller is waiting to make — `getGPUDevice()` returns null, so
311
+ * `beginPointCloudStream` throws "Renderer not initialized" the moment the
312
+ * wait resolves. The third outcome is the one `destroy()` already ruled out:
313
+ * parking a waiter that only a host-initiated `init()` could ever settle,
314
+ * and that the viewer's usual response to a loss (drop this renderer, build
315
+ * a new one) guarantees will never come. Unlike the destroyed case this is
316
+ * NOT final — a later `init()` on the same instance re-arms the wait
317
+ * synchronously, so "retry after re-init" is a contract callers can act on,
318
+ * which is why the two rejections carry different names.
229
319
  */
230
320
  whenReady(): Promise<void>;
231
321
  private markReady;
322
+ /**
323
+ * Fail every parked `whenReady()` waiter with `error`. Called by `destroy()`
324
+ * and by `handleDeviceLost()` — the two events after which nothing this
325
+ * instance does on its own can make the wait true. NOT by `teardown()`,
326
+ * whose waiters belong to the re-init running it and must survive to be
327
+ * flushed by it.
328
+ */
329
+ private rejectReadyWaiters;
232
330
  /**
233
331
  * Subscribe to non-intentional GPU device loss (driver reset / VRAM
234
332
  * exhaustion — NOT an intentional `destroy()`). Fired at most once per
235
- * device. After it fires, `render()` is a no-op until the renderer is
236
- * re-initialised, so the typical response is to dispose this renderer and
237
- * reload the model. Returns an unsubscribe function.
333
+ * device. After it fires, `render()` is a no-op and the renderer reports
334
+ * itself un-ready (`isReady()` false, `whenReady()` rejecting with
335
+ * `RendererDeviceLostError`) until it is re-initialised, so the typical
336
+ * response is to dispose this renderer and reload the model. Returns an
337
+ * unsubscribe function.
238
338
  *
239
339
  * Camera and model state live on the CPU (JS) and survive device loss, so a
240
340
  * reload restores the model at its current orientation — the loss is a GPU
@@ -773,7 +873,24 @@ export declare class Renderer {
773
873
  */
774
874
  getPipeline(): RenderPipeline | null;
775
875
  /**
776
- * Check if renderer is fully initialized and ready to use
876
+ * Check if renderer is fully initialized and ready to use.
877
+ *
878
+ * `ready` is part of the test, not decoration: between `init()` being called
879
+ * and its queued body running, the device and pipeline still belong to the
880
+ * PREVIOUS init and are about to be destroyed, so the other two conditions
881
+ * alone would report a renderer that is on its way out as usable.
882
+ *
883
+ * So is the device-loss check. A lost device is never torn down —
884
+ * `WebGPUDevice.destroy()` is the only thing that nulls the handle and an
885
+ * involuntary loss (driver reset / VRAM exhaustion / GPU-process crash)
886
+ * never calls it — so `isInitialized()` stays true, the pipeline stays
887
+ * non-null, and `ready` stays set from the init that completed before the
888
+ * loss. All three conditions therefore still hold while `render()` is a
889
+ * no-op and `getGPUDevice()` returns null: the renderer would report itself
890
+ * usable through this third door alone. Unlike the two revocations above
891
+ * this one needs no generation scoping — an `init()` clears `ready`
892
+ * synchronously, so a latch left standing until the queued body clears it
893
+ * cannot make this method spuriously false in the meantime.
777
894
  */
778
895
  isReady(): boolean;
779
896
  /**
@@ -807,8 +924,37 @@ export declare class Renderer {
807
924
  * post-processing buffers, section-plane renderers, and snap caches.
808
925
  * After calling this method the renderer is no longer usable.
809
926
  * Safe to call multiple times (idempotent).
927
+ *
928
+ * An `init()` still in flight is invalidated too. It is parked on
929
+ * `await device.init(...)`, and without the generation bump below it resumes
930
+ * after this returns, allocates a complete replacement GPU stack that nothing
931
+ * references, and re-publishes `ready` — resolving `whenReady()` waiters
932
+ * against a renderer the host has already torn down (#2465). The bump is what
933
+ * `initOnce()` re-checks after its await, and what makes `markReady()` refuse
934
+ * the stale completion.
935
+ *
936
+ * This is why the teardown itself lives in `teardown()`: `initOnce()` runs it
937
+ * on the PREVIOUS init's objects as part of its own re-init, and routing that
938
+ * through here would have every init invalidate its own generation, leaving
939
+ * `whenReady()` pending forever.
940
+ *
941
+ * Anyone parked in `whenReady()` is FAILED rather than left pending. Nothing
942
+ * after this call can make the wait true — the invalidation above is exactly
943
+ * what stops the in-flight init from publishing readiness, and a host that
944
+ * remounts builds a new `Renderer` rather than re-initialising this one — so
945
+ * leaving the promise unsettled suspends the caller's async frame for the
946
+ * lifetime of the page. `apps/viewer`'s point-cloud drop is one of those
947
+ * frames: it captured this instance before the teardown, and would stop
948
+ * mid-load with the spinner still up and no error to report. See
949
+ * `whenReady()` for the rejection contract.
810
950
  */
811
951
  destroy(): void;
952
+ /**
953
+ * Release every GPU object this renderer owns, WITHOUT invalidating an
954
+ * in-flight init. Callers: the public `destroy()` (which invalidates first)
955
+ * and `initOnce()`, tearing down the previous init before building its own.
956
+ */
957
+ private teardown;
812
958
  /**
813
959
  * Get the canvas element
814
960
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}