From licensee:
We are using the legacy HLOD system in our game. With 5.5 there was a change to FSceneProxyBase::DrawStaticElementsInternal() where the implementation was removed (https://github.com/EpicGames/UnrealEngine/commit/5739cb4af91a567636130f3e834340688ce64f81#diff-f40cf666070ac7a046890af0c957a44e9d339333c98708b037434702d9133aeb). This means that the FPrimitiveSceneInfo structure for nanite-enabled HLODs no longer have their StaticMeshes and StaticMeshRelevances properties set.
The code at FLODSceneTree::UpdateVisibilityStates() contains an early out if !NodeMeshRelevances.IsValidIndex(0), which means the HLODs are always rendered.
We have a workaround in FLODSceneTree::UpdateVisibilityStates.
Replace
if (NodeVisibility.UpdateCount == UpdateCount || !NodeMeshRelevances.IsValidIndex(0))
with
if (NodeVisibility.UpdateCount == UpdateCount)
and then
const bool bIsDitheredTransition = NodeMeshRelevances[0].bDitheredLODTransition;
with
const bool bIsDitheredTransition = NodeMeshRelevances.IsValidIndex(0) ? NodeMeshRelevances[0].bDitheredLODTransition : false;
This removes the dependency on the NodeMeshRelevances data. It's only used to determine bIsDitheredTransition.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-256684 in the post.
1 |
Component | UE - World Creation - Worldbuilding Tools - HLOD |
---|---|
Target Fix | 5.7 |
Created | Mar 17, 2025 |
---|---|
Updated | Mar 18, 2025 |