Optionalwidth: numberOptionalheight: numberPick object at screen coordinates.
When pointNodes is non-empty the picker draws point splats into
the same r32uint target as the meshes (sharing the depth buffer so
occlusion is correct). Point hits set bit 31 of the readback value;
the decoder distinguishes mesh vs point from that flag.
Returns PickResult with {expressId, modelIndex} for both kinds.
For point hits, expressId is the federated globalId of the asset
(already correct for hover/selection plumbing — no remapping needed).
Returns null after picker teardown or device loss, including loss between successful mapping and consumption of the mapped range (#6881).
OptionalpointNodes: readonly PointPickNode[]OptionalpointSizing: PointPickSizingOptionalinstancedTemplates: readonly InstancedTemplateGPU[]Optionalclip: PickClipState | nullOptionalpointRteSnapshot: RelativeToEyeSnapshotRectangle pick: render the pick pass once, then read back every
texel inside [x0, y0]..[x1, y1] and dedupe the hit set. Returns
a Set<expressId> for both meshes and point clouds.
Used by the Shift+drag rectangle-selection UI; not meant for sustained use because the readback grows with rect area. A 800×600 rect = 480k pixels = ~2 MB transfer, fine for one-shot but we'd want a GPU-side dedupe for sustained marquee selection.
Returns an empty set once destroy() has run — or if the device dies
mid-readback — for the same reasons Picker.pick returns null.
OptionalpointNodes: readonly PointPickNode[]OptionalpointSizing: PointPickSizingOptionalinstancedTemplates: readonly InstancedTemplateGPU[]Optionalclip: PickClipState | nullOptionalpointRteSnapshot: RelativeToEyeSnapshotOptionalclip: PickClipState | null
Destroy all GPU resources held by this picker. After calling this method the picker is no longer usable. Safe to call multiple times.