@ifc-lite/renderer 6.0.1 → 6.3.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 (206) hide show
  1. package/README.md +23 -0
  2. package/dist/ao-pass.d.ts +0 -16
  3. package/dist/ao-pass.d.ts.map +1 -1
  4. package/dist/ao-pass.js +2 -0
  5. package/dist/ao-pass.js.map +1 -1
  6. package/dist/camera-animation.d.ts +1 -1
  7. package/dist/camera-animation.d.ts.map +1 -1
  8. package/dist/camera-animation.js +11 -11
  9. package/dist/camera-animation.js.map +1 -1
  10. package/dist/camera-controls.d.ts +0 -21
  11. package/dist/camera-controls.d.ts.map +1 -1
  12. package/dist/camera-controls.js +8 -90
  13. package/dist/camera-controls.js.map +1 -1
  14. package/dist/camera-inertia.d.ts +27 -0
  15. package/dist/camera-inertia.d.ts.map +1 -0
  16. package/dist/camera-inertia.js +33 -0
  17. package/dist/camera-inertia.js.map +1 -0
  18. package/dist/camera-surface-zoom.d.ts +1 -1
  19. package/dist/camera-zoom.d.ts +55 -0
  20. package/dist/camera-zoom.d.ts.map +1 -0
  21. package/dist/camera-zoom.js +138 -0
  22. package/dist/camera-zoom.js.map +1 -0
  23. package/dist/camera.d.ts.map +1 -1
  24. package/dist/camera.js +8 -0
  25. package/dist/camera.js.map +1 -1
  26. package/dist/deviation/deviation-computer.d.ts +5 -1
  27. package/dist/deviation/deviation-computer.d.ts.map +1 -1
  28. package/dist/deviation/deviation-computer.js +13 -6
  29. package/dist/deviation/deviation-computer.js.map +1 -1
  30. package/dist/deviation/deviation-readback.d.ts +16 -3
  31. package/dist/deviation/deviation-readback.d.ts.map +1 -1
  32. package/dist/deviation/deviation-readback.js +46 -36
  33. package/dist/deviation/deviation-readback.js.map +1 -1
  34. package/dist/deviation/deviation-statistics-kernel.d.ts +111 -0
  35. package/dist/deviation/deviation-statistics-kernel.d.ts.map +1 -0
  36. package/dist/deviation/deviation-statistics-kernel.js +303 -0
  37. package/dist/deviation/deviation-statistics-kernel.js.map +1 -0
  38. package/dist/deviation/deviation-statistics.d.ts +100 -0
  39. package/dist/deviation/deviation-statistics.d.ts.map +1 -0
  40. package/dist/deviation/deviation-statistics.js +100 -0
  41. package/dist/deviation/deviation-statistics.js.map +1 -0
  42. package/dist/device-recovery.d.ts.map +1 -1
  43. package/dist/device-recovery.js +5 -0
  44. package/dist/device-recovery.js.map +1 -1
  45. package/dist/device.d.ts +0 -3
  46. package/dist/device.d.ts.map +1 -1
  47. package/dist/device.js +5 -1
  48. package/dist/device.js.map +1 -1
  49. package/dist/edge-pass.d.ts +0 -12
  50. package/dist/edge-pass.d.ts.map +1 -1
  51. package/dist/edge-pass.js +3 -0
  52. package/dist/edge-pass.js.map +1 -1
  53. package/dist/edl-pass.d.ts +0 -21
  54. package/dist/edl-pass.d.ts.map +1 -1
  55. package/dist/edl-pass.js +23 -0
  56. package/dist/edl-pass.js.map +1 -1
  57. package/dist/frame-timing-gpu.d.ts +11 -15
  58. package/dist/frame-timing-gpu.d.ts.map +1 -1
  59. package/dist/frame-timing-gpu.js +57 -26
  60. package/dist/frame-timing-gpu.js.map +1 -1
  61. package/dist/gpu-counters.d.ts +30 -0
  62. package/dist/gpu-counters.d.ts.map +1 -0
  63. package/dist/gpu-counters.js +84 -0
  64. package/dist/gpu-counters.js.map +1 -0
  65. package/dist/gpu-static-upload.d.ts.map +1 -1
  66. package/dist/gpu-static-upload.js +2 -0
  67. package/dist/gpu-static-upload.js.map +1 -1
  68. package/dist/index.d.ts +33 -21
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +71 -60
  71. package/dist/index.js.map +1 -1
  72. package/dist/pick-rte-snapshot.d.ts +4 -0
  73. package/dist/pick-rte-snapshot.d.ts.map +1 -1
  74. package/dist/pick-rte-snapshot.js +10 -0
  75. package/dist/pick-rte-snapshot.js.map +1 -1
  76. package/dist/picker-depth-sample.d.ts +9 -0
  77. package/dist/picker-depth-sample.d.ts.map +1 -0
  78. package/dist/picker-depth-sample.js +63 -0
  79. package/dist/picker-depth-sample.js.map +1 -0
  80. package/dist/picker-readbacks.d.ts +10 -1
  81. package/dist/picker-readbacks.d.ts.map +1 -1
  82. package/dist/picker-readbacks.js +30 -1
  83. package/dist/picker-readbacks.js.map +1 -1
  84. package/dist/picker.d.ts +4 -4
  85. package/dist/picker.d.ts.map +1 -1
  86. package/dist/picker.js +77 -102
  87. package/dist/picker.js.map +1 -1
  88. package/dist/picking-manager.d.ts +5 -2
  89. package/dist/picking-manager.d.ts.map +1 -1
  90. package/dist/picking-manager.js +32 -11
  91. package/dist/picking-manager.js.map +1 -1
  92. package/dist/pipeline.d.ts +8 -0
  93. package/dist/pipeline.d.ts.map +1 -1
  94. package/dist/pipeline.js +22 -0
  95. package/dist/pipeline.js.map +1 -1
  96. package/dist/pointcloud/point-cloud-keyed-chunks.d.ts +23 -0
  97. package/dist/pointcloud/point-cloud-keyed-chunks.d.ts.map +1 -0
  98. package/dist/pointcloud/point-cloud-keyed-chunks.js +44 -0
  99. package/dist/pointcloud/point-cloud-keyed-chunks.js.map +1 -0
  100. package/dist/pointcloud/point-cloud-node.d.ts +5 -1
  101. package/dist/pointcloud/point-cloud-node.d.ts.map +1 -1
  102. package/dist/pointcloud/point-cloud-node.js +8 -4
  103. package/dist/pointcloud/point-cloud-node.js.map +1 -1
  104. package/dist/pointcloud/point-cloud-placement.d.ts +6 -0
  105. package/dist/pointcloud/point-cloud-placement.d.ts.map +1 -1
  106. package/dist/pointcloud/point-cloud-placement.js +8 -0
  107. package/dist/pointcloud/point-cloud-placement.js.map +1 -1
  108. package/dist/pointcloud/point-cloud-ray-transform.d.ts +17 -8
  109. package/dist/pointcloud/point-cloud-ray-transform.d.ts.map +1 -1
  110. package/dist/pointcloud/point-cloud-ray-transform.js +17 -13
  111. package/dist/pointcloud/point-cloud-ray-transform.js.map +1 -1
  112. package/dist/pointcloud/point-cloud-renderer.d.ts +10 -8
  113. package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -1
  114. package/dist/pointcloud/point-cloud-renderer.js +20 -31
  115. package/dist/pointcloud/point-cloud-renderer.js.map +1 -1
  116. package/dist/pointcloud/point-cloud-stream-lifecycle.d.ts +8 -1
  117. package/dist/pointcloud/point-cloud-stream-lifecycle.d.ts.map +1 -1
  118. package/dist/pointcloud/point-cloud-stream-lifecycle.js +17 -2
  119. package/dist/pointcloud/point-cloud-stream-lifecycle.js.map +1 -1
  120. package/dist/pointcloud/point-cloud-uniforms.d.ts +11 -0
  121. package/dist/pointcloud/point-cloud-uniforms.d.ts.map +1 -1
  122. package/dist/pointcloud/point-cloud-uniforms.js +8 -0
  123. package/dist/pointcloud/point-cloud-uniforms.js.map +1 -1
  124. package/dist/post-pass-chain.d.ts +2 -0
  125. package/dist/post-pass-chain.d.ts.map +1 -1
  126. package/dist/post-pass-chain.js +1 -1
  127. package/dist/post-pass-chain.js.map +1 -1
  128. package/dist/raycast-point-cloud-query.d.ts.map +1 -1
  129. package/dist/raycast-point-cloud-query.js +11 -1
  130. package/dist/raycast-point-cloud-query.js.map +1 -1
  131. package/dist/relative-to-eye.d.ts +3 -0
  132. package/dist/relative-to-eye.d.ts.map +1 -1
  133. package/dist/relative-to-eye.js +4 -1
  134. package/dist/relative-to-eye.js.map +1 -1
  135. package/dist/renderer-frame-timing.d.ts +21 -0
  136. package/dist/renderer-frame-timing.d.ts.map +1 -0
  137. package/dist/renderer-frame-timing.js +104 -0
  138. package/dist/renderer-frame-timing.js.map +1 -0
  139. package/dist/renderer-viewport.d.ts +13 -7
  140. package/dist/renderer-viewport.d.ts.map +1 -1
  141. package/dist/renderer-viewport.js +15 -7
  142. package/dist/renderer-viewport.js.map +1 -1
  143. package/dist/scene-batch-rebuild.d.ts +7 -0
  144. package/dist/scene-batch-rebuild.d.ts.map +1 -1
  145. package/dist/scene-batch-rebuild.js +12 -0
  146. package/dist/scene-batch-rebuild.js.map +1 -1
  147. package/dist/scene-contents.d.ts +3 -2
  148. package/dist/scene-contents.d.ts.map +1 -1
  149. package/dist/scene-flush.d.ts +43 -0
  150. package/dist/scene-flush.d.ts.map +1 -0
  151. package/dist/scene-flush.js +103 -0
  152. package/dist/scene-flush.js.map +1 -0
  153. package/dist/scene-geometry.d.ts.map +1 -1
  154. package/dist/scene-geometry.js +2 -0
  155. package/dist/scene-geometry.js.map +1 -1
  156. package/dist/scene.d.ts +26 -27
  157. package/dist/scene.d.ts.map +1 -1
  158. package/dist/scene.js +66 -109
  159. package/dist/scene.js.map +1 -1
  160. package/dist/selection-mask-pass.d.ts +2 -27
  161. package/dist/selection-mask-pass.d.ts.map +1 -1
  162. package/dist/selection-mask-pass.js +44 -39
  163. package/dist/selection-mask-pass.js.map +1 -1
  164. package/dist/selection-mask-pipelines.d.ts +3 -3
  165. package/dist/selection-mask-pipelines.d.ts.map +1 -1
  166. package/dist/selection-mask-pipelines.js +11 -8
  167. package/dist/selection-mask-pipelines.js.map +1 -1
  168. package/dist/shaders/depth-nudge.wgsl.d.ts +67 -0
  169. package/dist/shaders/depth-nudge.wgsl.d.ts.map +1 -0
  170. package/dist/shaders/depth-nudge.wgsl.js +130 -0
  171. package/dist/shaders/depth-nudge.wgsl.js.map +1 -0
  172. package/dist/shaders/ghost.wgsl.d.ts +2 -0
  173. package/dist/shaders/ghost.wgsl.d.ts.map +1 -0
  174. package/dist/shaders/ghost.wgsl.js +46 -0
  175. package/dist/shaders/ghost.wgsl.js.map +1 -0
  176. package/dist/shaders/main.wgsl.d.ts +1 -1
  177. package/dist/shaders/main.wgsl.d.ts.map +1 -1
  178. package/dist/shaders/main.wgsl.js +6 -4
  179. package/dist/shaders/main.wgsl.js.map +1 -1
  180. package/dist/shaders/section-2d-overlay.wgsl.d.ts +1 -16
  181. package/dist/shaders/section-2d-overlay.wgsl.d.ts.map +1 -1
  182. package/dist/shaders/section-2d-overlay.wgsl.js +6 -6
  183. package/dist/shaders/section-2d-overlay.wgsl.js.map +1 -1
  184. package/dist/shaders/selection-mask.wgsl.d.ts +2 -10
  185. package/dist/shaders/selection-mask.wgsl.d.ts.map +1 -1
  186. package/dist/shaders/selection-mask.wgsl.js +9 -42
  187. package/dist/shaders/selection-mask.wgsl.js.map +1 -1
  188. package/dist/shaders/symbolic-overlay.wgsl.d.ts +1 -1
  189. package/dist/shaders/symbolic-overlay.wgsl.d.ts.map +1 -1
  190. package/dist/shaders/symbolic-overlay.wgsl.js +5 -4
  191. package/dist/shaders/symbolic-overlay.wgsl.js.map +1 -1
  192. package/dist/shadow-pass.d.ts +0 -19
  193. package/dist/shadow-pass.d.ts.map +1 -1
  194. package/dist/shadow-pass.js +19 -0
  195. package/dist/shadow-pass.js.map +1 -1
  196. package/dist/test/frame-timing-device.d.ts +17 -0
  197. package/dist/test/frame-timing-device.d.ts.map +1 -0
  198. package/dist/test/frame-timing-device.js +70 -0
  199. package/dist/test/frame-timing-device.js.map +1 -0
  200. package/dist/types.d.ts +2 -0
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/xray-alpha.d.ts +8 -0
  203. package/dist/xray-alpha.d.ts.map +1 -1
  204. package/dist/xray-alpha.js +23 -0
  205. package/dist/xray-alpha.js.map +1 -1
  206. package/package.json +3 -2
