Appearance
INFO
This release targets Unreal Engine 5.5 and 5.6 Preview 1.
This release brings a wide range of features and improvements, including:
- A largely final version of the sculpting system, both in-editor and at runtime
- The addition of Volume Spline Graphs, as well as substantial performance improvements to Height Spline Graphs
- Support for complex auto-materials (Smart Surface Types) using Voxel Graphs
- Across-the-board performance improvements
Migration Notes
DANGER
This release has many migrations, as well as changed stamp behavior.
They're long, but we really recommend reading all of the migration notes for this release.
Asset & Graph Migrations
WARNING
This release brings a lot of new asset types and migrations for existing assets.
Please use the Upgrade Voxel Assets helper to automatically migrate (and clean up) these assets.

DANGER
If you have any Sculpt Stamps in your project which need to be migrated, open the levels containing them before running Upgrade Voxel Assets.
- Stamps and Voxel Graphs now use
Surface Type
assets instead ofMaterial
assets.Surface Type
assets will be automatically created (at the root of the content folder) for any materials being used. All voxel material-related assets now useSurface
naming to prevent confusion with stock materials.- (V)PCG graphs looking for material attributes by name will need to be updated to match the names of the new assets.
Layered Materials
have been removed. Use aSmart Surface Type
with aSurface Type Graph
instead.- Material blending logic has been updated to support more materials per position - materials may looks slightly different due to this change.
Voxelized Mesh Stamps
now use aVoxel Static Mesh
asset instead of aStatic Mesh
asset pointing to aVoxelized Mesh
asset. These assets will be automatically created. Previously createdVoxelized Mesh
assets are no longer used and can be deleted. Settings from these old assets will not be automatically migrated.CreateVoxelizedMeshDistanceField
has been removed. UseSample Volume Stamp
instead.
MakeSphereDistanceField
andMakeBoxDistanceField
have been removed. Use the nodes in the Shape category instead.GetClosestHeightSplinePoint
has been replaced withGetSplinePoint
.- The various
Get Previous ...
nodes have been replaced withSample Previous Height/Volume Stamps
. IsValid
has been replaced byIsNaN
andReplaceNaN
.Query with Position
has been renamed toOverride Downstream Position
.VoxelGraphHeightmap
assets and its related nodes have been removed. This includes theCreateCubemapPlanetDistanceField
node.- The replacement for most related usecases is the
VoxelHeightmap
asset type. These can be sampled in graphs using theSample Stamp
nodes.
- The replacement for most related usecases is the
- Previous Blueprint API around sculpting has been deprecated and replaced. This will not be automatically migrated.
- Sculpt stamps have been removed. Use
Voxel Height/Volume Sculpt Actors
instead.
- Sculpt stamps have been removed. Use
- Smooth Blends for MegaMaterials have been removed. This has been replaced by a dither-based blend. The smoothness of each material is controlled using the Blend Smoothness value inside
Voxel Surface Type
assets.
Changes to Stamp Behavior
Substantial changes have been made to the way the distance field behaves, and the way stamps write their data into it.
TIP
In-depth information on how the new system works (with images) can be found here:
Some of the big changes are around stamp bounds:
- Height stamps no longer have infinite vertical bounds. They instead have a height range. The stamp will be clamped (flattened) if it has values outside of this range. This range is automatically determined for heightmap stamps, but needs to be manually configured for
Height Graphs
. Migrated graphs will have a height range of -1M to 1M assigned. Consider tweaking this for better performance (or in the case of very tall height graphs, if you see flat areas). - Every stamp now has a
Bounds Extension
property. Use this to compensate for smoothness. On height stamps, this only grows the vertical bounds.
The other big change is about empty space around terrains, and how stamps interact with that empty space:

Previously, if you had a heightmap as base terrain, it would apply for every vertical position, so there would be a valid distance for every position above and below it. This is no longer the case - the heightmap will now only have a valid distance up to a certain distance away from its surface. Positions without a valid distance are called Voids
.
INFO
Because Void
positions don't have a valid distance, we don't know if they are inside the terrain's surface or outside (air).
Because height-based 'base' terrains no longer prevent Void
positions like they used to, Voids
are now much more common.
- All stamps now have an
Apply on Void
setting. When this is true (which is the default), stamps will apply themselves in spots with no previous stamps (and therefore no 'valid' distance).- If you see artifacts such as 'caves' appearing in the sky, disabling this property on those stamps will fix it.
- Previously, only additive stamps would apply on voids. To create caves, you would have to first create an additive base terrain. This is no longer the case.

All of the above also applies to spline stamps. One additional issue with spline bounds remains:
- If you're using a height spline which runs parallel to itself, and has rapidly changing values, you may see artifacts.
- This will look like the artifacts you see when stamp bounds are too small.
- This can be 'fixed' by increasing the height range.
- We hope to fix this issue in a future release.
General Improvements & Performance
With that long list of migrations out of the way, let's move on to the more exciting things!
- Thanks to the changes in stamp behavior outlined in the migration notes, generation performance - especially for height stamps - has been substantially improved.
- Added support for Hardware Raytracing.
- Dramatically improved Distance Field generation speed.
- A warning is now shown in the Voxel World's details panel when Lumen is enabled but not supported.
- Added a Quality Exponent setting, making it possible to control distant terrain quality separately from nearby terrain quality.
- Generally improved Voxel World update latency.
- Hitching when spawning stamps has been substantially improved; the stamp tree build is now done async.
- A host of new debugging commands have been added.
- A new
Voxel Commands
section has been added to the Voxel toolbar menu.
- A new
- Selecting a stamp in a level instance now selects the level instance.
- Added support for the stock Foliage tools by generating static meshes in-editor.
- Fixed various crashes.
- Clicking the same spot multiple times now cycles actor selection through stamps affecting that spot.
- Fixed various issues with Android rendering.
- Some issues remain.
- Improved the voxel callstack UI.
- Voxel Assets now implement
GetPrimaryAssetID
. - Fast math has been disabled. This fixes precision errors between Windows clients and Linux servers.
- Added more pop-ups to help ‘auto-fill’ voxel world settings.
- Prompt to create a Voxel World if there isn’t one.
- Prompt to assign or create a MegaMaterial if none is assigned.
- Prompt to add materials used on the terrain to the MegaMaterial.
- Added and improved a range of tooltips.
- The
MegaMaterialCache
asset now autosaves without being tracked as such by the editor. This behavior can be disabled.
Sculpting
- Refactored sculpting to be significantly more performant.
- Added support for material and metadata painting.
- Added a wider range of height sculpting tools.
- Added Blueprint API so sculpting tools can be used at runtime.
- Height sculpts now support different blend modes.
- Fixed alpha brush glitches.
Stamps
- Height stamps can now be rotated on the XY axes.
- Slopes exceeding 90 degrees will be clamped.
Voxel Static Meshes
can now write material data from the source mesh into metadata.Voxel Static Meshes
now support bicubic mesh sampling. This gives higher-quality results when they are upscaled.
- Generation speed for splines is now >100x faster.
- When spline points are adjusted, only the chunks overlapping the adjusted spline segments will update.
- Previously, if any spline point was adjusted, the entire spline would regenerated every overlapping chunk.
- Support for Volume Graph Splines has been added.
- All spline-related nodes in Voxel Graphs have been refactored.
- Getters like
GetTransformAlongSpline
now properly respect tangents. - Most spline-related nodes now use keys (can be left empty to use the current position). This makes it easier to get spline data from specific points, mostly for advanced usecases.
- Getters like
- Spline Parameters can now have default values.
- Priority on newly placed stamps is now automatically set to be the highest in the level.
- A warning icon is now shown when properties (like blend mode) are overriden by the assigned graph.
- Improved Shape stamp UX.
- Shape stamps now use a visual picker, and all properties are inline instead of collapsed in a category.
- Fixed bounds for stamps using the Intersect blend mode.
Materials & Surface Types

