<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Unreal Engine Issues - Latest Bugs]]></title><description><![CDATA[Latest Bugs and Feature Requests For Unreal Engine.]]></description><link>https://issues.unrealengine.com</link><image><url>https://issues.unrealengine.com/favicon.png</url><title>Unreal Engine Issues - Latest Bugs</title><link>https://issues.unrealengine.com</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 23:24:33 GMT</lastBuildDate><atom:link href="https://issues.unrealengine.com/bugs" rel="self" type="application/rss+xml"/><item><title><![CDATA[Two-sided property of materials saved to User Library not preserved]]></title><description><![CDATA[<p>Materials with the two-sided property enabled do not retain this setting when saved to the user library, reverting to one-sided whenever applied to objects, making it impossible to save a material as two-sided and requiring this setting to be re-enabled whenever the material is needed.</p>

<p>All other material settings are preserved when saved to the User library.</p>]]></description><link>https://issues.unrealengine.com/issue/TM-23753</link><guid isPermaLink="false">TM-23753</guid></item><item><title><![CDATA[BlendSpace Loop Boundary Produces Inconsistent Sync Marker Data andTriggers an AnimSequence Follower Assertion]]></title><description><![CDATA[<p><b>Summary</b></p>

<p>In UE 5.7.4, when a looping BlendSpace with Match Sync Phases enabled plays as a SyncGroup Leader and crosses its loop boundary during a transition to an external AnimSequenceFollower in the same group, a marker-consistency assertion fails inside UAnimSequence::AdvanceMarkerPhaseAsFollower() and the editor terminates.</p>

<p>The issue was not observed when playing the BlendSpace alone. It reproduces when an external Follower is evaluated and consumes the inconsistent marker data produced by the Leader.</p>



<p><b>Description</b></p>

<p>FMarkerSyncData::CollectMarkersInRange() only uses the following condition:</p>

<p>At the loop boundary, NewPosition becomes less than PrevPosition:</p>

<p>No marker can satisfy both conditions, so the passed-marker list is returned empty.</p>

<p>However, the Leader's final Sync Position correctly reports the next marker after wrapping. This inconsistent information is propagated to the external AnimSequence Follower, causing the next-marker consistency check() inside UAnimSequence::AdvanceMarkerPhaseAsFollower() to fail.</p>

<p>BlendSpace samples are processed through a separate path, so without an external Follower, the BlendSpace-only configuration did not reach this validation in our tests.</p>



<p><b>Suggested Fix</b></p>

<p>When NewPosition is less than PrevPosition, collect markers from the following two ranges:</p>

<p>The loop offset should also be applied when calculating DeltaTimeWhenPassed for the</p>

<p>second range.</p>

<p><span class="image-wrap" style="">[Image Removed]</span></p>]]></description><link>https://issues.unrealengine.com/issue/UE-387801</link><guid isPermaLink="false">UE-387801</guid></item><item><title><![CDATA[Overwriting an anim sequence may scale the play rate of the anim instead of modifying underlying frame rate]]></title><description><![CDATA[<p>The frame rate for an anim sequence is not being changed as expected when its being overwritten / re-imported. </p>]]></description><link>https://issues.unrealengine.com/issue/UE-387695</link><guid isPermaLink="false">UE-387695</guid></item><item><title><![CDATA[SetInputMode_GameOnly + windowed mode: Win+Arrow window snapping stops working after dragging window across monitors on multi-display setup]]></title><description><![CDATA[<p>When <tt>SetInputMode_GameOnly</tt> is applied on a PlayerController and the application runs in windowed mode on a multi-monitor setup, the Windows OS shortcut <tt>Win+Arrow</tt> (window snapping) stops functioning once the window is moved across a monitor boundary.</p>

<p>This appears to be an interaction between UE's input capture (<tt>FInputModeGameOnly</tt> → <tt>CapturePermanently</tt> mouse capture) and the Windows shell snap handling. While the window holds input capture and crosses a display boundary, the shell no longer receives the snap key input correctly.</p>

