Why RVT is flickering on tile rebuild?

Hi,
I’m using RVT to capture 1kx1k landscape and show it in higher quality as VHM (with some details generated by material). In material of landscape is changed - on player interactions - melting of terrain (so with vertex offset) plus color change in area of interaction.
When change of landscape happens, instead of even delayed update I’m getting flickering of RVT in changed place, like engine would clear page of RVT and then start to render instead of doing render and then copying value to RVT page?

Do you have any idea what can happen here? Or maybe someone else also met this issue?

RVT params (both height and color have the same):
-Virtual texture size 16 KiTexels
-Page Table size 64
-Size of vt in tiles 64 (slider 6)
-Size of each VT tile 256 (slider 2)
-Padding 4 (slider 2)
-Enabled tex compression
-Enabled clear before render (when it’s disabled it flickers even more and values are getting more random)
-Enabled packed page table, private page and continous page update
-Disabled Adaptive page table (did’t help at all)

I’ve also tried use Invalidate on RVT to make update only part of terrain but even if it updates faster flickering still happens

1 Like

I am encountering a similar issue. I have a tiled landscape in 5.1 and anytime I use a RVT material, the landscape alternates between different colors. As if it’s cycling through the RVT layers. I can’t figure it what’s causing it.

Using a normal landscape material works great. But RVT does not.

I have the same issue. I’m on UE5.2.

Did you find something out in the meantime? Is this a bug?

I think it all comes down to your texture memory size allocation. See below link for detailed explanation. I turned on the these for debugging.(was tracking down this at work, so figure I should share what I found. )

r.VT.Residency.Notify 1
r.VT.Residency.Show 1

What I found is if you see any of the block in show where the mip bias constantly jumping around 1.x~2.x, then the frequency of it’s jump dictates how frequent you see the flickering. If you can’t fit your resolution into the allocated amount, you need to adjust with a override so a specific pool can increase it’s size.

I copied relevant section from BaseEngine.ini, you can override this in your project’s DefaultEngine.ini

[/Script/Engine.VirtualTexturePoolConfig]
; Configure VT physical memory pools. Useful commands to set these:
; “stat virtualtexturing” show dynamic use of the VT system including the cache loads
; “r.VT.ListPhysicalPool” list in-depth details on the allocated physical pools
; “r.VT.DumpPoolUsage” list in-depth details on asset usage of physical pools
; The default pool size and behavior is set here. It can be overridden in project config files.
+Pools=(SizeInMegabyte=64, bAllowSizeScale=False, bEnableResidencyMipMapBias=True)
; Specific pools can be configured per tile size or format in project config files. Examples commented below:
;+Pools=(Formats=(PF_DXT1), SizeInMegabyte=36, bAllowSizeScale=True, ScalabilityGroup=1, bEnableResidencyMipMapBias=False)
;+Pools=(Formats=(PF_DXT5, PF_DXT5), SizeInMegabyte=100)

Some other video I found that’s helpful to adjust the LOD distribution. which also mentioned how to adjust your texture size.

Thank you but unfortunatelly I’ve already tried this without success. Seems UE cannot keep with that amount of calculations

Well, at work our resolution is 1024^2 tiles with each tile in 512 resolution(world height resolution is lower) and it works fine while using roughly < 300MB video ram. So unless your GPU is seriously outdated, your setting of how much ram to allocate is not enough.