@@ -2,7 +2,7 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  /** Lifecycle handling for asynchronous GPU picker readbacks. */
5
- /** Only device teardown is an expected `AbortError`; real map faults propagate. */
5
+ /** Picker/device teardown may abort pending maps; real map faults propagate. */
6
6
  export function isReadbackAbort(err) {
7
7
  return typeof err === 'object' && err !== null && err.name === 'AbortError';
8
8
  }
@@ -17,4 +17,33 @@ export function releaseReadbacks(...buffers) {
17
17
  }
18
18
  }
19
19
  }
20
+ /** Pending readbacks belong to one picker; teardown and late finally share release. */
21
+ export class PickerReadbackOwner {
22
+ pending = new Set();
23
+ deviceLost = false;
24
+ constructor(device) {
25
+ // Observe this exact device, including intentional destruction. A map may
26
+ // already have resolved when loss invalidates its mapped range (#6881).
27
+ // Minimal host/test devices may omit the asynchronous loss signal.
28
+ if (device.lost && typeof device.lost.then === 'function') {
29
+ void device.lost.then(() => {
30
+ this.deviceLost = true;
31
+ this.destroy();
32
+ });
33
+ }
34
+ }
35
+ track(...buffers) {
36
+ for (const buffer of buffers)
37
+ this.pending.add(buffer);
38
+ }
39
+ release(...buffers) {
40
+ for (const buffer of buffers) {
41
+ if (this.pending.delete(buffer))
42
+ releaseReadbacks(buffer);
43
+ }
44
+ }
45
+ destroy() {
46
+ this.release(...this.pending);
47
+ }
48
+ }
20
49
  //# sourceMappingURL=picker-readbacks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-readbacks.js","sourceRoot":"","sources":["../src/picker-readbacks.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,gEAAgE;AAEhE,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAA0B,CAAC,IAAI,KAAK,YAAY,CAAC;AACtG,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,gBAAgB,CAAC,GAAG,OAAoB;IACtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,8DAA8D,EAAE,GAAG,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"picker-readbacks.js","sourceRoot":"","sources":["../src/picker-readbacks.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,gEAAgE;AAEhE,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAA0B,CAAC,IAAI,KAAK,YAAY,CAAC;AACtG,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,gBAAgB,CAAC,GAAG,OAAoB;IACtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,8DAA8D,EAAE,GAAG,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,OAAO,mBAAmB;IACb,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;IAEhD,UAAU,GAAG,KAAK,CAAC;IAEnB,YAAY,MAAiB;QAC3B,0EAA0E;QAC1E,wEAAwE;QACxE,mEAAmE;QACnE,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1D,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,OAA6B;QACpC,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,GAAG,OAA6B;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF"}