<p><b>Workaround (confirmed behavior):</b><br>
After the issue occurs, clicking the window, or pressing <tt>Win</tt> alone to open the Start menu and then refocusing the app, restores normal behavior (capture/focus re-syncs).</p>

<p>Note: This is a Windows standard OS feature, so this may be a Windows-side constraint rather than a strict UE bug. Filing to confirm whether the capture behavior of <tt>FInputModeGameOnly</tt> should be adjusted, or whether this should be classified as By Design.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-386734</link><guid isPermaLink="false">UE-386734</guid></item><item><title><![CDATA[VSM shadows are missing for non-Nanite meshes in a PPV where Megalights is disabled, but Megalights is enabled in the project]]></title><description><![CDATA[<p>In UE 5.8  <b>r.Visibility.LocalLightPrimitiveInteraction</b> mode 2 (enabled if MegaLights is disabled) was added and made the new default as a performance optimization.  However, this causes shadows to disappear for non-Nanite objects inside PPVs that disable Megalights because the logic for mode 2 checks the project setting and not the PPV override.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-386721</link><guid isPermaLink="false">UE-386721</guid></item><item><title><![CDATA[Deadlock while cooking groom bindings]]></title><description><![CDATA[<p>Hi, we are experiencing random deadlocks while cooking groom bindings. We have integrated 5.8 mutable into 5.6 and are still experimenting those deadlocks which seem due to :</p>




<p>UE_DEPRECATED(5.4, "This class is deprecated, there is no replacement because this is not a safe async design.")</p>

<p>UE_API FScopedSkeletalMeshRenderData(USkeletalMesh* Mesh);</p>

<p><a href="https://github.com/EpicGames/UnrealEngine/blob/772ce4ed717be4bd427ca1b59a32b1e82bab2466/Engine/Source/Runtime/Engine/Classes/Engine/SkeletalMesh.h#L417" class="external-link" rel="nofollow noreferrer">https://github.com/EpicGames/UnrealEngine/blob/772ce4ed717be4bd427ca1b59a32b1e82bab2466/Engine/Source/Runtime/Engine/Classes/Engine/SkeletalMesh.h#L417</a></p>




<p>The deadlock happens here:</p>

<p><a href="https://github.com/EpicGames/UnrealEngine/blob/772ce4ed717be4bd427ca1b59a32b1e82bab2466/Engine/Plugins/Runtime/HairStrands/Source/HairStrandsCore/Private/GroomBindingBuilder.cpp#L2884" class="external-link" rel="nofollow noreferrer">https://github.com/EpicGames/UnrealEngine/blob/772ce4ed717be4bd427ca1b59a32b1e82bab2466/Engine/Plugins/Runtime/HairStrands/Source/HairStrandsCore/Private/GroomBindingBuilder.cpp#L2884</a></p>]]></description><link>https://issues.unrealengine.com/issue/UE-386691</link><guid isPermaLink="false">UE-386691</guid></item><item><title><![CDATA[MovieSceneAnimMixer: Force Root Lock suppression is editor-only, causing PIE vs cooked divergence]]></title><description><![CDATA[<p>The anim mixer's skeletal animation eval task suppresses an anim sequence's Force Root Lock during pose evaluation so the root-motion extraction task (<tt>FAnimNextExtractRootMotionTask</tt>) can measure and apply root motion itself. This path is taken for anims with both <b>Force Root Lock</b> and <b>Enable Root Motion</b> driven through the mixer.</p>

<p>The suppression relies on <tt>FAnimExtractContext::bIgnoreRootLock</tt>, which is <tt>WITH_EDITOR</tt>-only, so the suppress in <tt>FMovieSceneSkeletalAnimationEvaluationTask::Execute</tt> is gated behind <tt>#if WITH_EDITOR</tt>. As a result the mixer's root-motion pipeline behaves differently between editor/PIE and cooked:</p>

<ul>
	<li>Editor/PIE: the lock is suppressed during eval, real root motion survives, and the extraction task handles locking.</li>
	<li>Cooked: the field does not exist, so the lock is applied during decompression and the extraction task works from an already-locked pose.</li>
</ul>


<p>This is a runtime system depending on an editor-only lever, so the behavior silently forks between configs.</p>

<h2><a name="Repro"></a>Repro</h2>

<ul>
	<li>Set up an anim mixer skeletal section using an anim sequence with both Force Root Lock and Enable Root Motion enabled.</li>
	<li>Compare root behavior in PIE vs a cooked/packaged build.</li>
</ul>


<h2><a name="Proposedfix"></a>Proposed fix</h2>

<ul>
	<li>Add a runtime (non-<tt>WITH_EDITOR</tt>) bool to <tt>FAnimExtractContext</tt> (e.g. <tt>bSuppressForceRootLock</tt>), separate from the editor-only <tt>bIgnoreRootLock</tt> so the preview flag's meaning is unchanged.</li>
	<li>Un-gate the three force-root-lock checks (<tt>!ExtractionContext.bIgnoreRootLock</tt>) currently under <tt>#if WITH_EDITOR</tt> so they honor the new runtime flag in cooked.</li>
	<li>Set the new flag unconditionally in the mixer eval task and drop its <tt>#if WITH_EDITOR</tt> guard.</li>
	<li>Default the flag to false so all other runtime paths are byte-for-byte unchanged.</li>
	<li>Add a mixer test comparing a Force-Root-Lock + Enable-Root-Motion section cooked vs PIE.</li>
</ul>


<h2><a name="Keylocations"></a>Key locations</h2>

<ul>
	<li><tt>MovieSceneMixedSkeletalAnimationSystem.cpp</tt> (section flag derivation, and the <tt>#if WITH_EDITOR</tt> suppress in the eval task)</li>
	<li><tt>AnimationAsset.h</tt> (<tt>FAnimExtractContext::bIgnoreRootLock</tt>)</li>
	<li><tt>DecompressionTools.cpp</tt>, <tt>AnimSequence.cpp</tt>, <tt>AnimStreamable.cpp</tt> (the <tt>#if WITH_EDITOR !bIgnoreRootLock</tt> force-root-lock sites)</li>
</ul>
]]></description><link>https://issues.unrealengine.com/issue/UE-386453</link><guid isPermaLink="false">UE-386453</guid></item><item><title><![CDATA[Crash in GC - FSharedStruct reachability race condition]]></title><description><![CDATA[<p>This Jira was created from the linked EPS case: </p>

<p>===============================================</p>

<p>This issue is caused by FSharedStruct batching reachability requests to the same underlying FInstancedStruct multiple times. This is not thread safe as nothing prevents the reachability processor from earlying out, so the hierarchy is processed multiple times across all GC workers.</p>




<p>This can lead to some race conditions where garbage exclusion kills the reference to the UObject** on the struct on one worker as it's currently being batched on another worker. This can lead the reachability to reference nullptrs all over the place.</p>




<p>In essence we need the following 4 criteria:</p>

<ol>
	<li>Lots of root UObjects with a reference to a FSharedStruct</li>
	<li>The underlying FInstancedStruct must be shared between all FSharedStruct. We can do this by copying the FSharedStruct across all root UObjects so the FSharedStruct instance is unique, but the underlying TSharedPtr&lt;FInstancedStruct&gt; just bumps up the ref count.</li>
	<li>The base struct type for the FInstancedStruct must have a TObjectPtr on it.</li>
	<li>We must explicitly mark the TObjectPtr as garbage so it goes through garbage elimination during reachability.</li>
</ol>





<p>If you have a look in the GCStressTestSubsystem in my repro sample for an example.</p>




<p>So the root cause is that FSharedStruct::AddStructReferencedObjects is invoked for each unique <b>FSharedStruct</b> instance, which in our case matches the number of root UObjects we created (10,000 by default in the attached sample). This will invoke Collector.AddReferencedObjects on the underlying UScriptStruct* which is simply the underlying shared single instance shared across all 10,000 instances. This means that the UScriptStruct* reachability is done 10,000 times in this example. This then ends up batching all its own properties this many times, including the TObjectPtr. This gets distributed between all the worker threads and performed in parallel. It's a race to see which route eliminates the UObject** address against all the other workers which are currently reading the same UObject*. We can end up crashing in lots of places in the batching, but it typically goes wrong in DrainValidated when we invoke a ObjectToIndex call, e.g:</p>










<p><tt>ObjectIndices<span class="error">&#91;Idx&#93;</span> = GUObjectArray.ObjectToIndex(ValidatedReferences<span class="error">&#91;Idx&#93;</span>.Object);</tt></p>

<p>This reads offset 0xc on a nullptr because it's been eliminated on the other thread. This is checked when we DrainUnvalidated, but as soon as we pass the valid checks we assume that the ValidatedReferences only contains non-null references, which now causes issues because it <b>was</b> valid when the checks were first performed but has been invalidated between the DrainUnvalidated and the DrainValidated calls.</p>




<p>I have created a modified version of FSharedStruct called FFixedSharedStruct. This is effectively an identical version of the engine's version, but I've added an atomic int to the shared FFixedStructSharedMemory which contains the reachability flag. We mark this as reachable when the first FSharedStruct reaches the AddReferencedObject call which causes all future calls to the same underlying TSharedPtr to early out. This ensures that we only batch a single instance of the UScriptStruct.</p>




<p>You can toggle between the 2 FSharedStruct versions with the define in GCStressTestSubsystem.cpp</p>







<p><tt>#define TEST_VANILLA_SHARED_STRUCT 1</tt></p>

<p><tt>#define TEST_FIXED_SHARED_STRUCT 1</tt></p>

<p>This seems to work and follows a similar way to the UObject reachability flag, but I'm not sure if you have a better suggestion for a fix.</p>

]]></description><link>https://issues.unrealengine.com/issue/UE-386410</link><guid isPermaLink="false">UE-386410</guid></item><item><title><![CDATA[Regarding TObjectPtr performance regression]]></title><description><![CDATA[








<p>This is from the linked EPS case: </p>

<p>==============================</p>

<p>When 5.0 first introduced TObjectPtr, the guidance was that it would compile down to raw pointer access in Shipping builds to ensure identical performance.</p>

<p>Evidenced by the following quote from the documentation for 5.0:</p>




<p><em>UE5 introduces TObjectPtr, a template-based, 64-bit pointer system, as an optional replacement for raw object pointers in editor builds. This system adds dynamic resolution and access tracking in editor builds, while performing identically to raw pointers in non-editor builds.</em></p>




<p>In recent versions of the engine, this guarantee seems to have been silently dropped.</p>

<p>The introduction of incremental reachability analysis adds code to call ConditionallyMarkAsReachable, regardless of whether incremental GC is turned on.</p>




<p>This causes assembly instructions comparable to the following to be generated inline every time a TObjectPtr or TSubclassOf is assigned:</p>

<p><tt>cmp byte ptr <span class="error">&#91;UE::GC::GIsIncrementalReachabilityPending&#93;</span>,r14b</tt></p>

<p><tt>je _____+16Fh</tt></p>

<p><tt>mov rcx,qword ptr <span class="error">&#91;rbx+458h&#93;</span></tt></p>

<p><tt>test rcx,rcx</tt></p>

<p><tt>je _____+16Fh</tt></p>

<p><tt>call UE::GC::MarkAsReachable</tt></p>

<p>In our game, this adds several megabytes to our compiled binary size, putting pressure on the instruction cache and branch predictor.</p>

<p>Even though incremental GC is experimental and not even supported outside of single-threaded servers, right now every game is paying for the feature even when not enabled, due to `UE_OBJECT_PTR_GC_BARRIER` being unconditionally set to `1` in `ObjectPtr.h`.</p>




<p>My questions are the following:</p>




<ul class="alternate" type="square">
	<li>It would be nice if this code was automatically compiled out when incremental GC is off, instead of us having to randomly find out about the define during profiling.</li>
</ul>





<ul class="alternate" type="square">
	<li>This seems to unconditionally apply to every TSubclassOf as well, even when used as a parameter/local variable and GC barriers are unnecessary.</li>
</ul>





<ul class="alternate" type="square">
	<li>Inlining the check to `GIsIncrementalReachabilityPending` makes sense, but it might be worth moving the null object check into `MarkAsReachable` itself, which would reduce the binary size cost of the repeatedly inlined code.</li>
</ul>
]]></description><link>https://issues.unrealengine.com/issue/UE-386406</link><guid isPermaLink="false">UE-386406</guid></item><item><title><![CDATA[Navigation data contained entirely within a Level Instance is not registered at runtime (PIE / standalone / packaged) in a World Partition persistent level]]></title><description><![CDATA[<p>A licensee is composing independently-authored levels into a single World Partition persistent level by placing each as a Level Instance. NavMeshBoundsVolume / NavModifierVolume are placed inside each sub-level (Level Instance), and navigation is built at the persistent-level side. Navmesh appears correctly in the editor outliner after build, but is not available at runtime.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-386399</link><guid isPermaLink="false">UE-386399</guid></item><item><title><![CDATA[WorldPartition RuntimeHashSet: non-deterministic URuntimePartitionPersistent UObject name causes unstable Cooked output (RuntimePartition:DebugColor)]]></title><description><![CDATA[<p>During deterministic Cook / Package validation, the Cooked output of a WorldPartition map was found to vary non-deterministically between Cook runs.</p>

