# Landscape physical material updates cause CPU frame drops in Collision view 

**URL:** <https://forums.unrealengine.com/t/landscape-physical-material-updates-cause-cpu-frame-drops-in-collision-view/2745562>\
**Category:** Issues and Bug Reporting (Unreal Engine)\
**Tags:** frame, landscape-problems, unreal-engine, Landscape, visualization\
**Created:** [August 21, 2026, 3:52pm UTC](https://forums.unrealengine.com/t/landscape-physical-material-updates-cause-cpu-frame-drops-in-collision-view/2745562 "2026-08-21T15:52:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![e6ae6bd5589a4fa6b0217f358a971575](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@e6ae6bd5589a4fa6b0217f358a971575](https://forums.unrealengine.com/u/e6ae6bd5589a4fa6b0217f358a971575)\
**Post date:** [August 21, 2026, 3:52pm UTC](https://forums.unrealengine.com/t/landscape-physical-material-updates-cause-cpu-frame-drops-in-collision-view/2745562/1 "2026-08-21T15:52:50Z")

</div>

### Summary

In an Open World level (New Level \> Open World) containing multiple LandscapeStreamingProxy actors, a Chaos physical material update notification causes temporary CPU frame drops when viewport Collision Visualization (Show \> Collision or Player Collision) is enabled. In LandscapeModule.cpp, FLandscapeModule listens to FPhysicalMaterialManager::OnMaterialUpdated. When triggered, OnUpdatePhysicalMaterial unconditionally iterates over all loaded ULandscapeHeightfieldCollisionComponents via TObjectRange and calls MarkRenderStateDirty(), without checking if the component actually references the updated material. When Collision Visualization is active, SendAllEndOfFrameUpdates → DeferredRenderUpdates\_GameThread forces end-of-frame debug scene proxy rebuilds on the CPU across hundreds of components. Profiling via Unreal Insights confirms the bottleneck is purely CPU/GameThread-bound (tested on Intel Core i7-14700, 20 Cores / 28 Threads), while GPU load remains completely unaffected.

### What Type of Bug are you experiencing?

World Creation Tools

### Steps to Reproduce

1. In UE 5.7, create a level using the New Level \> Open World template (generating multiple LandscapeStreamingProxy actors / 400+ collision components).
2. Enable Collision Visualization in an Editor Viewport (Show \> Collision or Player Collision view mode).
3. Enter PIE and trigger an event that fires a Chaos physical material update (FPhysicalMaterialManager::OnMaterialUpdated).
4. Inspect Unreal Insights: observe a CPU GameThread stall under DeferredRenderUpdates\_GameThread.
5. Disable Collision Visualization or remove Landscape streaming proxies: observe that the CPU frame drop disappears or scales down proportionally.

### Expected Result

MarkRenderStateDirty() should only be called on LandscapeHeightfieldCollisionComponents that actually reference the updated physical material (e.g., checked against UsedChaosMaterials), preventing unnecessary CPU frame drops when Collision Visualization is active.

### Observed Result

All ~424 loaded Landscape collision components are marked dirty across two consecutive update waves, causing ~200–237ms and ~120–150ms CPU GameThread stalls during debug proxy recreation. The frame drop disappears completely when Collision Visualization is turned off.

### Affects Versions

5.7

### Platform(s)

Windows

### Upload an image

![UnrealInsights_Hitch.png](https://d3kjluh73b9h9o.cloudfront.net/original/4X/b/a/8/ba830eee61d3d7995a8774f3e9b035781ef81cd8.png)

### Additional Notes

I reviewed related issue UE-169387 (Landscape collision scene proxy allocation overhead). While both involve debug scene proxy costs on large Landscapes, this appears to be a distinct issue: an unrelated Chaos physical material update triggers an unconditional global MarkRenderStateDirty() on all loaded Landscape collision components without filtering by used materials.
