[PCG GPU] Removed Points Still Counted in GPU Scene Instance Count

I wanted to ask whether the following behavior is intended when using GPU point culling together with the GPU Static Mesh Spawner.

I start with 5,000 points and remove 2,000 points using a custom HLSL node on the GPU or the Cull Points Outside Actor Bounds (GPU) node. This leaves 3,000 points, which are correctly rendered when passed to a GPU Static Mesh Spawner.

However, the resulting PCGProceduralISMComponent still reports 5,000 instances in the Details panel, and the GPU Scene also appears to register 5,000 instances. Interestingly, this behavior changes depending on the Mesh Selector Type:

  • With PCGMeshSelectorWeighted :5,000 instances are reported in the PCGProceduralISMComponent.
  • The GPU Scene also appears to contain 5,000 instances.
  • Only the remaining 3,000 points are actually rendered.
  • With PCGMeshSelectorByAttribute: The PCGProceduralISMComponent correctly reports 3,000 instances.
  • The GPU Scene also appears to contain the correct 3,000 instances.

This seems somewhat counterintuitive to me, especially when looking at the comment in PCGStaticMeshSpawner.ucf:

// Static mesh spawner kernel. Selects a primitive either using a primitive cumulative distribution function (CDF) or by an attribute, and packs attributes in custom floats.
// Passes through points to output.
 
// When spawning by attribute, we don't know in advance how many instances of each mesh will be spawned, so the worst case NumPoints * NumPrims is allocated in the GPU Scene.

Based on this comment, I would have expected PCGMeshSelectorByAttribute to potentially allocate more instances, rather than PCGMeshSelectorWeighted retaining the original point count. So my questions are:

  1. Is it expected that GPU-culling points does not reduce the allocated/registered instance count when using PCGMeshSelectorWeighted?
  2. Is the difference between PCGMeshSelectorWeighted and PCGMeshSelectorByAttribute intentional?
  3. Is there something conceptually incorrect about my setup or understanding of how GPU-culling and the GPU Static Mesh Spawner interact?
  4. If the GPU Scene still contains the original 5,000 instances in the Weighted case, does that have any performance/memory implications, even though only 3,000 instances are ultimately rendered?

I would appreciate some clarification on whether this is intended behavior or potentially an issue with the GPU Static Mesh Spawner.

[Attachment Removed]

Steps to Reproduce[Attachment Removed]

Thank you! This answers all my questions perfectly.

[Attachment Removed]