<p>Diff detected in the DiffOnly Cook log:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Serialized Property:
StructProperty /Script/Engine.RuntimePartition:DebugColor</pre>
</div></div>

<p><b>Root Cause</b></p>

<p>In <tt>UWorldPartitionRuntimeHashSet::FixupHLODSetup()</tt>, when explicit HLOD Layer Partition Assignation is enabled, a <tt>URuntimePartitionPersistent</tt> is created with an unstable UObject name:</p>

<p>cpp</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>NewObject&lt;URuntimePartitionPersistent&gt;(this, NAME_None)</pre>
</div></div>

<p>With <tt>NAME_None</tt>, auto-naming appends a suffix such as <tt>RuntimePartitionPersistent_0 / _1</tt>, and the suffix varies depending on object creation order across Cook runs. In addition, <tt>URuntimePartition::SetDefaultValues()</tt> seeds <tt>DebugColor</tt> from <tt>GetName()</tt>, so the unstable UObject name propagates into <tt>DebugColor</tt>.</p>

<p>Both <tt>URuntimePartition::DebugColor</tt> and <tt>FRuntimePartitionHLODSetup::PartitionLayer</tt> are UPROPERTYs outside <tt>WITH_EDITORONLY_DATA</tt>, so the difference lands in the Cooked data regardless of Development or Shipping. Beyond <tt>DebugColor</tt>, the UObject name itself also varies in the ExportMap / serialized object.</p>

