Latest news
TutorialsUnreal Engine

How to Set Up Runtime Virtual Texturing in Unreal Engine: A Step-by-Step Guide

In Unreal Engine, Runtime Virtual Texturing (RVT) generates and caches shading data at runtime using the GPU. This guide covers the setup workflow, from creating an RVT asset to configuring materials, and highlights key considerations.

Visualization of terrain and road materials meeting around a contemporary pavilionAI image
Representative image, generated with AI.Image: 3dsınıfı / FCA AI

In brief

  1. RVT uses the GPU to generate shading data at runtime and cache it across large areas.
  2. The setup combines an RVT asset, an RVT Volume, and materials that write to and read from the texture.
  3. Landscapes, Landscape Splines, and static meshes are among the suitable candidates for RVT.
  4. RVT and SVT serve different needs: SVT loads data from disk, while RVT generates it at runtime.

What will you learn in this guide?

Runtime Virtual Texturing (RVT) is a method in Unreal Engine that uses textures much like traditional mapping, but generates texel data on the GPU at runtime. By caching shading data across large areas, it’s useful for Landscape surfaces, splines that conform to terrain, and layered materials. This guide walks through connecting an RVT asset to a scene, placing the volume over the right area, setting up materials to write and read data, and directing scene components to use RVT.

RVT isn’t a one-size-fits-all option for every texture. Unreal Engine’s other virtual texturing method, Streaming Virtual Texturing (SVT), is suited to large textures prepared on disk and loaded at runtime; lightmaps and detailed artist-authored textures are examples. RVT, by contrast, is intended for scenarios such as procedural or layered materials generated at runtime and blends on Landscapes.

Requirements and before you begin

Epic Games’ documentation does not specify a current or minimum Unreal Engine version or account type for this setup. It does, however, include a compatibility note about version history: the “Base Color, Normal” material type available in Unreal Engine 4.23 was removed in 4.24, and assets using it were automatically converted to the new material type. This is a migration note about an older material type, not a version requirement. Since platforms without virtual texture support may require an alternative material path, it’s also worth considering a fallback when setting up materials.

At a minimum, you’ll need the following for the scene:

  • A Runtime Virtual Texture asset (RVT Asset).

  • A Runtime Virtual Texture Volume to place the asset in the scene.

  • Materials set up to write to and/or sample from the RVT.

  • Suitable scene components assigned to the RVT asset and located within the volume bounds.

The RVT asset is the configuration element that connects materials with scene components that send data to the virtual texture. The volume places the asset in the scene; with the right material and component assignments, scene objects can write data to the texture.

Setup: step by step

1. Create an RVT asset and choose its type

Open the Content Browser’s right-click menu or click Add New. Create an asset by selecting Runtime Virtual Texture from the Materials & Textures category. Open the asset and set the virtual texture’s size, tile size, and the material properties it should support.

Choose the material type based on the data you want to store in the RVT. An option that stores only Base Color serves a different need from one that stores Base Color, normal, roughness, and specular data together. YCoCg-based Base Color encoding can help reduce color shifts and banding that may appear in smooth color gradients. However, according to Epic Games, this option has a 25 percent higher memory cost; it also adds performance overhead when sampling and resolving virtual texture data. Consider resource usage alongside visual results when making your selection.

2. Add an RVT Volume to the scene

Add a Runtime Virtual Texture Volume from the Modes panel. The volume’s bounds must contain the actor expected to write to the RVT. This is often a Landscape or terrain-like surface. Objects that sample from or write to the RVT must also be within the bounds of the relevant volume.

To set the position and scale based on an actor, select the volume and use Transform from Bounds in the Details panel. Choose an actor in the scene in the Source Actor field, or use the eyedropper tool; then adjust the volume bounds with Set Bounds. If you later add other components that will write to the RVT, this can help ensure the volume covers them too.

3. Set up materials to write to and read from the RVT

Writing data to and reading data from an RVT are set up with material expressions. Connect the existing material logic to a Runtime Virtual Texture Output expression to create the material’s RVT output. To read data from the RVT, add a Runtime Virtual Texture Sample expression to the material and bind it to the RVT asset you want to use.

If you need to change the RVT asset being sampled from within a Material Instance, you can use Runtime Virtual Texture Sample Parameter. The material type in this parameter must match the type of the assigned RVT asset. If changing the asset’s material type causes a mismatch in the sample nodes, the asset’s right-click menu includes Fix Material Usage, which can find the relevant materials and Material Functions and align their types.

