Focused reference · Unreal Engine 5.8
Landscape Splines, water, and RVT
Landscape Spline workflow
Use when a road, path, riverbed, or embankment must deform and optionally paint the Landscape.
- Create a dedicated Spline Edit Layer.
- Author control points and segments in Landscape Manage mode.
- Set width, side falloff, end falloff, tangent/rotation, and segment direction.
- Enable
Raise Terrainand/orLower Terrainonly where the segment should deform height. - Assign
Layer Namewhen the spline should paint a Target Layer. - Assign spline meshes with consistent forward axis, collision, LOD/Nanite, and material policy.
- Inspect intersections, sharp curvature, component boundaries, landscape seams, and navigation.
Landscape Splines do not affect height until a Spline Edit Layer exists. Route general spline motion or spline mesh implementation to $unreal-splines.
Water integration boundary
The Water plugin supplies spline-driven oceans, lakes, and rivers integrated with Landscape. Establish before authoring:
- water body type and spline ownership;
- Landscape deformation/Edit Layer ownership;
- water surface height and terrain datum;
- shore/riverbank material transition;
- collision, swimming/boat physics, nav, and gameplay volumes;
- World Partition loading and distant representation.
Do not let a Water Body, Landscape Spline, manual sculpt, and Patch all deform the same bank without a documented stack order. Verify the terrain with each layer isolated.
RVT selector
Use Runtime Virtual Texturing when it materially helps:
- cache expensive Landscape shading;
- blend static meshes/spline roads into terrain;
- add decal-like static surface contributions;
- provide a common terrain/object material-data surface.
RVT is a GPU-generated cache, not durable gameplay data. Writers are expected to be static; skeletal, movable, or animated components are poor writers.
RVT workflow
- Enable Virtual Texture support and restart.
- Create an RVT Asset with a material type and memory/resolution plan.
- Make the Landscape material write through
RuntimeVirtualTextureOutputand sample/fallback intentionally. - Place an RVT Volume and set bounds from the Landscape/required writers.
- Add the RVT asset to writer components and choose Main Pass behavior.
- Use world-space normals for consistent blending.
- Define sort priority when multiple alpha writers overlap; equal-priority order is undefined.
- Validate a fallback path for feature levels without RVT when the content must remain visible.
RVT performance/debug
stat virtualtexturing
stat virtualtexturememory
- Larger/more detailed RVTs consume more pool memory and uploads.
- YCoCg base-color encoding reduces banding but uses about 25% more memory and adds decode cost.
- A writer rendered only to RVT may still have collision; disable it when not needed.
- Diagnose missing writers by checking volume bounds, asset/material type match, Render to Virtual Textures, Main Pass setting, and sort priority.