<p><b>Proposed Fix</b></p>

<p><tt>Source/Runtime/Engine/Private/WorldPartition/RuntimeHashSet/WorldPartitionRuntimeHashSet.cpp : FixupHLODSetup()</tt></p>

<p>Instead of <tt>NAME_None</tt>, explicitly generate a deterministic name derived from content (based on <tt>RuntimePartition.Name</tt>):</p>

<p>cpp</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>const FName PersistentPartitionName(*FString::Printf(
    TEXT("RuntimePartitionPersistent_%s"),
    *RuntimePartition.Name.ToString()));
FRuntimePartitionHLODSetup&amp; PersistentHLODSetup = RuntimePartition.HLODSetups.Emplace_GetRef();
PersistentHLODSetup.PartitionLayer = NewObject&lt;URuntimePartitionPersistent&gt;(this, PersistentPartitionName);</pre>
</div></div>

<p>This is the same class of fix as the deterministic-name approach for Niagara DataInterface MultiProcess Cook.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-386377</link><guid isPermaLink="false">UE-386377</guid></item><item><title><![CDATA[Editor crashes in FAsyncLoadingThread2::ProcessLoadedPackagesFromGame when Level Blueprint references external actor]]></title><description><![CDATA[<p>Adding a reference to an external actor in the level blueprint causes the package for the actor to be put in the import table of the level. In some cases, the actor package can end up calling postload before the levelinstance does, this ends up calling postload on ULevel which creates Upackages for all external actors in the level. These are added to the ConstructedObjects list for the imported actor. That actor now doesn't complete load until everything else in the level is loaded, at which point if one of the external actor packages has been destroyed null the editor crashes.</p>

<p>OFPA (One File Per Actor) is enabled.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-386242</link><guid isPermaLink="false">UE-386242</guid></item><item><title><![CDATA[UserSceneTexture not working in Virtual Reality]]></title><description><![CDATA[<p>User reports that UserSceneTextures used in Post Process Materials are only correctly rendered inside the left eye in VR.</p>

]]></description><link>https://issues.unrealengine.com/issue/UE-386074</link><guid isPermaLink="false">UE-386074</guid></item><item><title><![CDATA[Adjusting Vegetation Growth for Bushes in Media Mode alters their global size settings]]></title><description><![CDATA[<p>Reported in SF [Link Removed]</p>

<p>When making adjustments to the Vegetation growth Season parameter inside Media Mode, if a scene contains Bushes then any adjustments to the Vegetation growth will adjust the global settings for the Bushes' size.</p>

<p>Edits made in Media Mode should be restricted to the selected media and should not have any effect on the global settings for assets, and this requires manually tracking and readjusting the size parameters for all Bush assets when such edits need to be made.</p>]]></description><link>https://issues.unrealengine.com/issue/TM-23749</link><guid isPermaLink="false">TM-23749</guid></item><item><title><![CDATA[Parameter metadata not accessible if modified in Material Instance and then converted to CustomPrimitiveData]]></title><description><![CDATA[<p>There’s a potential issue with some changes we made to UMaterialInstance::GetParameterValue (<a href="https://github.com/EpicGames/UnrealEngine/commit/8f2bebb008ba645f5938da844cd46b0925322b13" class="external-link" rel="nofollow noreferrer">https://github.com/EpicGames/UnrealEngine/commit/8f2bebb008ba645f5938da844cd46b0925322b13</a>). It seems as though some parameters on an MI are returning False when they should be returning true, <em>but</em> only when the MI is converted from 5.7 to 5.8. If the parameter is created on the material in 5.8 he can’t reproduce the issue. Any thoughts here?</p>]]></description><link>https://issues.unrealengine.com/issue/UE-385962</link><guid isPermaLink="false">UE-385962</guid></item><item><title><![CDATA[Report: Crash when adding new object instances in array in Widget Editor]]></title><description><![CDATA[<p>Please review crash report from EPS case.</p>

