@ifc-lite/renderer 1.36.0 → 1.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contribution-cull.d.ts +19 -0
- package/dist/contribution-cull.d.ts.map +1 -1
- package/dist/contribution-cull.js +48 -0
- package/dist/contribution-cull.js.map +1 -1
- package/dist/device.d.ts +22 -0
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +35 -2
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -5
- package/dist/index.js.map +1 -1
- package/dist/instanced-render.d.ts +31 -0
- package/dist/instanced-render.d.ts.map +1 -1
- package/dist/instanced-render.js +45 -0
- package/dist/instanced-render.js.map +1 -1
- package/dist/render-stats.d.ts +10 -0
- package/dist/render-stats.d.ts.map +1 -1
- package/dist/render-stats.js.map +1 -1
- package/dist/scene.d.ts +25 -1
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +74 -8
- package/dist/scene.js.map +1 -1
- package/package.json +3 -3
|
@@ -71,5 +71,24 @@ export declare function resolveContributionThresholdPx(options: ContributionCull
|
|
|
71
71
|
* the camera is the frustum test's job, not this one's. Degenerate/empty
|
|
72
72
|
* bounds project to 0 and are culled at any positive threshold.
|
|
73
73
|
*/
|
|
74
|
+
/**
|
|
75
|
+
* Conservative projected radius (device pixels) of the LARGEST single
|
|
76
|
+
* occurrence of a GPU-instanced template.
|
|
77
|
+
*
|
|
78
|
+
* A template's occurrences are scattered inside `unionMin..unionMax` (the
|
|
79
|
+
* union of their world AABBs), so the union box itself is useless for
|
|
80
|
+
* contribution culling — bolts spread across a 100m model union to a
|
|
81
|
+
* model-sized box that never reads small. What CAN be bounded is any single
|
|
82
|
+
* occurrence: its projected radius is at most `maxOccRadius` (the largest
|
|
83
|
+
* occurrence bounding-sphere radius) projected at the SMALLEST view depth any
|
|
84
|
+
* occurrence can have, which is the union box's nearest point along the view
|
|
85
|
+
* direction. If even that upper bound is below the pixel threshold, no
|
|
86
|
+
* occurrence can exceed it and the whole template is safely skippable.
|
|
87
|
+
*
|
|
88
|
+
* Fails open (Infinity) whenever a bound cannot be established: degenerate
|
|
89
|
+
* camera, non-finite radius, or the nearest possible occurrence overlapping
|
|
90
|
+
* the camera plane (minDepth <= maxOccRadius).
|
|
91
|
+
*/
|
|
92
|
+
export declare function projectedInstancedRadiusPx(unionMin: readonly [number, number, number], unionMax: readonly [number, number, number], maxOccRadius: number, cam: CullCameraState): number;
|
|
74
93
|
export declare function projectedAabbRadiusPx(min: readonly [number, number, number], max: readonly [number, number, number], cam: CullCameraState): number;
|
|
75
94
|
//# sourceMappingURL=contribution-cull.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contribution-cull.d.ts","sourceRoot":"","sources":["../src/contribution-cull.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,uEAAuE;IACvE,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,IAAI,EAAE,aAAa,GAAG,cAAc,CAAC;IACrC,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,GAAG,SAAS,EAC5C,WAAW,EAAE,OAAO,GACnB,MAAM,CAKR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,eAAe,GACnB,MAAM,CAiCR"}
|
|
1
|
+
{"version":3,"file":"contribution-cull.d.ts","sourceRoot":"","sources":["../src/contribution-cull.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,uEAAuE;IACvE,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,IAAI,EAAE,aAAa,GAAG,cAAc,CAAC;IACrC,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,GAAG,SAAS,EAC5C,WAAW,EAAE,OAAO,GACnB,MAAM,CAKR;AAED;;;;;;;;;;;GAWG;AACH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC3C,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC3C,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,eAAe,GACnB,MAAM,CA4BR;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,eAAe,GACnB,MAAM,CAiCR"}
|
|
@@ -25,6 +25,54 @@ export function resolveContributionThresholdPx(options, interacting) {
|
|
|
25
25
|
* the camera is the frustum test's job, not this one's. Degenerate/empty
|
|
26
26
|
* bounds project to 0 and are culled at any positive threshold.
|
|
27
27
|
*/
|
|
28
|
+
/**
|
|
29
|
+
* Conservative projected radius (device pixels) of the LARGEST single
|
|
30
|
+
* occurrence of a GPU-instanced template.
|
|
31
|
+
*
|
|
32
|
+
* A template's occurrences are scattered inside `unionMin..unionMax` (the
|
|
33
|
+
* union of their world AABBs), so the union box itself is useless for
|
|
34
|
+
* contribution culling — bolts spread across a 100m model union to a
|
|
35
|
+
* model-sized box that never reads small. What CAN be bounded is any single
|
|
36
|
+
* occurrence: its projected radius is at most `maxOccRadius` (the largest
|
|
37
|
+
* occurrence bounding-sphere radius) projected at the SMALLEST view depth any
|
|
38
|
+
* occurrence can have, which is the union box's nearest point along the view
|
|
39
|
+
* direction. If even that upper bound is below the pixel threshold, no
|
|
40
|
+
* occurrence can exceed it and the whole template is safely skippable.
|
|
41
|
+
*
|
|
42
|
+
* Fails open (Infinity) whenever a bound cannot be established: degenerate
|
|
43
|
+
* camera, non-finite radius, or the nearest possible occurrence overlapping
|
|
44
|
+
* the camera plane (minDepth <= maxOccRadius).
|
|
45
|
+
*/
|
|
46
|
+
export function projectedInstancedRadiusPx(unionMin, unionMax, maxOccRadius, cam) {
|
|
47
|
+
if (!Number.isFinite(maxOccRadius))
|
|
48
|
+
return Infinity;
|
|
49
|
+
const halfViewportPx = cam.viewportHeightPx * 0.5;
|
|
50
|
+
if (!(halfViewportPx > 0))
|
|
51
|
+
return Infinity;
|
|
52
|
+
if (cam.mode === 'orthographic') {
|
|
53
|
+
if (!(cam.orthoHalfHeight > 0))
|
|
54
|
+
return Infinity;
|
|
55
|
+
return (maxOccRadius / cam.orthoHalfHeight) * halfViewportPx;
|
|
56
|
+
}
|
|
57
|
+
const dirLenSq = cam.viewDir.x * cam.viewDir.x + cam.viewDir.y * cam.viewDir.y + cam.viewDir.z * cam.viewDir.z;
|
|
58
|
+
if (!(dirLenSq > 0.5) || !Number.isFinite(dirLenSq))
|
|
59
|
+
return Infinity;
|
|
60
|
+
// Minimum view depth over the union box: per axis, the corner that
|
|
61
|
+
// minimizes the dot product with viewDir.
|
|
62
|
+
const nx = cam.viewDir.x >= 0 ? unionMin[0] : unionMax[0];
|
|
63
|
+
const ny = cam.viewDir.y >= 0 ? unionMin[1] : unionMax[1];
|
|
64
|
+
const nz = cam.viewDir.z >= 0 ? unionMin[2] : unionMax[2];
|
|
65
|
+
const minDepth = (nx - cam.eye.x) * cam.viewDir.x +
|
|
66
|
+
(ny - cam.eye.y) * cam.viewDir.y +
|
|
67
|
+
(nz - cam.eye.z) * cam.viewDir.z;
|
|
68
|
+
// An occurrence could reach the camera plane: no valid upper bound.
|
|
69
|
+
if (!(minDepth > maxOccRadius))
|
|
70
|
+
return Infinity;
|
|
71
|
+
const tanHalfFov = Math.tan(cam.fovYRadians * 0.5);
|
|
72
|
+
if (!(tanHalfFov > 0))
|
|
73
|
+
return Infinity;
|
|
74
|
+
return (maxOccRadius / (minDepth * tanHalfFov)) * halfViewportPx;
|
|
75
|
+
}
|
|
28
76
|
export function projectedAabbRadiusPx(min, max, cam) {
|
|
29
77
|
const dx = max[0] - min[0];
|
|
30
78
|
const dy = max[1] - min[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contribution-cull.js","sourceRoot":"","sources":["../src/contribution-cull.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contribution-cull.js","sourceRoot":"","sources":["../src/contribution-cull.ts"],"names":[],"mappings":"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"}
|
package/dist/device.d.ts
CHANGED
|
@@ -14,6 +14,18 @@ export declare class WebGPUDevice {
|
|
|
14
14
|
/** Async GPU validation errors (not caught by try-catch) */
|
|
15
15
|
_uncapturedErrorCount: number;
|
|
16
16
|
_lastUncapturedError: string;
|
|
17
|
+
/**
|
|
18
|
+
* Notified when the GPU device is lost for a reason OTHER than intentional
|
|
19
|
+
* teardown (`reason === 'destroyed'`) — e.g. a driver reset from the OS GPU
|
|
20
|
+
* watchdog (Windows TDR) or VRAM exhaustion on a weak/integrated GPU. Once a
|
|
21
|
+
* device is lost every GPU resource created from it is dead, so the renderer
|
|
22
|
+
* cannot present again until it is fully re-initialised. Consumers subscribe
|
|
23
|
+
* (see `Renderer.onDeviceLost`) to react — e.g. reload the model — instead of
|
|
24
|
+
* leaving a permanently blank canvas.
|
|
25
|
+
*/
|
|
26
|
+
private deviceLostHandler;
|
|
27
|
+
/** Guards against firing the handler more than once for a single device. */
|
|
28
|
+
private deviceLostFired;
|
|
17
29
|
/**
|
|
18
30
|
* Initialize WebGPU device and canvas context
|
|
19
31
|
*/
|
|
@@ -42,6 +54,16 @@ export declare class WebGPUDevice {
|
|
|
42
54
|
*/
|
|
43
55
|
getCurrentTexture(): GPUTexture | null;
|
|
44
56
|
getDevice(): GPUDevice;
|
|
57
|
+
/**
|
|
58
|
+
* Register the callback fired when this device is lost for a non-intentional
|
|
59
|
+
* reason (see `deviceLostHandler`). Only one handler is kept; the renderer
|
|
60
|
+
* owns it and fans out to its own subscribers. Set before `init()` so a loss
|
|
61
|
+
* during the very first frames is not missed.
|
|
62
|
+
*/
|
|
63
|
+
onDeviceLost(handler: (info: {
|
|
64
|
+
message: string;
|
|
65
|
+
reason: string;
|
|
66
|
+
}) => void): void;
|
|
45
67
|
/**
|
|
46
68
|
* Max 2D texture dimension reported by the GPU adapter. WebGPU's spec floor is 8192;
|
|
47
69
|
* iGPUs and most desktop GPUs report 8192 or 16384. Render targets / depth textures
|
package/dist/device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,UAAU,CAAa;IAC/B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAK;IAClC,oBAAoB,EAAE,MAAM,CAAM;IAElC;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,UAAU,CAAa;IAC/B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAK;IAClC,oBAAoB,EAAE,MAAM,CAAM;IAElC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB,CAAsE;IAC/F,4EAA4E;IAC5E,OAAO,CAAC,eAAe,CAAkB;IAEzC;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6EpD;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAoBxB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAM3B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;OAGG;IACH,aAAa,IAAI,OAAO;IAWxB;;;OAGG;IACH,iBAAiB,IAAI,UAAU,GAAG,IAAI;IAgBtC,SAAS,IAAI,SAAS;IAOtB;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;IAIhF;;;;OAIG;IACH,sBAAsB,IAAI,MAAM;IAIhC,UAAU,IAAI,gBAAgB;IAO9B,SAAS,IAAI,gBAAgB;IAI7B,aAAa,IAAI,OAAO;CAGzB"}
|
package/dist/device.js
CHANGED
|
@@ -17,10 +17,26 @@ export class WebGPUDevice {
|
|
|
17
17
|
/** Async GPU validation errors (not caught by try-catch) */
|
|
18
18
|
_uncapturedErrorCount = 0;
|
|
19
19
|
_lastUncapturedError = '';
|
|
20
|
+
/**
|
|
21
|
+
* Notified when the GPU device is lost for a reason OTHER than intentional
|
|
22
|
+
* teardown (`reason === 'destroyed'`) — e.g. a driver reset from the OS GPU
|
|
23
|
+
* watchdog (Windows TDR) or VRAM exhaustion on a weak/integrated GPU. Once a
|
|
24
|
+
* device is lost every GPU resource created from it is dead, so the renderer
|
|
25
|
+
* cannot present again until it is fully re-initialised. Consumers subscribe
|
|
26
|
+
* (see `Renderer.onDeviceLost`) to react — e.g. reload the model — instead of
|
|
27
|
+
* leaving a permanently blank canvas.
|
|
28
|
+
*/
|
|
29
|
+
deviceLostHandler = null;
|
|
30
|
+
/** Guards against firing the handler more than once for a single device. */
|
|
31
|
+
deviceLostFired = false;
|
|
20
32
|
/**
|
|
21
33
|
* Initialize WebGPU device and canvas context
|
|
22
34
|
*/
|
|
23
35
|
async init(canvas) {
|
|
36
|
+
// Each init() begins a fresh GPUDevice lifetime. Clear the once-per-device
|
|
37
|
+
// guard so a destroy()+init() re-entry can still report a later loss (the
|
|
38
|
+
// previous device's `lost` promise already resolved and set this true).
|
|
39
|
+
this.deviceLostFired = false;
|
|
24
40
|
if (!navigator.gpu) {
|
|
25
41
|
throw new Error('WebGPU not available');
|
|
26
42
|
}
|
|
@@ -66,12 +82,20 @@ export class WebGPUDevice {
|
|
|
66
82
|
this._uncapturedErrorCount++;
|
|
67
83
|
};
|
|
68
84
|
// Handle device lost - mark context as needing reconfiguration
|
|
69
|
-
// Use type assertion as 'lost' may not be in all WebGPU type definitions
|
|
85
|
+
// Use type assertion as 'lost'/'reason' may not be in all WebGPU type definitions
|
|
70
86
|
const deviceWithLost = this.device;
|
|
71
87
|
if (deviceWithLost.lost) {
|
|
72
88
|
deviceWithLost.lost.then((info) => {
|
|
73
|
-
|
|
89
|
+
const reason = info.reason ?? 'unknown';
|
|
90
|
+
console.warn('[WebGPU] Device lost:', info.message, `(reason: ${reason})`);
|
|
74
91
|
this.contextConfigured = false;
|
|
92
|
+
// `reason === 'destroyed'` is an intentional teardown (a `device.destroy()`
|
|
93
|
+
// call or the page dropping the device) — not a fault, so don't wake the
|
|
94
|
+
// recovery path. Any other reason is a real loss the consumer must react to.
|
|
95
|
+
if (reason !== 'destroyed' && !this.deviceLostFired) {
|
|
96
|
+
this.deviceLostFired = true;
|
|
97
|
+
this.deviceLostHandler?.({ message: info.message, reason });
|
|
98
|
+
}
|
|
75
99
|
});
|
|
76
100
|
}
|
|
77
101
|
this.configureContext();
|
|
@@ -153,6 +177,15 @@ export class WebGPUDevice {
|
|
|
153
177
|
}
|
|
154
178
|
return this.device;
|
|
155
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Register the callback fired when this device is lost for a non-intentional
|
|
182
|
+
* reason (see `deviceLostHandler`). Only one handler is kept; the renderer
|
|
183
|
+
* owns it and fans out to its own subscribers. Set before `init()` so a loss
|
|
184
|
+
* during the very first frames is not missed.
|
|
185
|
+
*/
|
|
186
|
+
onDeviceLost(handler) {
|
|
187
|
+
this.deviceLostHandler = handler;
|
|
188
|
+
}
|
|
156
189
|
/**
|
|
157
190
|
* Max 2D texture dimension reported by the GPU adapter. WebGPU's spec floor is 8192;
|
|
158
191
|
* iGPUs and most desktop GPUs report 8192 or 16384. Render targets / depth textures
|
package/dist/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,MAAM,OAAO,YAAY;IACf,OAAO,GAAsB,IAAI,CAAC;IAClC,MAAM,GAAqB,IAAI,CAAC;IAChC,OAAO,GAA4B,IAAI,CAAC;IACxC,MAAM,GAAqB,YAAY,CAAC;IACxC,MAAM,GAA6B,IAAI,CAAC;IACxC,SAAS,GAAW,CAAC,CAAC;IACtB,UAAU,GAAW,CAAC,CAAC;IACvB,iBAAiB,GAAY,KAAK,CAAC;IACnC,UAAU,GAAW,CAAC,CAAC;IAC/B,4DAA4D;IAC5D,qBAAqB,GAAW,CAAC,CAAC;IAClC,oBAAoB,GAAW,EAAE,CAAC;IAElC;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAyB;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,gFAAgF;QAChF,8EAA8E;QAC9E,kFAAkF;QAClF,mFAAmF;QACnF,kFAAkF;QAClF,iFAAiF;QACjF,gFAAgF;QAChF,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;YAC1B,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,EAAE,2BAA2B,EAAE,CAAC;YACxC,cAAc,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAClF,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,+EAA+E;YAC/E,0EAA0E;YAC1E,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAA4B,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YACjD,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;YAChC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC,CAAC;QAEF,+DAA+D;QAC/D,
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -85,6 +85,15 @@ export declare class Renderer {
|
|
|
85
85
|
/** Set true at the end of `init()`; gates `whenReady()`. */
|
|
86
86
|
private ready;
|
|
87
87
|
private readyWaiters;
|
|
88
|
+
/**
|
|
89
|
+
* Set once the GPU device is lost for a non-intentional reason (driver
|
|
90
|
+
* reset / VRAM exhaustion — see `WebGPUDevice`). Every GPU resource is then
|
|
91
|
+
* dead, so `render()` becomes a no-op (it would only spew validation errors)
|
|
92
|
+
* until the host re-initialises the renderer. Consumers learn of this via
|
|
93
|
+
* `onDeviceLost` and typically respond by reloading the model.
|
|
94
|
+
*/
|
|
95
|
+
private deviceLost;
|
|
96
|
+
private deviceLostListeners;
|
|
88
97
|
private deviationPipeline;
|
|
89
98
|
/**
|
|
90
99
|
* Cache of which mesh-set the BVH was built from. We rebuild on
|
|
@@ -127,6 +136,24 @@ export declare class Renderer {
|
|
|
127
136
|
*/
|
|
128
137
|
whenReady(): Promise<void>;
|
|
129
138
|
private markReady;
|
|
139
|
+
/**
|
|
140
|
+
* Subscribe to non-intentional GPU device loss (driver reset / VRAM
|
|
141
|
+
* exhaustion — NOT an intentional `destroy()`). Fired at most once per
|
|
142
|
+
* device. After it fires, `render()` is a no-op until the renderer is
|
|
143
|
+
* re-initialised, so the typical response is to dispose this renderer and
|
|
144
|
+
* reload the model. Returns an unsubscribe function.
|
|
145
|
+
*
|
|
146
|
+
* Camera and model state live on the CPU (JS) and survive device loss, so a
|
|
147
|
+
* reload restores the model at its current orientation — the loss is a GPU
|
|
148
|
+
* event, not a data loss.
|
|
149
|
+
*/
|
|
150
|
+
onDeviceLost(listener: (info: {
|
|
151
|
+
message: string;
|
|
152
|
+
reason: string;
|
|
153
|
+
}) => void): () => void;
|
|
154
|
+
/** True once the GPU device has been lost for a non-intentional reason. */
|
|
155
|
+
isDeviceLost(): boolean;
|
|
156
|
+
private handleDeviceLost;
|
|
130
157
|
/**
|
|
131
158
|
* Replace all loaded point clouds with `assets`.
|
|
132
159
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/index.js
CHANGED
|
@@ -59,7 +59,7 @@ import { PickingManager } from './picking-manager.js';
|
|
|
59
59
|
import { RaycastEngine } from './raycast-engine.js';
|
|
60
60
|
import { PostProcessor } from './post-processor.js';
|
|
61
61
|
import { InteractionEffectsGovernor } from './interaction-effects-governor.js';
|
|
62
|
-
import { resolveContributionThresholdPx, projectedAabbRadiusPx } from './contribution-cull.js';
|
|
62
|
+
import { resolveContributionThresholdPx, projectedAabbRadiusPx, projectedInstancedRadiusPx } from './contribution-cull.js';
|
|
63
63
|
import { EdlPass } from './edl-pass.js';
|
|
64
64
|
import { SkyPass } from './sky-pass.js';
|
|
65
65
|
import { skyShaderSource } from './shaders/sky.wgsl.js';
|
|
@@ -125,6 +125,15 @@ export class Renderer {
|
|
|
125
125
|
/** Set true at the end of `init()`; gates `whenReady()`. */
|
|
126
126
|
ready = false;
|
|
127
127
|
readyWaiters = [];
|
|
128
|
+
/**
|
|
129
|
+
* Set once the GPU device is lost for a non-intentional reason (driver
|
|
130
|
+
* reset / VRAM exhaustion — see `WebGPUDevice`). Every GPU resource is then
|
|
131
|
+
* dead, so `render()` becomes a no-op (it would only spew validation errors)
|
|
132
|
+
* until the host re-initialises the renderer. Consumers learn of this via
|
|
133
|
+
* `onDeviceLost` and typically respond by reloading the model.
|
|
134
|
+
*/
|
|
135
|
+
deviceLost = false;
|
|
136
|
+
deviceLostListeners = new Set();
|
|
128
137
|
deviationPipeline = null;
|
|
129
138
|
/**
|
|
130
139
|
* Cache of which mesh-set the BVH was built from. We rebuild on
|
|
@@ -186,6 +195,13 @@ export class Renderer {
|
|
|
186
195
|
* Initialize renderer
|
|
187
196
|
*/
|
|
188
197
|
async init() {
|
|
198
|
+
// Clear the lost flag so a re-init (destroy()+init() on the same instance)
|
|
199
|
+
// resumes rendering instead of staying a permanent no-op from an earlier loss.
|
|
200
|
+
this.deviceLost = false;
|
|
201
|
+
// Subscribe before the device exists so a loss during the first frames
|
|
202
|
+
// is never missed — the handler is only invoked when `device.lost`
|
|
203
|
+
// actually resolves (a real fault), long after init in practice.
|
|
204
|
+
this.device.onDeviceLost((info) => this.handleDeviceLost(info));
|
|
189
205
|
await this.device.init(this.canvas);
|
|
190
206
|
// Get canvas dimensions (use pixel dimensions if set, otherwise use CSS dimensions)
|
|
191
207
|
// and clamp to the GPU's max 2D texture dimension so the initial pipeline allocations
|
|
@@ -276,6 +292,39 @@ export class Renderer {
|
|
|
276
292
|
for (const w of waiters)
|
|
277
293
|
w();
|
|
278
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Subscribe to non-intentional GPU device loss (driver reset / VRAM
|
|
297
|
+
* exhaustion — NOT an intentional `destroy()`). Fired at most once per
|
|
298
|
+
* device. After it fires, `render()` is a no-op until the renderer is
|
|
299
|
+
* re-initialised, so the typical response is to dispose this renderer and
|
|
300
|
+
* reload the model. Returns an unsubscribe function.
|
|
301
|
+
*
|
|
302
|
+
* Camera and model state live on the CPU (JS) and survive device loss, so a
|
|
303
|
+
* reload restores the model at its current orientation — the loss is a GPU
|
|
304
|
+
* event, not a data loss.
|
|
305
|
+
*/
|
|
306
|
+
onDeviceLost(listener) {
|
|
307
|
+
this.deviceLostListeners.add(listener);
|
|
308
|
+
return () => this.deviceLostListeners.delete(listener);
|
|
309
|
+
}
|
|
310
|
+
/** True once the GPU device has been lost for a non-intentional reason. */
|
|
311
|
+
isDeviceLost() {
|
|
312
|
+
return this.deviceLost;
|
|
313
|
+
}
|
|
314
|
+
handleDeviceLost(info) {
|
|
315
|
+
if (this.deviceLost)
|
|
316
|
+
return;
|
|
317
|
+
this.deviceLost = true;
|
|
318
|
+
console.warn('[Renderer] GPU device lost — halting rendering until re-init:', info.message);
|
|
319
|
+
for (const listener of this.deviceLostListeners) {
|
|
320
|
+
try {
|
|
321
|
+
listener(info);
|
|
322
|
+
}
|
|
323
|
+
catch (e) {
|
|
324
|
+
console.error('[Renderer] onDeviceLost listener threw:', e);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
279
328
|
/**
|
|
280
329
|
* Replace all loaded point clouds with `assets`.
|
|
281
330
|
*
|
|
@@ -881,6 +930,12 @@ export class Renderer {
|
|
|
881
930
|
}
|
|
882
931
|
render(options = {}) {
|
|
883
932
|
this._renderCallCount++;
|
|
933
|
+
// A lost device leaves every pipeline/buffer dead; rendering would only
|
|
934
|
+
// emit a stream of validation errors. Stay quiet until re-init.
|
|
935
|
+
if (this.deviceLost) {
|
|
936
|
+
this._renderSkipCount++;
|
|
937
|
+
return;
|
|
938
|
+
}
|
|
884
939
|
if (!this.device.isInitialized() || !this.pipeline) {
|
|
885
940
|
this._renderSkipCount++;
|
|
886
941
|
return;
|
|
@@ -933,6 +988,9 @@ export class Renderer {
|
|
|
933
988
|
let frameBatchesContributionCulled = 0;
|
|
934
989
|
let frameBatchesNotResident = 0;
|
|
935
990
|
let frameBatchesAtLod1 = 0;
|
|
991
|
+
let frameInstancedDrawn = 0;
|
|
992
|
+
let frameInstancedFrustumCulled = 0;
|
|
993
|
+
let frameInstancedContributionCulled = 0;
|
|
936
994
|
// Residency ages are measured in RENDERED frames (idle never ages out).
|
|
937
995
|
this.scene.beginResidencyFrame();
|
|
938
996
|
// Capture renders restore evicted batches SYNCHRONOUSLY so isolation
|
|
@@ -1830,7 +1888,40 @@ export class Renderer {
|
|
|
1830
1888
|
// IFC Z-up→WebGL Y-up swap, so the uniform's model is unused here;
|
|
1831
1889
|
// we reuse the frame's viewProj + section + flags from `tpl`.
|
|
1832
1890
|
const instancedTemplates = this.scene.getInstancedTemplates();
|
|
1891
|
+
// Cull templates ONCE per frame; the transparent instanced
|
|
1892
|
+
// sub-pass below reuses this list. Frustum: the union of the
|
|
1893
|
+
// occurrences' world AABBs off-screen ⇒ every occurrence is.
|
|
1894
|
+
// Contribution: the LARGEST occurrence projected at the union
|
|
1895
|
+
// box's nearest view depth is an upper bound for any single
|
|
1896
|
+
// occurrence — bolts-scattered-everywhere templates cull as
|
|
1897
|
+
// soon as no bolt can exceed the pixel threshold, even though
|
|
1898
|
+
// the union box itself is model-sized. Templates with a
|
|
1899
|
+
// selected occurrence are exempt so the highlight can't vanish.
|
|
1900
|
+
// CATIA-class models put ~97% of draw calls in this pass, so
|
|
1901
|
+
// this is where interactive frame cost lives (issue #1682).
|
|
1902
|
+
let visibleInstanced = instancedTemplates;
|
|
1833
1903
|
if (instancedTemplates.length > 0) {
|
|
1904
|
+
const kept = [];
|
|
1905
|
+
for (const it of instancedTemplates) {
|
|
1906
|
+
if (it.bounds) {
|
|
1907
|
+
if (!FrustumUtils.isAABBVisible(frustum, it.bounds)) {
|
|
1908
|
+
frameInstancedFrustumCulled++;
|
|
1909
|
+
continue;
|
|
1910
|
+
}
|
|
1911
|
+
if (contribThresholdPx > 0 &&
|
|
1912
|
+
cullCam &&
|
|
1913
|
+
it.selectedCount === 0 &&
|
|
1914
|
+
projectedInstancedRadiusPx(it.bounds.min, it.bounds.max, it.maxOccRadius, cullCam) <
|
|
1915
|
+
contribThresholdPx) {
|
|
1916
|
+
frameInstancedContributionCulled++;
|
|
1917
|
+
continue;
|
|
1918
|
+
}
|
|
1919
|
+
}
|
|
1920
|
+
kept.push(it);
|
|
1921
|
+
}
|
|
1922
|
+
visibleInstanced = kept;
|
|
1923
|
+
}
|
|
1924
|
+
if (visibleInstanced.length > 0) {
|
|
1834
1925
|
// Opaque instanced pass. flags.x bit 2 marks "instanced pass" so the
|
|
1835
1926
|
// shader routes per-instance opacity: opaque (or selected) occurrences
|
|
1836
1927
|
// draw here; translucent ones (lens/x-ray/compare overrides) are
|
|
@@ -1839,12 +1930,13 @@ export class Renderer {
|
|
|
1839
1930
|
pass.setPipeline(this.pipeline.getInstancedPipeline());
|
|
1840
1931
|
pass.setBindGroup(0, this.pipeline.getBindGroup());
|
|
1841
1932
|
pass.setBindGroup(1, this.pipeline.getEnvironmentBindGroup());
|
|
1842
|
-
for (const it of
|
|
1933
|
+
for (const it of visibleInstanced) {
|
|
1843
1934
|
pass.setVertexBuffer(0, it.vertexBuffer);
|
|
1844
1935
|
pass.setVertexBuffer(1, it.instanceBuffer);
|
|
1845
1936
|
pass.setIndexBuffer(it.indexBuffer, 'uint32');
|
|
1846
1937
|
pass.drawIndexed(it.indexCount, it.instanceCount);
|
|
1847
1938
|
frameDrawCalls++;
|
|
1939
|
+
frameInstancedDrawn++;
|
|
1848
1940
|
}
|
|
1849
1941
|
pass.setPipeline(this.pipeline.getPipeline());
|
|
1850
1942
|
// The TRANSPARENT instanced sub-pass is drawn later, alongside the
|
|
@@ -2019,16 +2111,15 @@ export class Renderer {
|
|
|
2019
2111
|
// a complete depth buffer. Only runs when an override actually made some
|
|
2020
2112
|
// occurrence translucent (otherwise zero cost). flags.x bit 3 flips the
|
|
2021
2113
|
// shader's opacity routing so only translucent occurrences draw here.
|
|
2022
|
-
const instancedTransparent = this.scene.getInstancedTemplates();
|
|
2023
2114
|
const instancedTransparentPipeline = this.pipeline.getInstancedTransparentPipeline();
|
|
2024
|
-
if (
|
|
2115
|
+
if (visibleInstanced.length > 0 &&
|
|
2025
2116
|
this.scene.hasTransparentInstances() &&
|
|
2026
2117
|
instancedTransparentPipeline !== null) {
|
|
2027
2118
|
this.pipeline.writeRawUniforms(tpl, 0x4 | 0x8);
|
|
2028
2119
|
pass.setPipeline(instancedTransparentPipeline);
|
|
2029
2120
|
pass.setBindGroup(0, this.pipeline.getBindGroup());
|
|
2030
2121
|
pass.setBindGroup(1, this.pipeline.getEnvironmentBindGroup());
|
|
2031
|
-
for (const it of
|
|
2122
|
+
for (const it of visibleInstanced) {
|
|
2032
2123
|
pass.setVertexBuffer(0, it.vertexBuffer);
|
|
2033
2124
|
pass.setVertexBuffer(1, it.instanceBuffer);
|
|
2034
2125
|
pass.setIndexBuffer(it.indexBuffer, 'uint32');
|
|
@@ -2358,6 +2449,9 @@ export class Renderer {
|
|
|
2358
2449
|
batchesContributionCulled: frameBatchesContributionCulled,
|
|
2359
2450
|
batchesNotResident: frameBatchesNotResident,
|
|
2360
2451
|
batchesAtLod1: frameBatchesAtLod1,
|
|
2452
|
+
instancedDrawn: frameInstancedDrawn,
|
|
2453
|
+
instancedFrustumCulled: frameInstancedFrustumCulled,
|
|
2454
|
+
instancedContributionCulled: frameInstancedContributionCulled,
|
|
2361
2455
|
timestamp: performance.now(),
|
|
2362
2456
|
};
|
|
2363
2457
|
// GPU residency budget (issue #1682 phase 3a): evict least-recently
|