Latest news
Tips & GuidesUnreal Engine

Runtime Virtual Texturing in Unreal Engine: Setup Guide for Architectural Scenes

Runtime Virtual Texturing in Unreal Engine generates texture data on the GPU at runtime and caches shading data across large surfaces. This guide explains the RVT setup steps for architectural scenes and what to consider when making choices.

Architectural visualization of a contemporary home integrated with terrain and layered landscape surfacesAI image
Representative image, generated with AI.Image: 3dsınıfı / FCA AI

In brief

  1. Runtime Virtual Texturing (RVT) generates texture data on the GPU at runtime and caches shading data across large areas.
  2. A basic setup combines an RVT asset, an RVT Volume in the scene, compatible materials, and component assignments.
  3. Landscape, Landscape Splines, Static Mesh, and Instanced Static Mesh components are listed in the documentation as suitable RVT candidates.
  4. A YCoCg-based material type can reduce some artifacts in color gradients, but adds 25 percent more memory use and sampling cost.

Runtime Virtual Texturing (RVT), as described in Unreal Engine’s official documentation, generates texture data on the GPU as needed and caches shading information across large surfaces. It can be considered in architectural visualization projects, particularly when working with Landscape surfaces, materials that conform to terrain, and splines. The steps below are based on Epic’s RVT setup documentation. The documentation does not target a single Unreal Engine version for general setup; however, its compatibility note says the older “Base Color, Normal” material type was available in UE 4.23 and automatically converted to another type in UE 4.24.

When does RVT make sense in a scene?

RVT can be used to apply complex, layered, or procedural materials to large surfaces. The official documentation highlights Landscape shading, Landscape Splines, decal-like materials on meshes, and blending terrain with objects as key use cases. Since the system can store shading data across large areas, it can support workflows involving terrain and similar surfaces in outdoor scenes.

RVT should not be confused with Streaming Virtual Texturing (SVT). Both methods are associated with large texture resolutions and loading data into memory as needed. However, RVT texel data is generated by the GPU at runtime, while SVT data is prepared on disk and then loaded. Epic describes SVT as a suitable option for data that takes time to generate, such as lightmaps and large, detailed textures created by artists.

RVT setup: five basic steps

  1. Create an RVT asset. In the Content Browser, use the Add New button or the right-click menu, then select Runtime Virtual Texture from the Materials & Textures category. This asset connects the volumes in the scene with materials that write data to or read data from the RVT. Open the asset to configure its size, tile size, and the Material Attributes type it will support.

  2. Add a Runtime Virtual Texture Volume to the scene. The volume places the RVT asset you created in the scene. The documentation describes adding the volume from the Modes panel or dragging it into the scene from the Place Actors panel. The volume must contain the actor whose data will be written to the RVT; this is usually a Landscape or a terrain-like surface.

  3. Adjust the volume to the source’s bounds. With the RVT Volume selected, use the Source Actor field in the Transform from Bounds section of the Details panel to select the relevant actor. The Set Bounds button then helps adjust the volume’s position, scale, and rotation to match the actor. If other components will also write to the RVT, check again that the volume contains them.

  4. Prepare the material for writing and sampling. The Runtime Virtual Texture Output expression in a material is used to write data to the RVT, while the Runtime Virtual Texture Sample expression reads data from the assigned asset. Materials on components that write to the RVT must use the Virtual Texture material field or include the appropriate RVT Material Expressions. To change the asset in a separate material instance, use Runtime Virtual Texture Sample Parameter; the selected asset’s material type must match the type in the parameter node.

  5. Verify component assignments. Add the relevant RVT asset to the component’s Render to Virtual Textures array in the Details panel. Components that write to or sample from the RVT must be within the volume’s bounds. The RVT asset must also be assigned to a volume in the scene, and the material must be prepared correctly; if any of these conditions is missing, the expected data flow may not be established.

Material types and lightmap options

