Questions about RVT and SVT built from RVT volume

I’ll attempt to answer your questions, and then I have a suggested approach for use of SVT for distant objects.

  1. Yes the build level setting determines the number of mips in the SVT, and the SVT is used to provide the top (course resolution) mips of the RVT
  2. We create a FVirtualTextureLevelRedirector which redirects page requests to either the SVT or the RVT
  3. Yes if you sample different mips at the same location, the virtual texture will populate both and this will take the corresponding space in your physical pool. In reality this usually isn’t a bad thing, and is better than sampling at the incorrect mip level for either landscape or grass.
  4. The context menu for an SVT asset in the content browser has an asset-action/export option, which exports to an image file, which can then be imported as a texture asset.
  5. Each runtime generated page is generated by rendering directly and not by downsampling another mip level. The SVT pages are generated (offline) by rendering the full volume to create the finest mip level pages, and then downsampling to create the other mip pages.

For the rendering of distant objects, one approach is to create two RVTs covering the same space, one (A) for the usual usage, and another (B) for distant objects (HLOD etc).

A is created as normal, and an SVT is set up.

B is created to cover the same volume as A, and has the same tile/border sizes as A, but has a final resolution the same size as the SVT of A

B is set to point at the SVT of A, but doesn’t have the build level settings for creating its own SVT

B never renders pages in cooked builds because it always loads the pages from the SVT.

Normal landscape/grass etc samples from RVT A

HLOD/distant objects sample from RVT B

A reason why this is a good idea is that RVT B will always give valid distant pages, without the need to render them at runtime (which would require distant landscape to be loaded).

I think this approach works in UE5.4. But some features were added to 5.5 and the upcoming 5.6 to make it even easier to use.

Best regards,

Jeremy