Hovering or clicking a particle never finds its owner object (particle pick broken under GPU particles) #481

Closed
opened 2026-10-06 09:30:24 +00:00 by sky_line · 1 comment
Owner

Symptom: hovering or clicking a particle (to find or select the object emitting it) never identifies the owner object.

Cause (from the octree audit, #474):

  • LLPipeline::lineSegmentIntersectParticle (pipeline.cpp ~1661-1701) walks PARTITION_PARTICLE.
  • Under GPU particles (RenderCleanParticles), CPU LLViewerPart / groups are never created (llviewerpartsim.cpp ~725-866), so that partition is near-empty.
  • On top of that, LLOctreeIntersect::check rejects any drawable that isn't isVisible() (llspatialpartition.cpp ~1195), and nothing sets visibility under Vulkan.
  • It's reached on every hover pick with pick_particle (lltoolpie.cpp ~208 → llviewerwindow.cpp ~6342) and from the debug raycast.

Fix: pick particles from the GPU particle pool, e.g. in the existing GPU pick pass or a small compute ray-vs-billboard test, returning the emitter's source object id. Or decide to drop the particle-owner pick. Either way, this unblocks deleting PARTITION_PARTICLE (#478).

**Symptom:** hovering or clicking a particle (to find or select the object emitting it) never identifies the owner object. **Cause (from the octree audit, #474):** - `LLPipeline::lineSegmentIntersectParticle` (pipeline.cpp ~1661-1701) walks `PARTITION_PARTICLE`. - Under GPU particles (`RenderCleanParticles`), CPU `LLViewerPart` / groups are never created (llviewerpartsim.cpp ~725-866), so that partition is near-empty. - On top of that, `LLOctreeIntersect::check` rejects any drawable that isn't `isVisible()` (llspatialpartition.cpp ~1195), and nothing sets visibility under Vulkan. - It's reached on every hover pick with `pick_particle` (lltoolpie.cpp ~208 → llviewerwindow.cpp ~6342) and from the debug raycast. **Fix:** pick particles from the GPU particle pool, e.g. in the existing GPU pick pass or a small compute ray-vs-billboard test, returning the emitter's source object id. Or decide to drop the particle-owner pick. Either way, this unblocks deleting `PARTITION_PARTICLE` (#478).
sky_line added this to the Slipstream project 2026-10-06 15:04:14 +00:00
Author
Owner

Shipped in 1.1.0 Beta 9 (v1.1.0-beta.9).

Shipped in 1.1.0 Beta 9 (v1.1.0-beta.9).
sky_line 2026-10-07 07:27:53 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#481
No description provided.