Description

When we set up the draw calls for ISM with GPU LOD selection we submit a draw call per LOD.
For this we calculate the minimum and maximum possible LOD with a call to ComputeLODForMeshes() in FRelevancePacket::ComputeRelevance().
This call takes the instance radius and the primitive bounds, and calculates the LOD for an instance at the near and far bounds.
This isn't strictly correct because it doesn't take into account any per instance scales, so we may end up with a LOD range that is smaller than it should be.
This can result in some instances having LOD clamped to the range in the final GPU LOD selection.
A more correct approach would be to have already gathered the min and max instance scale (or radius), and do the calculation with those.
Note that this will require recalculating the min and max on ISM updates which can be performance sensitive for large instance counts (similar to recalculating total bounds).

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-219727 in the post.

0
Login to Vote

Backlogged
ComponentUE - Graphics Features
Target Fix5.6
CreatedJul 19, 2024
UpdatedJul 23, 2024
View Jira Issue