Severe Game Thread slowdown with Megaplants + Nanite Foliage at scale (UE 5.7.2)

Hi,

I’m running into a severe Game Thread performance issue when using Megaplants at scale in Unreal Engine 5.7.2, and I want to confirm whether this is expected behavior or a limitation/bug.


Setup

  • Unreal Engine 5.7.2

  • GPU: RTX 4070 (12 GB)

  • CPU: AMD Ryzen 7 5800X

  • RAM: 64 GB

  • Large open-world style level

  • PCG used for vegetation placement

  • Megaplants using Instanced Skinned Mesh Spawner

  • Extensive use of spline-based PCG blockers (roads, terrain features, mountains, etc.) to prevent spawning where vegetation is not needed

  • No AI

  • No NavMesh

  • No vehicle / Chaos Vehicle removed entirely


Important Note

Performance in the editor viewport is good and stable.
FPS only collapses when entering Play In Editor (PIE).


The Problem

As soon as Megaplants exist in the level at scale, Play In Editor drops to ~5–6 FPS.

Profiling consistently shows:

  • Game Thread: 180–550 ms

  • GPU Time: ~60–70 ms

  • FPS does not recover even when vegetation is hidden.

If I delete all Megaplants entirely, performance immediately returns to ~70–80 FPS and Game Thread drops to ~8–10 ms.

This suggests the cost is on the CPU/Game Thread simply from the existence of the Megaplants, not rendering.


Things I Have Tested (No Improvement)

  • Reduced PCG density (Points per square meter down to 0.05)

  • Heavy use of spline volumes to block PCG spawning around roads, mountains, and other non-vegetated areas

  • Split one large PCG volume into multiple smaller PCG volumes

  • Enabled Is Partitioned on all PCG components

  • Switched PCG Generation to On Demand

  • Cleared PCG link / baked PCG results and removed PCG actors

  • Disabled wind completely

  • Set Animation Min Screen Size to aggressive values (0.5+)

  • Disabled Contact Shadows

  • Set Shadow Quality = 0

  • Aggressive cull distances (80k–200k)

  • Increased texture streaming pool (up to 10 GB)

  • Hiding vegetation at runtime (Hidden In Game) has almost no effect

None of the above meaningfully reduces Game Thread cost.


Key Observation

Even after baking PCG and removing the PCG actor:

  • Having many Instanced Skeletal Mesh Megaplants in the world causes massive Game Thread cost.

  • Hiding them does not help.

  • Removing them entirely fixes the issue instantly.

This strongly suggests the CPU cost is related to skeletal mesh lifecycle / registration / ticking, not rendering.


Question

Is it expected that Megaplants using Instanced Skinned Meshes cannot be used at large open-world scale in runtime gameplay?

If so:

  • What is the intended runtime use case / scale?

  • Are Megaplants primarily meant for cinematics, small areas, or editor workflows?

If not:

  • Is this a known issue in 5.7.x?

  • Are there recommended settings or workflows to fully avoid Game Thread cost for distant Megaplants?


Thanks in advance — I’m happy to provide profiling captures or a repro project if needed.

From the readout it’s seem to be purely shadow casing, I assume you’re using Virtual Shadow Maps, so I’d look at your VSM debug in the viewport

I checked VSM debug and ShadowQuality=0.

VSM pages are stable (no invalidation churn), and disabling shadows entirely does not meaningfully improve FPS.

Even with ShadowQuality 0, Game Thread remains ~160–190 ms. Only fully removing Megaplants restores normal performance.

This strongly suggests the bottleneck is CPU-side cost from large numbers of Instanced Skeletal Mesh Megaplants (component ticking / transform updates), not shadow rendering itself. VSM seems to amplify GPU cost, but is not the root cause.

Ive seen videos on youtube where people have large scale forest and run around in the PIE mode without any issues.

Well, just going by your stat GPU on that screenshot, shadow depths was taking up most the GPU time so assume some kind of VSM issue. How does it work in standalone mode, I wouldn’t aways go by in-editor as that of course is more intensive.

Yes you are right about that. i will have to try and get back to you.

I tried it in standalone. still very bad performance.