Skip to main content

Oceanology Next-Gen — RVT (Runtime Virtual Texture)

Last updated: 2025-12-13

Prerequisites

  • Unreal Engine 5.5 or newer.
  • Oceanology installed and configured (see the Setup page).
  • A Landscape actor in your level for terrain-water interaction.
  • Runtime Virtual Texturing enabled in Project Settings.
  • Basic familiarity with Virtual Textures and Materials in Unreal Engine.

Notes

  • The RVT (Runtime Virtual Texture) system in Oceanology enables seamless blending between water and terrain. It captures heightmap data from your landscape and uses it to create smooth shoreline transitions, proper depth-based effects, and accurate water-terrain intersections.
  • RVT eliminates harsh water edges by sampling the actual terrain height at runtime, allowing the water shader to know exactly where land meets water.
  • The system requires both the OceanologyManager (for heightmap capture setup) and the OceanologyInfiniteOcean (for RVT rendering settings) to be properly configured.

Step-by-step

1. Add the Oceanology Manager to your scene

Open your level and use the Quickly Add to the Project menu (the + button in the toolbar or right-click in the viewport). Type Oceanology in the search field to filter the available actors.

Locate and add the following actor:

  • Oceanology Manager — The central controller that manages RVT heightmap capture and other Oceanology systems.

The Manager is essential for RVT functionality as it handles the heightmap generation from your landscape. Without it, the water will not have terrain depth information for proper shoreline rendering.

Other useful actors visible in the menu:

  • Oceanology Infinite Ocean — The main ocean water body.
  • Oceanology Lake — Bounded water body for lakes.
  • Oceanology Water Volume — Interaction volume for buoyancy and effects.

Quickly Add menu with Oceanology Manager

2. Configure the Oceanology Manager for RVT

Select the OceanologyManager actor in your level. In the Details panel, you will find the RVT-related configuration sections:

Transform:

  • Location — Position of the manager actor. Example: -100800.0, -100800.0, -100.0
  • Scale — Defines the capture area size. Example: 201600.0, 201600.0, 15089.843. This should cover your entire landscape.

Heightmap:

  • Setup Landscape/Ground Mesh — Click this button to automatically configure the heightmap capture based on your landscape. This is the quickest way to set up RVT.

RVT Settings:

  • Auto Configure Functions — ✅ Enabled. Automatically sets up RVT capture functions.
  • Auto Configure Heightmap Location and Scale — ✅ Enabled. Automatically positions and scales the heightmap capture to match your landscape bounds.
  • Auto Configure Water Z — ✅ Enabled. Automatically determines the water surface Z height.

Volume Bounds:

  • Bounds Align ActorLandscape. Select the landscape actor to align the capture volume.
  • Set Bounds — Click to manually set the capture bounds if auto-configure doesn't produce desired results.

Advanced:

  • Snap To Landscape — When enabled, snaps the manager to the landscape surface.
  • Expand Bounds0.0. Adds padding to the capture bounds.

OceanologyManager RVT settings

3. Configure RVT settings on the Ocean actor

Select the OceanologyInfiniteOcean actor in your level. In the Details panel, locate and expand the RVT category:

RVT Parameters:

  • WaterZMin-100.0. The minimum Z height for water rendering. Water below this level will not render RVT effects.
  • HeightmapLocation — Vector defining the world position of the heightmap capture origin. Displayed as a blue color picker for X/Y coordinates.
  • HeightmapScale — Vector defining the scale/size of the heightmap capture area. Displayed as a yellow color picker.
  • WaterBoxScale — Vector defining the water rendering box dimensions. Displayed as a dark color picker.

Heightmap Asset:

  • RVT_HeightmapRVT_Heightmap. The Runtime Virtual Texture asset that stores the captured heightmap data. This texture is sampled by the water material to determine terrain depth.

The heightmap preview shows a grayscale representation of your terrain — white areas are high elevation, black areas are low. This data drives the water depth calculations and shoreline blending.

RVT settings on OceanologyInfiniteOcean

4. Understand the RVT Material setup

The RVT system works through a material setup that captures terrain data and outputs it to a Runtime Virtual Texture. Open the M_Grid material (or your landscape material) to see how heightmap data flows:

Heightmap Data Node:

  • Absolute World Position (Excluding Material Offsets) — Provides the world position for height sampling.
  • Input Data — The heightmap input connection.
  • XYZ — Full 3D position output.
  • XY — Horizontal position only.
  • Z — Vertical height value (most important for water depth).

Runtime Virtual Texture Output: This node writes data to the RVT for the water shader to sample:

  • BaseColor — Surface color information.
  • Specular — Specular reflection data.
  • Roughness — Surface roughness values.
  • Normal — Surface normal vectors.
  • WorldHeight — The terrain height at each point (critical for water depth).
  • Opacity — Transparency information.
  • Mask — General purpose masking.
  • Displacement — Vertex displacement data.
  • Mask4 — Additional mask channel.

The Z output from Heightmap Data connects to WorldHeight on the RVT Output. This is how the water shader knows the terrain elevation at every point, enabling proper depth-based coloring and shoreline blending.

Material Editor with RVT heightmap setup


RVT Output Channels Reference

ChannelPurposeUsed By Water For
WorldHeightTerrain elevationDepth calculation, shoreline blending
BaseColorTerrain colorUnderwater terrain tinting
NormalSurface normalsCaustic projection alignment
RoughnessSurface roughnessWetness effect intensity
MaskCustom maskingFoam generation, effect zones
OpacityTransparencyWater edge softness

Configuration Guidelines

ScenarioRecommended Settings
Quick setupClick "Setup Landscape/Ground Mesh" on Manager
Large landscapesIncrease Manager Scale to cover entire terrain
Multiple landscapesPosition Manager at center, expand bounds
Custom shorelinesAdjust WaterZMin on Ocean actor
Performance optimizationReduce RVT resolution in Project Settings
Sharp water edgesVerify HeightmapScale matches landscape bounds

Troubleshooting Common Issues

ProblemLikely CauseSolution
No shoreline blendingRVT not configuredClick "Setup Landscape/Ground Mesh" on Manager
Water ignores terrainRVT_Heightmap not assignedVerify RVT_Heightmap is set on Ocean actor
Incorrect depth colorsHeightmapLocation/Scale mismatchEnable Auto Configure options on Manager
Harsh water edgesWaterZMin too lowIncrease WaterZMin value
RVT not updatingVirtual Texturing disabledEnable in Project Settings > Rendering
Heightmap appears blankLandscape material missing RVT outputAdd Runtime Virtual Texture Output to landscape material
Performance issuesRVT resolution too highReduce virtual texture size in Project Settings
Water floating above terrainWaterZMin too highLower WaterZMin value

Summary

In this guide, you learned how to:

  1. Add the Oceanology Manager — Place the manager actor that handles RVT heightmap capture.
  2. Configure Manager RVT settings — Set up automatic heightmap capture aligned to your landscape.
  3. Configure Ocean RVT settings — Adjust heightmap location, scale, and the RVT texture reference.
  4. Understand the Material setup — See how heightmap data flows from terrain to the Runtime Virtual Texture Output.

With RVT properly configured, your ocean will seamlessly blend with the terrain, showing accurate depth-based coloring, smooth shoreline transitions, and proper water-land intersections without harsh edges.