Calling the ApplySettings method on a UGameUserSettings object results in a noticeable hitch, with severity proportional to the number of primitive components present in the scene. This hitch stems from the destruction of a FGlobalComponentRecreateRenderStateContext object, which is triggered on every ApplySettings call, regardless of whether any scalability settings or CVars have changed.
The issue was introduced in the following commit:
https://github.com/EpicGames/UnrealEngine/commit/910a18bf66550930793523e0eff2b8120c7022cf
This change seems intended to reduce hitch duration for certain render setting updates during ApplySettings, but inadvertently introduced a new hitch that now occurs unconditionally on every call.
A subsequent commit:
https://github.com/EpicGames/UnrealEngine/commit/c558e2ffca2d0f1b916ef2e18ff2c614b8403d0d
reverted the original optimization by removing recursion tracking from FGlobalComponentRecreateRenderStateContext. This regression not only eliminates the performance benefit of the original change, but also worsens the hitch by causing an additional context destruction.
1. Open a project and load a level with a large number of static mesh components (e.g., 2000 cubes added via a blueprint script).
2. Call the ApplySettings method on the UGameUserSettings object. The UGameUserSettings object can be accessed in Blueprint using GetGameUserSettings.
3. Observe a hitch proportional to the number of primitive components in the scene.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-296881 in the post.
0 |
Component | UE - Graphics Features |
---|---|
Affects Versions | 5.4, 5.5, 5.6, 5.7 |
Created | Jun 18, 2025 |
---|---|
Updated | Jun 18, 2025 |