4. Assign scene components to the RVT

Select the component you want to write to the RVT and add the relevant RVT asset to the Render to Virtual Textures array in the Details panel. A component can be assigned to more than one RVT asset. For writing to work, the asset must be assigned to an RVT Volume in the scene, and the component’s materials must also be set up appropriately.

Epic Games’ documentation lists Landscapes, Landscape Splines, static meshes, and instanced static meshes among the suitable candidates. Since RVT content is not fully updated every frame, components with static mobility are expected. Skeletal or animated meshes are not suitable candidates for this use.

5. Check the result and coverage

Check that the RVT Volume covers the target surface, the component is assigned to the correct RVT asset, and the material contains the required write or sample expressions. Objects writing to an RVT are rendered using the orthographic projection in the negative Z direction of the volume. For this reason, the volume’s position and coverage are important parts of the setup.

When creating an alternative material path for platforms that don’t support virtual texturing, you can use Virtual Texture Feature Switch. If you need different material logic specifically for RVT, the Runtime Virtual Texture Replace expression lets you define a path for RVT output only. The result depends on the connections in the material graph; the documentation doesn’t provide a single material recipe for every project.

Common mistakes

  • The volume doesn’t cover the target area: The RVT Volume must contain the components that write data. Review its coverage with Transform from Bounds and Set Bounds.

  • Material types don’t match: If the RVT asset and sample expression use different types, changes made through a Material Instance may cause issues.

  • Writing every scene object to the RVT: Animated and skeletal meshes aren’t suitable candidates; remember that RVT data is not fully refreshed every frame.

  • Using RVT and SVT for the same purpose: RVT is for data generated on the GPU at runtime, while SVT is for large textures prepared and loaded from disk.

  • Ignoring memory and performance costs: YCoCg encoding can help reduce color artifacts, but it adds memory and sampling costs.

Impact on architecture and archviz workflows

In architectural visualization scenes that include Landscapes, RVT can be considered for creating material transitions between terrain, splines, and scene objects. Workflows that create visual continuity between terrain-conforming roads or other surface elements in large outdoor environments are close to the use cases this method targets. However, the sources provide no specific archviz software integration, performance improvement figures, or hardware recommendations.

When making decisions for offices and student projects, consider scene scale, material type, virtual texture support on the target platform, and memory costs together. The additional resource usage of the YCoCg option should be weighed against its potential visual benefits. Animated assets should also not be considered suitable for writing to RVT. After setup, checking the material fallback path on different platforms and reviewing the volume bounds can help identify potential workflow incompatibilities.

Next steps

Limit your first test to a Landscape and a single RVT Volume; verify the material’s write and sample connections separately. Once the basic workflow works, add other scene components to the RVT and check the volume bounds again. If your project needs to load large textures prepared on disk, consider SVT; if it needs material data generated or blended at runtime, consider RVT.

Sources and licensing

This guide has been adapted into Turkish based on Epic Games’ Runtime Virtual Texturing and Virtual Texturing documentation for Unreal Engine. Both sources are marked as freely licensed; since the source texts do not name the license, no specific license type is assumed here.

Sources

2 sources
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/runtime-virtual-texturing-in-unreal-engine
Summary
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/virtual-texturing-in-unreal-engine
Summary

Source texts are not republished; short quotes are marked, everything else is our own summary and commentary.

3dsınıfı’s take
3dEditor’s assessment

RVT is worth considering, particularly for architectural visualization work that creates material transitions between terrain, splines, and static scene objects. However, it shouldn’t be treated as a general performance solution that every project needs; the sources don’t specify a minimum hardware requirement or a particular speed improvement.

For offices and students in Turkey, the best approach is to first validate the workflow on a small part of the scene. When choosing an RVT type, account for memory and sampling costs, support on the target platform, and the fact that animated assets aren’t suitable. If large textures will be loaded from disk, consider SVT as well.

Frequently asked questions

What is Runtime Virtual Texturing used for in Unreal Engine?

RVT generates texel data on the GPU at runtime and caches shading data across large areas. It can be used for Landscape materials, splines, and layered material blends.

What are the basic elements required to set up RVT?

You need an RVT asset, an RVT Volume to place it in the scene, appropriate material expressions, and scene components assigned to the RVT.

What is the difference between RVT and Streaming Virtual Texturing?

RVT generates data on the GPU at runtime. SVT is intended for large textures prepared on disk and loaded at runtime, such as virtual texture lightmaps.

Comments and the forum are in Turkish.Join the discussion
+

Related news