INFO
Note: Voxel Materials
(materials applied to the voxel terrain) are now called Surface Types
. This was changed to prevent confusion with stock Unreal Engine materials.
- Up to 8 surface types can now be blended per position, up from 3 in previous releases.
- Added
Smart Surface Types
andSurface Type Graphs
, making it possible to easily build 'auto-materials' for voxel terrains.- The recommended workflow is to have a single
Surface Type
(and Material Instance) for a given texture set (i.e. gravel, mud, rock, etc.). Those can then be easily and performantly blended by the voxel terrain. Set this up using aSurface Type Graph
; a Voxel Graph specifically used to blend different materials.
- The recommended workflow is to have a single
- Blending logic has been improved to be (much) more consistent when multiple layers are overlapping with low weights. Displacement will not appear 'flattened' in these areas anymore.
- Added support for Displacement Fade for generated materials (controlled from the MegaMaterial).
- Added support for rendering into RVTs from the Voxel World.
- Added
GetVoxelRandom
node for material graphs. This returns a random value for each unique material, making it easy to ensure that i.e. texture size is never the same for two materials. This is useful to make sure heights are never exactly the same for two materials, as this leads to a sharp edge when blending them. - Generated materials now support having multiple shading models.
- Generated materials now support anisotropy.
- Inline values from the default fields on material outputs now properly transfer to generated materials.
- The Smooth Blends solution from p6 has been removed.
- A new solution for Smooth Blends has been added, with full support for standard height blending.
- This uses the standard one-material-per-pixel shading pipeline, but dithers the material selection. This relies on TAA to resolve the dither effect.
- This solution relies on TAA/TSR to resolve the dither effect. Without this, a 'speckle' pattern will be visible.
- Each
Voxel Surface Type
asset has aBlend Smoothness
value, controlling how strongly that material is dithered in blend areas.- If a surface type has a blend smoothness of 0, it will always have hard edges, regardless of the blend smoothness of the other surface types it's blending with.
- To mimic the old 'pure' Smooth Blends without height blending, feed a constant value of 0.5 into your material's displacement pin.
- Make sure to enable the
Dither Noise Texture
property in the MegaMaterial - without this, the smooth blends will appear 'banded'.
- Make sure to enable the
- This uses the standard one-material-per-pixel shading pipeline, but dithers the material selection. This relies on TAA to resolve the dither effect.
Voxel Graphs
- Added (back) new basic shape nodes, such as
MakeCube
- each with accompanying node for generating bounds, i.e.MakeCubeBounds
. - Textures can now be sampled in Voxel Graphs using
Voxel Texture
assets.- This can also be used to write arbitrary data from gameplay code into a texture for easy access in graphs.
Select
nodes now branch their input pins - this means they now only run one of the inputs per position. This can be a substantial performance improvements for biome workflows.- We hope to add similar behavior for
Lerp
nodes in the future. Until then, theLerp
node can be manually put behind aSelect
sequence to not be run if it's not needed.
- We hope to add similar behavior for
- Any previous stamp data can now be queried in any 'pipeline'.
- For example, metadata and materials can be queried in distance networks, distance can be queried in metadata networks, etc..
- Voxel Graphs now have a 3D preview.
- Fixed metadata pins being reset when a new metadata pin is added.
- Added
Normalized
toggle to GetGradient. - Added
GetGradient2D
. - Nodes requiring a
Position
input now useGetPosition2D/3D
as default. - Added
SampleHeight/VolumeStampParameter
nodes. These function like the usualSampleStamp
nodes, but take a stamp parameter as input pin instead of relying on the details-panel.
(V)PCG
- When returning Smart Surface Types, PCG nodes now output the resolved Surface Types instead.
- Fixed the
Generate2DPoints
VPCG node. - Fixed VPCG hitching when missing attribute errors are thrown.
- Fixed foliage mismatches between Windows and Linux.