package/dist/picker.d.ts CHANGED
@@ -22,6 +22,7 @@ export declare class Picker {
22
22
  private instancedPickBindGroup;
23
23
  private instancedUniformBuffer;
24
24
  private depthTexture;
25
+ private depthSample;
25
26
  private colorTexture;
26
27
  private uniformBuffer;
27
28
  private expressIdBuffer;
@@ -29,6 +30,7 @@ export declare class Picker {
29
30
  private maxMeshes;
30
31
  /** Set by `destroy()`; makes it idempotent and turns `pick`/`pickRect` into no-ops. */
31
32
  private destroyed;
33
+ private readonly readbacks;
32
34
  private pointPicker;
33
35
  private readonly uniformScratch;
34
36
  private readonly clipFlags;
@@ -47,10 +49,8 @@ export declare class Picker {
47
49
  * For point hits, expressId is the federated globalId of the asset
48
50
  * (already correct for hover/selection plumbing — no remapping needed).
49
51
  *
50
- * Returns null once `destroy()` has run — every texture and buffer below is
51
- * already freed, so the `mapAsync` readback could only reject. Also returns
52
- * null if the device dies *during* the readback, which no entry guard can
53
- * pre-empt (see {@link isReadbackAbort}).
52
+ * Returns null after picker teardown or device loss, including loss between
53
+ * successful mapping and consumption of the mapped range (#6881).
54
54
  */
55
55
  pick(x: number, y: number, width: number, height: number, meshes: Mesh[], viewProj: Float32Array, pointNodes?: ReadonlyArray<PointPickNode>, pointSizing?: PointPickSizing, instancedTemplates?: readonly InstancedTemplateGPU[], clip?: PickClipState | null, pointRteSnapshot?: RelativeToEyeSnapshot): Promise<PickResult | null>;
56
56
  updateUniforms(viewProj: Float32Array, clip?: PickClipState | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
package/dist/picker.js CHANGED
@@ -5,7 +5,8 @@ import { resolvePickSample, resolvePickedExpressId } from './pick-resolve.js';
5
5
  import { PointPicker, decodePickSample } from './point-picker.js';
6
6
  import { restoreRtePickWorld, unprojectPickSample } from './pick-world-position.js';
7
7
  import { writeFlatPickUniform, writeInstancedPickUniforms, writePickUniforms, } from './picker-rte-uniforms.js';
8
- import { isReadbackAbort, releaseReadbacks } from './picker-readbacks.js';
8
+ import { isReadbackAbort, PickerReadbackOwner } from './picker-readbacks.js';
9
+ import { PickDepthSample } from './picker-depth-sample.js';
9
10
  import { relativeToEyeWgsl } from './shaders/relative-to-eye.wgsl.js';
10
11
  import { drawInstanceRuns, uploadInstancedRteDeltas } from './instanced-rte.js';
11
12
  import { INSTANCED_RTE_DELTA_SLOT, INSTANCED_VERTEX_BUFFERS } from './instanced-vertex-layout.js';
@@ -17,6 +18,7 @@ export class Picker {
17
18
  instancedPickBindGroup = null;
18
19
  instancedUniformBuffer;
19
20
  depthTexture;
21
+ depthSample;
20
22
  colorTexture;
21
23
  uniformBuffer;
22
24
  expressIdBuffer;
@@ -24,6 +26,7 @@ export class Picker {
24
26
  maxMeshes = 100000; // Support up to 100K meshes (was 10K)
25
27
  /** Set by `destroy()`; makes it idempotent and turns `pick`/`pickRect` into no-ops. */
26
28
  destroyed = false;
29
+ readbacks;
27
30
  pointPicker = null;
28
31
  // Flat meshes each bind a dynamic 256-byte slot: RTE view projection +
29
32
  // model linear transform + clip state + split drawable origin. A single
@@ -35,6 +38,8 @@ export class Picker {
35
38
  constructor(device, width = 1, height = 1) {
36
39
  this.webgpuDevice = device;
37
40
  this.device = device.getDevice();
41
+ this.readbacks = new PickerReadbackOwner(this.device);
42
+ this.depthSample = new PickDepthSample(this.device);
38
43
  // Create textures for picking
39
44
  this.colorTexture = this.device.createTexture({
40
45
  size: { width, height },
@@ -44,10 +49,7 @@ export class Picker {
44
49
  this.depthTexture = this.device.createTexture({
45
50
  size: { width, height },
46
51
  format: 'depth32float',
47
- // COPY_SRC so we can read the depth texel at the click position
48
- // back to the CPU and unproject to recover the world-space hit
49
- // point for hover tooltips / measurements.
50
- usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC,
52
+ usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
51
53
  });
52
54
  // One dynamically-offset uniform slot per flat mesh. The buffer carries
53
55
  // `maxMeshes` slots so the command encoder can bind the immutable payload
@@ -297,20 +299,14 @@ export class Picker {
297
299
  * For point hits, expressId is the federated globalId of the asset
298
300
  * (already correct for hover/selection plumbing — no remapping needed).
299
301
  *
300
- * Returns null once `destroy()` has run — every texture and buffer below is
301
- * already freed, so the `mapAsync` readback could only reject. Also returns
302
- * null if the device dies *during* the readback, which no entry guard can
303
- * pre-empt (see {@link isReadbackAbort}).
302
+ * Returns null after picker teardown or device loss, including loss between
303
+ * successful mapping and consumption of the mapped range (#6881).
304
304
  */
305
305
  async pick(x, y, width, height, meshes, viewProj, pointNodes, pointSizing, instancedTemplates, clip, pointRteSnapshot) {
306
- if (this.destroyed)
306
+ if (this.destroyed || this.readbacks.deviceLost)
307
307
  return null;
308
308
  const encoder = this.renderPickPass(width, height, meshes, viewProj, pointNodes, pointSizing, instancedTemplates, clip, pointRteSnapshot);
309
- // Clamp the texel origin to the texture bounds. Math.floor(x/y) can
310
- // be -1 or equal to width/height on border clicks (and on
311
- // pointer-captured drags that leave the canvas), and either makes
312
- // copyTextureToBuffer reject the submit. pickRect already guards
313
- // this path; pick() needs the same.
309
+ // Border clicks and pointer-captured drags use the same clamped ID/depth texel.
314
310
  const sampleX = Math.max(0, Math.min(width - 1, Math.floor(x)));
315
311
  const sampleY = Math.max(0, Math.min(height - 1, Math.floor(y)));
316
312
  // Read pixel at click position. WebGPU requires bytesPerRow to be a
@@ -320,58 +316,39 @@ export class Picker {
320
316
  size: BYTES_PER_ROW,
321
317
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
322
318
  });
323
- encoder.copyTextureToBuffer({
324
- texture: this.colorTexture,
325
- origin: { x: sampleX, y: sampleY, z: 0 },
326
- }, { buffer: readBuffer, bytesPerRow: BYTES_PER_ROW, rowsPerImage: 1 }, { width: 1, height: 1 });
327
- // Depth readback for click-to-world unprojection. WebGPU forbids
328
- // partial copies from depth/stencil-format textures — the copy must
329
- // cover the entire subresource. So we copy the whole depth image
330
- // and index into the buffer client-side after mapping. depth32float
331
- // = 4 bytes per texel; bytesPerRow must still be a multiple of 256.
332
- const depthBytesPerRow = Math.ceil((width * 4) / 256) * 256;
333
- const depthBuffer = this.device.createBuffer({
334
- size: depthBytesPerRow * height,
335
- usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
336
- });
337
- encoder.copyTextureToBuffer({
338
- texture: this.depthTexture,
339
- origin: { x: 0, y: 0, z: 0 },
340
- aspect: 'depth-only',
341
- }, { buffer: depthBuffer, bytesPerRow: depthBytesPerRow, rowsPerImage: height }, { width, height });
342
- this.device.queue.submit([encoder.finish()]);
343
- // GPUMapMode.READ = 1 (WebGPU spec)
319
+ // The compute sample and ID copy share the render submission and staging
320
+ // buffer. Each pick owns its coordinates and output until mapping finishes.
321
+ this.readbacks.track(readBuffer);
322
+ let depthResources = [];
323
+ let sample;
324
+ let depth;
344
325
  try {
345
- await Promise.all([readBuffer.mapAsync(1), depthBuffer.mapAsync(1)]);
326
+ encoder.copyTextureToBuffer({
327
+ texture: this.colorTexture,
328
+ origin: { x: sampleX, y: sampleY, z: 0 },
329
+ }, { buffer: readBuffer, bytesPerRow: BYTES_PER_ROW, rowsPerImage: 1 }, { width: 1, height: 1 });
330
+ depthResources = this.depthSample.encode(encoder, this.depthTexture, sampleX, sampleY, readBuffer, 4);
331
+ this.readbacks.track(...depthResources);
332
+ this.device.queue.submit([encoder.finish()]);
333
+ await readBuffer.mapAsync(GPUMapMode.READ);
334
+ if (this.destroyed || this.readbacks.deviceLost)
335
+ return null;
336
+ const bytes = readBuffer.getMappedRange();
337
+ sample = new Uint32Array(bytes, 0, 1)[0];
338
+ depth = new Float32Array(bytes, 4, 1)[0];
346
339
  }
347
340
  catch (err) {
348
- // Free BOTH readbacks on every failure path, not just the aborted one.
349
- // `Promise.all` rejects the moment one map fails, so the other may have
350
- // succeeded and still be holding its mapped GPU allocation — rethrowing
351
- // without this leaks it for the life of the device.
352
- releaseReadbacks(readBuffer, depthBuffer);
353
- // The device died between submit and readback — see isReadbackAbort.
354
- if (!isReadbackAbort(err))
341
+ if (!this.readbacks.deviceLost && !isReadbackAbort(err))
355
342
  throw err;
356
343
  return null;
357
344
  }
358
- const sample = new Uint32Array(readBuffer.getMappedRange())[0];
359
- const depthBytes = new Uint8Array(depthBuffer.getMappedRange());
360
- const depthOffset = sampleY * depthBytesPerRow + sampleX * 4;
361
- const depth = new Float32Array(depthBytes.buffer, depthBytes.byteOffset + depthOffset, 1)[0];
362
- readBuffer.unmap();
363
- depthBuffer.unmap();
364
- readBuffer.destroy();
365
- depthBuffer.destroy();
345
+ finally {
346
+ this.readbacks.release(readBuffer, ...depthResources);
347
+ }
366
348
  const decoded = decodePickSample(sample);
367
349
  if (decoded.kind === 'none')
368
350
  return null;
369
- // Unproject (x, y, depth) → world space. Reverse-Z keeps depth in
370
- // [0, 1] (1 = near, 0 = far) — same NDC convention as the camera
371
- // raycaster, so MathUtils.transformPoint with the inverse viewProj
372
- // gives the world hit position directly.
373
- // Flat meshes, points and instanced occurrences all rasterise in the
374
- // captured RTE frame. Decode depth with that same immutable projection.
351
+ // Decode reverse-Z depth with the immutable RTE projection used to rasterise.
375
352
  const rteDecoded = decoded.kind === 'mesh' || decoded.kind === 'point' || decoded.kind === 'instanced';
376
353
  const projectedWorld = unprojectPickSample(rteDecoded && pointRteSnapshot ? pointRteSnapshot.getViewProjection().m : viewProj, sampleX, sampleY, width, height, depth);
377
354
  const worldXYZ = rteDecoded && pointRteSnapshot
@@ -398,7 +375,7 @@ export class Picker {
398
375
  * mid-readback — for the same reasons {@link Picker.pick} returns null.
399
376
  */
400
377
  async pickRect(x0, y0, x1, y1, width, height, meshes, viewProj, pointNodes, pointSizing, instancedTemplates, clip, pointRteSnapshot) {
401
- if (this.destroyed)
378
+ if (this.destroyed || this.readbacks.deviceLost)
402
379
  return new Set();
403
380
  // Normalise + clip rect to texture bounds.
404
381
  const lx = Math.max(0, Math.floor(Math.min(x0, x1)));
@@ -418,53 +395,53 @@ export class Picker {
418
395
  size: rowStride * rectH,
419
396
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
420
397
  });
421
- encoder.copyTextureToBuffer({
422
- texture: this.colorTexture,
423
- origin: { x: lx, y: ly, z: 0 },
424
- }, { buffer: readBuffer, bytesPerRow: rowStride, rowsPerImage: rectH }, { width: rectW, height: rectH });
425
- this.device.queue.submit([encoder.finish()]);
398
+ this.readbacks.track(readBuffer);
426
399
  try {
400
+ encoder.copyTextureToBuffer({
401
+ texture: this.colorTexture,
402
+ origin: { x: lx, y: ly, z: 0 },
403
+ }, { buffer: readBuffer, bytesPerRow: rowStride, rowsPerImage: rectH }, { width: rectW, height: rectH });
404
+ this.device.queue.submit([encoder.finish()]);
427
405
  await readBuffer.mapAsync(1);
406
+ if (this.destroyed || this.readbacks.deviceLost)
407
+ return new Set();
408
+ const view = new Uint32Array(readBuffer.getMappedRange());
409
+ const ids = new Set();
410
+ const stridePx = rowStride / 4;
411
+ for (let y = 0; y < rectH; y++) {
412
+ const row = y * stridePx;
413
+ for (let x = 0; x < rectW; x++) {
414
+ const sample = view[row + x];
415
+ if (sample === 0)
416
+ continue;
417
+ // Same three-way decode single-click uses — including the instanced
418
+ // case (the shader writes the express id straight into the sample) and
419
+ // the mesh case's (index + 1) offset. Both live in pick-resolve.ts and
420
+ // must not be re-implemented here.
421
+ //
422
+ // The bare id, not a PickResult: this returns a Set<expressId>, which
423
+ // has no room for a per-item result — a marquee that hits three panes
424
+ // of one curtain wall is one entry — and allocating a result per
425
+ // non-zero texel just to read `.expressId` off it dominated the rect.
426
+ // Single-click pick is the per-item surface.
427
+ //
428
+ // modelIndex is dropped for the same reason, which is why a point
429
+ // sample's owning asset (a linear scan, once per texel) is not resolved.
430
+ const expressId = resolvePickedExpressId(decodePickSample(sample), meshes);
431
+ if (expressId !== null)
432
+ ids.add(expressId);
433
+ }
434
+ }
435
+ return ids;
428
436
  }
429
437
  catch (err) {
430
- // Released on every failure path, not just the aborted one — a real
431
- // fault must not leak the readback's GPU allocation on its way out.
432
- releaseReadbacks(readBuffer);
433
- // The device died between submit and readback — see isReadbackAbort.
434
- if (!isReadbackAbort(err))
438
+ if (!this.readbacks.deviceLost && !isReadbackAbort(err))
435
439
  throw err;
436
440
  return new Set();
437
441
  }
438
- const view = new Uint32Array(readBuffer.getMappedRange());
439
- const ids = new Set();
440
- const stridePx = rowStride / 4;
441
- for (let y = 0; y < rectH; y++) {
442
- const row = y * stridePx;
443
- for (let x = 0; x < rectW; x++) {
444
- const sample = view[row + x];
445
- if (sample === 0)
446
- continue;
447
- // Same three-way decode single-click uses — including the instanced
448
- // case (the shader writes the express id straight into the sample) and
449
- // the mesh case's (index + 1) offset. Both live in pick-resolve.ts and
450
- // must not be re-implemented here.
451
- //
452
- // The bare id, not a PickResult: this returns a Set<expressId>, which
453
- // has no room for a per-item result — a marquee that hits three panes
454
- // of one curtain wall is one entry — and allocating a result per
455
- // non-zero texel just to read `.expressId` off it dominated the rect.
456
- // Single-click pick is the per-item surface.
457
- //
458
- // modelIndex is dropped for the same reason, which is why a point
459
- // sample's owning asset (a linear scan, once per texel) is not resolved.
460
- const expressId = resolvePickedExpressId(decodePickSample(sample), meshes);
461
- if (expressId !== null)
462
- ids.add(expressId);
463
- }
442
+ finally {
443
+ this.readbacks.release(readBuffer);
464
444
  }
465
- readBuffer.unmap();
466
- readBuffer.destroy();
467
- return ids;
468
445
  }
469
446
  /**
470
447
  * Render the picker pass into `colorTexture` + `depthTexture` and
@@ -484,10 +461,7 @@ export class Picker {
484
461
  this.depthTexture = this.device.createTexture({
485
462
  size: { width, height },
486
463
  format: 'depth32float',
487
- // COPY_SRC so single-pixel pick can read depth back for the
488
- // hover-XYZ unprojection. Rect pick doesn't sample depth but
489
- // costs nothing to keep the flag set.
490
- usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC,
464
+ usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
491
465
  });
492
466
  }
493
467
  // WebGPU texture views can't be reused after submit, so build fresh ones.
@@ -612,6 +586,7 @@ export class Picker {
612
586
  if (this.destroyed)
613
587
  return;
614
588
  this.destroyed = true;
589
+ this.readbacks.destroy();
615
590
  this.colorTexture.destroy();
616
591
  this.depthTexture.destroy();
617
592
  this.uniformBuffer.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare class PickingManager {
22
22
  private camera;
23
23
  private scene;
24
24
  private picker;
25
+ private pickerEpoch;
25
26
  private canvas;
26
27
  private createMeshFromDataFn;
27
28
  private pointPickProvider;
@@ -29,11 +30,13 @@ export declare class PickingManager {
29
30
  /**
30
31
  * The pick target size and CSS-px to texel scale. The pick pass renders at
31
32
  * the canvas's CSS size, not the device-pixel buffer (#5383): pointer input
32
- * only resolves CSS px, the single pick copies the WHOLE depth image back
33
- * (4x the bytes at DPR 2), and splat pick sizes stay in the draw's space.
33
+ * resolves CSS px, and splat pick sizes stay in the draw's space. The
34
+ * point readback samples only its selected ID/depth texel (#6881).
34
35
  * Clamped to 8192, the WebGPU-guaranteed `maxTextureDimension2D`.
35
36
  */
36
37
  private pickViewport;
38
+ /** A readback belongs to its picker installation and CSS mapping (#6881/#6882). */
39
+ private isPickRequestCurrent;
37
40
  /** Renderer wires this on init so the manager can fetch point nodes lazily. */
38
41
  setPointPickProvider(provider: PointPickProvider | null): void;
39
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"picking-manager.d.ts","sourceRoot":"","sources":["../src/picking-manager.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAC5B;IAAE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAChE,IAAI,CAAC;AAET,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,oBAAoB,CAAiD;IAC7E,OAAO,CAAC,iBAAiB,CAAkC;gBAGvD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,iBAAiB,EACzB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,gBAAgB,CAAC,IAAI,CAAC;IASxE;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAOpB,+EAA+E;IAC/E,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAgFhH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,QAAQ,CACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,EACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CA0F1B"}
1
+ {"version":3,"file":"picking-manager.d.ts","sourceRoot":"","sources":["../src/picking-manager.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAC5B;IAAE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAChE,IAAI,CAAC;AAST,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,oBAAoB,CAAiD;IAC7E,OAAO,CAAC,iBAAiB,CAAkC;gBAGvD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,iBAAiB,EACzB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,gBAAgB,CAAC,IAAI,CAAC;IASxE;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAOpB,mFAAmF;IACnF,OAAO,CAAC,oBAAoB;IAS5B,+EAA+E;IAC/E,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKtC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmFhH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,QAAQ,CACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,EACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CA8F1B"}
@@ -2,13 +2,14 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { isEntityVisible } from './entity-visibility.js';
5
- import { capturePointRteSnapshot, isPointRteSnapshotCurrent } from './pick-rte-snapshot.js';
5
+ import { capturePointRteSnapshot, isPointRteSnapshotCurrent, isPointRteFrameAvailable, pointRteInvalidationEpoch } from './pick-rte-snapshot.js';
6
6
  import { computeDrawingBufferSize } from './renderer-viewport.js';
7
7
  import { pickPieceKey, planPickMeshHydration } from './pick-mesh-budget.js';
8
8
  export class PickingManager {
9
9
  camera;
10
10
  scene;
11
11
  picker;
12
+ pickerEpoch = 0;
12
13
  canvas;
13
14
  createMeshFromDataFn;
14
15
  pointPickProvider = null;
@@ -22,8 +23,8 @@ export class PickingManager {
22
23
  /**
23
24
  * The pick target size and CSS-px to texel scale. The pick pass renders at
24
25
  * the canvas's CSS size, not the device-pixel buffer (#5383): pointer input
25
- * only resolves CSS px, the single pick copies the WHOLE depth image back
26
- * (4x the bytes at DPR 2), and splat pick sizes stay in the draw's space.
26
+ * resolves CSS px, and splat pick sizes stay in the draw's space. The
27
+ * point readback samples only its selected ID/depth texel (#6881).
27
28
  * Clamped to 8192, the WebGPU-guaranteed `maxTextureDimension2D`.
28
29
  */
29
30
  pickViewport() {
@@ -33,6 +34,15 @@ export class PickingManager {
33
34
  return null;
34
35
  return { width: size.width, height: size.height, scaleX: size.width / rect.width, scaleY: size.height / rect.height };
35
36
  }
37
+ /** A readback belongs to its picker installation and CSS mapping (#6881/#6882). */
38
+ isPickRequestCurrent(viewport, pickerEpoch, invalidationEpoch) {
39
+ const current = this.pickViewport();
40
+ return isPointRteFrameAvailable(this.camera)
41
+ && pointRteInvalidationEpoch(this.camera) === invalidationEpoch
42
+ && this.pickerEpoch === pickerEpoch && current !== null
43
+ && current.width === viewport.width && current.height === viewport.height
44
+ && current.scaleX === viewport.scaleX && current.scaleY === viewport.scaleY;
45
+ }
36
46
  /** Renderer wires this on init so the manager can fetch point nodes lazily. */
37
47
  setPointPickProvider(provider) {
38
48
  this.pointPickProvider = provider;
@@ -41,6 +51,8 @@ export class PickingManager {
41
51
  * Update the picker reference (e.g., after init)
42
52
  */
43
53
  setPicker(picker) {
54
+ if (this.picker !== picker)
55
+ this.pickerEpoch++;
44
56
  this.picker = picker;
45
57
  }
46
58
  /**
@@ -108,9 +120,11 @@ export class PickingManager {
108
120
  * These are scaled internally to match the actual canvas pixel dimensions.
109
121
  */
110
122
  async pick(x, y, options, clip) {
111
- if (!this.picker) {
123
+ if (!this.picker || !isPointRteFrameAvailable(this.camera)) {
112
124
  return null;
113
125
  }
126
+ const picker = this.picker, pickerEpoch = this.pickerEpoch;
127
+ const invalidationEpoch = pointRteInvalidationEpoch(this.camera);
114
128
  // Scale CSS pixel coordinates to pick-texture texels (see pickViewport).
115
129
  const viewport = this.pickViewport();
116
130
  if (!viewport) {
@@ -162,7 +176,9 @@ export class PickingManager {
162
176
  // delayed readback with a later camera placement: that turns a valid
163
177
  // click into an absolute-coordinate jump after navigation.
164
178
  const pointRteSnapshot = capturePointRteSnapshot(this.camera);
165
- const result = await this.picker.pick(scaledX, scaledY, viewport.width, viewport.height, meshes, viewProj, pointNodes, pointSizing, this.scene.getInstancedTemplates(), clip, pointRteSnapshot);
179
+ const result = await picker.pick(scaledX, scaledY, viewport.width, viewport.height, meshes, viewProj, pointNodes, pointSizing, this.scene.getInstancedTemplates(), clip, pointRteSnapshot);
180
+ if (!this.isPickRequestCurrent(viewport, pickerEpoch, invalidationEpoch))
181
+ return null;
166
182
  if (pointRteSnapshot
167
183
  && !isPointRteSnapshotCurrent(this.camera, pointRteSnapshot)) {
168
184
  return null;
@@ -199,8 +215,10 @@ export class PickingManager {
199
215
  * pick-mesh budget.
200
216
  */
201
217
  async pickRect(x0, y0, x1, y1, options, clip) {
202
- if (!this.picker)
218
+ if (!this.picker || !isPointRteFrameAvailable(this.camera))
203
219
  return new Set();
220
+ const picker = this.picker, pickerEpoch = this.pickerEpoch;
221
+ const invalidationEpoch = pointRteInvalidationEpoch(this.camera);
204
222
  const viewport = this.pickViewport();
205
223
  if (!viewport)
206
224
  return new Set();
@@ -236,16 +254,18 @@ export class PickingManager {
236
254
  let pointHits;
237
255
  const pointRteSnapshot = capturePointRteSnapshot(this.camera);
238
256
  try {
239
- pointHits = await this.picker.pickRect(sx0, sy0, sx1, sy1, viewport.width, viewport.height, [], this.camera.getViewProjMatrix().m, cpuPointSnap.nodes, cpuPointSnap.sizing, undefined, clip, pointRteSnapshot);
257
+ pointHits = await picker.pickRect(sx0, sy0, sx1, sy1, viewport.width, viewport.height, [], this.camera.getViewProjMatrix().m, cpuPointSnap.nodes, cpuPointSnap.sizing, undefined, clip, pointRteSnapshot);
240
258
  }
241
259
  catch (err) {
242
260
  // `picker.pickRect` rethrows any readback failure that is not a
243
261
  // device-loss abort. The box hits are already computed and this
244
262
  // branch could not throw at all before the point pass was added,
245
263
  // so degrade to them instead of failing the whole rectangle select.
246
- console.warn('[PickingManager] point-cloud rect pick failed; returning bounding-box hits only:', err);
247
- return boxHits;
264
+ console.warn('[PickingManager] point-cloud rect pick failed; returning current-viewport bounding-box hits only:', err);
265
+ return this.isPickRequestCurrent(viewport, pickerEpoch, invalidationEpoch) ? boxHits : new Set();
248
266
  }
267
+ if (!this.isPickRequestCurrent(viewport, pickerEpoch, invalidationEpoch))
268
+ return new Set();
249
269
  if (pointRteSnapshot && !isPointRteSnapshotCurrent(this.camera, pointRteSnapshot)) {
250
270
  return boxHits;
251
271
  }
@@ -258,8 +278,9 @@ export class PickingManager {
258
278
  const viewProj = this.camera.getViewProjMatrix().m;
259
279
  const pointSnap = this.pointPickProvider?.() ?? null;
260
280
  const pointRteSnapshot = capturePointRteSnapshot(this.camera);
261
- const hits = await this.picker.pickRect(sx0, sy0, sx1, sy1, viewport.width, viewport.height, meshes, viewProj, pointSnap?.nodes ?? undefined, pointSnap?.sizing ?? undefined, this.scene.getInstancedTemplates(), clip, pointRteSnapshot);
262
- return pointRteSnapshot && !isPointRteSnapshotCurrent(this.camera, pointRteSnapshot)
281
+ const hits = await picker.pickRect(sx0, sy0, sx1, sy1, viewport.width, viewport.height, meshes, viewProj, pointSnap?.nodes ?? undefined, pointSnap?.sizing ?? undefined, this.scene.getInstancedTemplates(), clip, pointRteSnapshot);
282
+ return !this.isPickRequestCurrent(viewport, pickerEpoch, invalidationEpoch)
283
+ || (pointRteSnapshot && !isPointRteSnapshotCurrent(this.camera, pointRteSnapshot))
263
284
  ? new Set()
264
285
  : hits;
265
286
  }