Advanced Topics
Once you are comfortable building meshes with the core component API and the mesh types, the extension modules open up three larger workflows: generating geometry from reusable, thread-safe providers; streaming mesh cells in and out around the player; and mutating geometry entirely on the GPU with compute shaders.
Each of these lives in its own runtime module so you only compile what you use. The pages below walk through the real, shipped APIs and ground every example in an actor from the RealtimeMeshExamples module so you can open the source and run it.
In this section
Section titled “In this section”-
Custom Providers — Write a mesh generator against
FRealtimeMeshGenerator(moduleRealtimeMeshExt). A generator is stateless and thread-safe, so one instance can drive many meshes concurrently on worker threads. You feed it a per-mesh descriptor and it produces whichever aspects (structure, geometry, bounds, collision, Nanite) are dirty. Covers theTRealtimeMeshProvider<TConfig>convenience base, registering a provider so designers can pick it in the editor, and consuming one fromURealtimeMeshConstructed. -
Spatial Streaming — Load and unload mesh cells around the player with the
RealtimeMeshSpatialmodule. A tickable world subsystem tracks streaming sources (the player is added automatically) and drives a quadtree/LOD state machine that fires four lifecycle delegates — load, activate, deactivate, unload — per cell. Ideal for procedural terrain and other worlds too large to keep resident at once. -
Compute Providers — Drive a section’s geometry from a GPU compute shader (module
RealtimeMeshCompute). Create a compute-writable section group, implementIRealtimeMeshComputeProvider::BuildComputePasses, and register it to run every frame, on demand, or on an interval. Covers motion-vector output for TSR/TAA-clean deformation and GPU indirect draws. This path is C++ only. -
Mesh Replication — Auto-replicate managed mesh geometry server-to-clients when the optional UnrealNet plugin is installed (module
RealtimeMeshNetSync). Meshes stream coarsest-LOD-first so clients render immediately and refine progressively; late joiners catch up automatically. Zero-config beyond enabling the plugins and replicating the actor.
Prerequisites
Section titled “Prerequisites”These topics assume you already know how to:
- Create a mesh with
InitializeRealtimeMesh<T>()on aURealtimeMeshComponent— see Component Core. - Build streams with the stream builders (
TRealtimeMeshBuilderLocal) — see Key Concepts. - Work with section groups and sections — see Component Core.
The provider and spatial-streaming pages both build on URealtimeMeshConstructed, so read the Constructed mesh type first if you have not already.