RVT slow to load in

Hi - I’m using RVT on my landscape and when I turn the camera the landscape often looks low res for half a second until it loads the proper resolution. I’ve changed my VT tile size in project settings from 128 to 2048 which helps a bit (my camera is top down and zoomed out), but it’s still picking up tiles tiles that pop in from low res to high. How do I speed up the loading of RVTs or have it load more of the surrounding areas? Thanks!

It’s likely that your computer is to slow to load in that data quickly enough. So this is usually what loading screens are placed. There are nodes you can use in blueprint to check if content is loaded, but I can’t find anything for RVT. There might be some things if you poke around a bit, or it could be C++ featured.

Thanks. Definitely not likely to be my PC (I have a pretty hardcore rig i.e. i9, 4090, 64GB RAM etc.). And it’s just the texture tiles, so a loading screen would make no sense as it’s only pieces (tiles) of the landscape when I turn in place quickly. I figure there must be some setting to have it load more in based on proximity or something?

Here’s a video example of what’s happening…

Oh wow, yeah with those specs it is likely something else. I wouldn’t know what is causing this. I have actually not seen it before either.

I would create a new level, add the relevant files and lower many of the features like landscape density, and make the virtual texturing bounding box smaller, etc.

Thank you for the video, let’s hope someone who have more landscape experience can tell us what it is.

1 Like

Anyone else got any thoughts here? I’m still struggling with this one. Only happens when I use RVT.

Try increasing the virtual texture streaming pool. It fixed it for me.

I increased the streaming pool size, but sadly this seems to only half-fix the problem. While it help with keeping textures in memory once already loaded, the first load of a texture seems to be happening excruciatingly slowly. In my case, a VR game, the loading speed is even less than what is shown on the video above. And residency pools are at half capacity.

I have not been able to find the bottleneck yet unfortunately. My current thinking is that it’s either some hard I/O constraint for not loading too many tiles each frame, or perhaps it’s something on the render thread that’s limiting how many tiles can be loaded each frame.

Yeah increasing streaming pool size didn’t work for me either. I almost feel there must be some kind of setting that allows you to ensure everything in a certain radius is loaded properly but I’ve not been able to find a solution yet.

1 Like

Okay I think I figured it out. The setting you want to look at is

r.VT.MaxUploadsPerFrame (default = 8)

Increasing this to e.g. 32 makes the VT tiles load in a lot faster for me.

This problem is further made worse by the fact that the pages load a lot faster in the editor than in build by default, because there is a editor-specific setting

r.VT.MaxUploadsPerFrameInEditor (default = 32)

so in-editor it seems like everything will be fine, but then in a build, everything loads a lot slower by default.

By the way there is also a third setting,

r.VT.MaxUploadsPerFrame.Streaming (default = 0)

which I guess applied to streaming VTs specifically, but I also guess the default value, 0, sets it to whatever value is set in r.VT.MaxUploadsPerFrame.

I really don’t understand how Epic thought they didn’t need to document this anywhere?

EDIT: One more thing, be aware you cannot specify this setting in any .ini files as far as I can tell. Only way to set it in a build is through “execute console command” node or C++.

are you sure you set DefaultEngine.ini

[/Script/Engine.VirtualTexturePoolConfig]
+Pools=(SizeInMegabyte=512, bAllowSizeScale=False, bEnableResidencyMipMapBias=True)

Sadly it still doesn’t make any difference for me. Crazy that this is so bad tbh as RVT is completely unusable like this. I’m using a Brushify landscape so not sure if that’s part of the issue, but it’s fine if I don’t enable RVT so I’m not sure.

Yes.

Are you sure you increased r.VT.MaxUploadsPerFrame above the in-editor default 32? Did you try 64?

I suffer from this problem too. I used RVT for the grass cutout. When trying to render using VT it just used last mipmap in VT. So in grass material where I import VT map. I switched to a mipmap from the default value and in slot VT just used 0 value. Or you can use a switch node with camera distance to switch it.

What worked for me was changing the Feedback resolution factor to 8 or below in the settings under virtual textures.