<p>repro project attached</p>

<p><span class="nobr">[Link Removed]</span> </p>]]></description><link>https://issues.unrealengine.com/issue/UE-385946</link><guid isPermaLink="false">UE-385946</guid></item><item><title><![CDATA[Custom expression additional outputs don't work when connected to World Position Offset ]]></title><description><![CDATA[

<p>Custom expression additional outputs are considered (0,0,0) when connected to WPO.</p>
]]></description><link>https://issues.unrealengine.com/issue/UE-385745</link><guid isPermaLink="false">UE-385745</guid></item><item><title><![CDATA[The speed of Animators is increased in exports]]></title><description><![CDATA[<p>Reported in SF [Link Removed]</p>

<p>When setting Animator tools to use Collision mode for video, the loop speed of the animator will be twice as fast as specified in the video export.</p>

<p>Attached a sample scene that demonstrates this behavior.</p>

<p>Unclear if this is a regression from 2026.1 to 2026.1 HF2. Last confirmed working correctly in 2025.2.</p>]]></description><link>https://issues.unrealengine.com/issue/TM-23748</link><guid isPermaLink="false">TM-23748</guid></item><item><title><![CDATA[Translucent meshes randomly flicker when using VSM]]></title><description><![CDATA[<p>Flickering can occur on translucent materials, usually in the distance when there is at least one directional light and when using VSM.  Flickering seems highly dependent on framerate and timing.</p>

