UE5 Virtual Heightfield Mesh - Flickering & Blurry RVT's

Hi all. Since tessellation has been depreciated in UE5 I guess many of you are playing around with the virtual heightfield mesh plugin for landscape displacement and blending. I have invested a bit of time around this myself. Basically, love the idea but found the implementation of VHM in my project somewhat challenging (unintuitive).

The RVT Heightfield Mesh Widget in OpenLand (see the marketplace or GIT) simplified the set up of the RVT volumes and textures and is useful for anyone having a problem with those steps. However, it did glitch, so if using the widget I would still recommend zeroing out the scale settings in the RVT volumes created by the widget and then using the ā€œset boundsā€ buttons in the details panel of the volumes to extend them accurately around your landscape.

One of the biggest problems I found was ā€œfickeringā€ and ā€œblurringā€ with landscape textures used by the RVT mesh. After some googling and trial and error I solved these problems by going to the the details panel of the Heightfield mesh actor and:

(a) upping the LOD distribution setting. In the end, the default setting of 1.7 worked for me, but upping it increases the distance for the LOD’s and reduces the ā€˜jumping’ geometry as the LODs change;

(b) unchecking the ā€œRender in Main Passā€ setting however was the big winner. One click and the jumping geometry and blurry landscape textures disappeared like magic. So definitely give this a go if you are having RVT texture issues.

As regards UE5 ā€œcrashesā€, which seems to happen often in the virtual heightfield mesh pipeline, this seemed to be an issue around video memory. I found reducing the tile ā€˜size of the virtual texture in tiles’ setting inside RVT ā€˜material’ helped. Took the tile size down from 4K to 2K.

The good news is that once those changes were made my landscape displayed correctly with displacement and best of all at 120 FPS and a steady 8.3 ms, so I was a pretty happy camper.

when I unchecked ā€œrender in main passā€ in the vhfm, it disappeared all together, any idea what I’m doing wrong?

@Dovah_Niik - Unfortunately don’t have any answers. At this point the VHF plugin is experimental at I not even sure the tips suggested in my earlier post work as intended.

VHF in UE 5 is a bit of a mess ATM so it might be better to wait until a more stable plugin is released.

did you have any setup to turning off render in main pass or did you ONLY turn it off on the vhfm without doing anything else?

I’m also struggling with this topic.
I’m trying to create some displacement for the terrain in UE5. This method although much harder to setup than previous tessellation option, seems to be working OK. In terms of performance it is much better than what tess could offer.
The problem I’m facing though is incredibly sluggish update of the VT.
It seems like it doesn’t have enough memory to stream properly. Tiles are popping very noticeably and often are blurry for seconds before clear. Sometime they even get stuck and never clear.
This is not to mention the mesh popping and flickering of the Heightfield mesh itself.
The proposed solutions above , don’t work for me. And I really cant see how they could , one will just disable the mesh itself.

Wondering how do we correct for this. Is there someone with some experience with RVT on landscapes to recommend some settings - on the VT texture , console commands etc.

1 Like

UE5 basically killed landscape displacement. Tessellation was a better solution than what we have now.

VHFM may get there one day, but right now it’s an experimental buggy mess. If you need landscape displacement…back to UE4

Sounds like your actual landscape was still being rendered beneath the VHFM. When you disabled it’s ā€œrender in main passā€ it just hid the height mesh, leaving only the actual landscape.

Try the tips here from GDi4K - How to Prevent Flickering Virtual HeightField Mesh Displacements in Unreal Engine 5 - YouTube

Thanks for that. I think you’re right.

The popping usually happens because the VT memory pool is too small for your needs: you can check this with r.VT.Residency.Show 1 . You can increase the pool size in BaseEngine.ini ( Virtual Texture Memory Pools in Unreal Engine | Unreal Engine 5.0 Documentation )

3 Likes

I am having an Issue when Unreal 5.2 Just Crashes as soon as I disable ā€˜ā€˜hidden in the editor’’ for VirtualHightfieldmesh Instance.