I use runtime virtual textures on my landscape, they work fine, but when the player first loads in or teleports to a new area the terrain texture is blurry for a few frames.
I need a way to fix this.
Ideally, id like to wait for the virtual texture to finish rendering before letting the game continue to the next frame, is that possible?
The blur is the virtual texture pages for the new area not being produced/uploaded yet, so there isn’t a built-in “block until ready” for RVT. A few things that help in practice:
Hide the pop-in instead of fighting it: on teleport, keep a loading screen / fade-to-black up for a short fixed delay (or until a few frames have passed after the landscape is streamed in), then fade in. This is the most reliable fix.
Raise the VT throughput so pages fill faster: type “r.VT.” in the console to see the available cvars. The ones worth trying are r.VT.MaxUploadsPerFrame and the RVT produce-per-frame limits, and make sure the VT pool isn’t thrashing (r.VT.PoolSizeScale, and r.VT.Residency.Show to visualise what is resident).
Check the RVT volume settings: a lower Tile Count/Tile Size or “Continuous update” off can reduce how much has to be re-rendered after a teleport. Also confirm the landscape material samples the RVT with a sensible mip (Virtual Texture Sample with Mip level mode “Automatic”) instead of a forced low mip.
If you control the teleport, pre-warm: move the camera/streaming source to the destination a bit earlier (or enable a level streaming source there) so the pages are requested before the player appears.
Values depend on your project, so test with stat VirtualTexturing while teleporting to see if pages/uploads are the bottleneck.