🎬 Landscape Caching for better Performance

How to setup and use RVTs to improve performance

Virtual Texture Support needs to be enabled in your project.

See Installation for info on how to set them up.

First, Create the Runtime Virtual Textures that will be used. For Caching, at least the Color VT is mandatory for it to work, other additional VTs may not be needed depending on your needs.

Open the principal color VT and set its "Virtual Texture content" to "Base Color, Specular, Roughness, Normal". Recommended default values for the Sizes are 12-2-2.

If you want to use VTs for World Height, open the one for it and set it to "World Height". Recommended default values for the Sizes are 8-2-2.

If you want to use VTs for Nanite Displacement, open the one for it and set it to "Displacement". Recommended default values for the Sizes are 10-2-2.

<- Color | Displacement for Nanite (5.4+) | Height -> Good base values.

Then, place Runtime Virtual Texture Volumes for each of the VTs in your world. In the Details panel, look for "Virtual Texture" and select the one you need, then click Set Bounds.

Correctly set VT Volume.

Do that for each of the volumes you need.

Then, click on your Landscape, and add the Virtual Textures needed in the "Draw in Virtual Textures" zone of its details as the screen below shows.

If the Landscape is using World Partition you'll have to do this with the Landscape and all its Streaming Proxies selected (if on 5.1 or 5.2).

On 5.3+ you don't need to, you can set these values on the main Landscape and the proxies will follow it.

End result.

Applying the Virtual Textures

Finally, In the Builder interface, enable the use of Virtual Texturing caching in the Global options.

The second "Disp" slot shows only if Nanite Tessellation is available and used.

You can click the wand button to automatically select the Landscape's Virtual Texture, or select it manually by clicking its thumbnail.

Make sure to select the good Virtual Texture if you select it manually.

Done ! Now your Instance can use Virtual Texture Caching to improve itsperformance !

Cached
Uncached

Exclude Layers from caching

Caching works by setting the Instance fully static. But, some features do not work when cached. So, you can tick the "Exclude from Caching" option in the Material settings to keep a Sub-Layer uncached.

These features cannot work when cached :

  • Parallax Occlusion Mapping

However, other material features are taken into the caching when enabled and are as such free :

  • Triplanar Mapping

  • UV Tiling Variance

Uncaching the second Sub-Layer in our case for example gives us this shader complexity. As you can see, it's better than uncached but still negatively impacts the complexity.

Partially uncached (one layer out of 3 is excluded. No extra features like UV Variance or distance-based are used.)

Last updated