<p>Limiting the framerate with <tt>t.MaxFPS</tt> or turning off TLV batching usually seems to make the flickering stop (<tt>r.TranslucencyLightingVolume.Batch 0</tt>)</p>

<ul>
	<li>The flickering is from TLV only (not happening with forward translucent shading)</li>
	<li>It seems it also happens without Lumen enabled</li>
	<li>The issue may not happen with older Nvidia drivers, eg, 551.86</li>
	<li>{{r.TranslucencyLightingVolume.Blur 0 }} doesn’t appear to affect the issue</li>
</ul>


<p>This flickering issue doesn’t appear to be the same issue as the kind of flickering that can occur with meshes that intersect the edge of the TLV.</p>

<h2><a name="AdditionalNotes"></a>Additional Notes</h2>

<p><tt>r.OneFrameThreadLag 0</tt> will kill it. And the render frame has to struggle (lag) for it to occur.<br>
<tt>r.rdg.asyncCompute 0</tt> might stop it, but only because the lag shifts a bit. You will still be able to get it with <tt>asyncCompute 0,</tt> but it just might be harder to reproduce.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-385375</link><guid isPermaLink="false">UE-385375</guid></item><item><title><![CDATA[Apply mesh paint Blueprint instance changes and save fails]]></title><description><![CDATA[<p>After mesh painting on a BP Static Mesh Actor, and "Apply instance changes to Blueprint" the added virtual texture is removed with the log:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>LogTexture: Display: Building texture TwoD: /Game/FirstPerson/Lvl_FirstPerson.Lvl_FirstPerson:PersistentLevel.BM_SM_MeshPaint_C_UAID_047BCBA595B946E702_1748064754.StaticMeshComponent0.MeshPaintVirtualTexture_0 (TFO_AutoDXT VT, 32x32 x1x1x1) (Required Memory Estimate: 1.271932 MB), EncodeSpeed: Fast
LogTexture: Display: Building texture TwoD: /Game/FirstPerson/Lvl_FirstPerson.Lvl_FirstPerson:PersistentLevel.BM_SM_MeshPaint_C_UAID_047BCBA595B946E702_1748064754.StaticMeshComponent0.MeshPaintVirtualTexture_0 (TFO_AutoDXT VT, 32x32 x1x1x1) (Required Memory Estimate: 1.271932 MB), EncodeSpeed: Fast
LogActorComponent: UnregisterComponent: (/Game/Blueprints/BM_SM_MeshPaint.Default__BM_SM_MeshPaint_C:StaticMeshComponent0) Not registered. Aborting.</pre>
</div></div>




<p>If the apply step succeeds, saving the BP fails with the error:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>"Illegal reference to private object: MeshPaintVirtualTexture /Game/..."</pre>
</div></div>]]></description><link>https://issues.unrealengine.com/issue/UE-385372</link><guid isPermaLink="false">UE-385372</guid></item></channel></rss>