The Material Type selected in the RVT asset determines the type of data stored. The options below are listed in the documentation; they are types for different data needs, not recommended settings for every project.

SettingMaterial typeStored data / note
Material TypeBase ColorStores only the base color; its compressed format is BC1.
Material TypeBase Color, Normal, Roughness, SpecularStores base color, normal, roughness, and specular data; compression uses two BC3 textures.
Material TypeYCoCg Base Color, Normal, SpecularEncodes the base color in YCoCg format; also includes normal, roughness, and specular data.
Material TypeWorld HeightStores a height value normalized against the minimum and maximum Z coordinates in the RVT Volume.
Material TypeMask4Stores a four-channel mask, with each channel ranging from 0 to 1.

YCoCg encoding can help reduce issues such as color shifts and banding that may appear in smooth transitions in base color data. The trade-off, according to the documentation, is 25 percent more memory use and additional performance cost when sampling and decoding virtual texture data. When choosing a type, consider not only visual quality but also its impact on memory and performance.

Support for virtual texture lightmaps can be enabled under Project Settings › Engine › Rendering, using the Enable virtual texture lightmaps setting. Epic notes that this feature can improve the streaming performance and quality of lightmap bakes. r.IncludeNonVirtualTexturedLightmaps controls whether non-virtual lightmaps are generated and saved. r.VT.EnableLossyCompressLightmaps enables lossy compression for lightmaps; the documentation notes that this option reduces the quality of lightmap textures.

Architectural visualization workflows and common mistakes

RVT can be considered for architectural scenes that include large landscape surfaces, Landscape materials, and static components that need to blend into terrain. In addition to Landscape and Landscape Splines, Static Mesh and Instanced Static Mesh components are listed as suitable candidates. Skeletal and animated meshes, on the other hand, are not good candidates. Since RVT content is not fully updated every frame, objects writing to the system are generally expected to be Static.

Common setup mistakes include:

  • The RVT Volume does not contain the components that write to or sample from it.

  • Expecting results before preparing the material or assigning the correct RVT asset to the component.

  • Using moving and animated meshes as if they were a shading cache that updates regularly.

  • Choosing the YCoCg option without accounting for its additional memory and sampling cost.

  • Overlooking the impact of lossy lightmap compression on quality.

A Virtual Texture Feature Switch in the scene material can provide an alternative path for platforms that do not support virtual texturing. In practice, check the RVT asset, volume bounds, material nodes, and component assignments individually first. Then compare visual results and performance in your own scene. Since the documentation specifies neither a hardware requirement nor a single setting value that applies to every project, it is important to validate choices against project conditions.

Sources

2 sources
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/virtual-texturing-in-unreal-engine
Summary
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/runtime-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

For architectural visualization offices in Turkey, RVT is a method worth testing in scenes with large landscape areas and static geometry that blends into terrain. The result depends on correctly setting up the asset, volume, material, and component assignments together; for this reason, testing on a representative section of a scene first can reveal potential issues before rolling the system out across an entire project.

The sources do not specify a particular graphics card or memory requirement. Offices should measure performance and quality in their own scenes, especially accounting for YCoCg’s additional memory and sampling cost. The suitability of moving objects and the impact of lightmap compression on quality should also be included in the pre-delivery checklist.

Frequently asked questions

What does Runtime Virtual Texturing do in Unreal Engine?

RVT generates texture data on the GPU at runtime and caches shading data across large areas. It can be used for Landscape shading, splines, and blending terrain with objects.

How do you set up an RVT Volume?

Add a Runtime Virtual Texture Volume to the scene. In the Details panel’s Transform from Bounds section, select a Source Actor, then use the Set Bounds button to adjust the volume to the actor.

Which objects are not suitable for RVT?

The documentation does not list skeletal and animated meshes as good candidates. Since RVT content is not fully updated every frame, objects writing to the RVT are generally expected to be Static.

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

Related news