Voxel Plugin
2.0p5
2.0p5
  • Home
  • Getting Started
    • Installing Voxel Plugin
    • Working with Voxel Plugin
      • First Steps with Voxel Worlds
    • Installing Example Content
    • Migrating from Voxel Plugin Legacy
  • Knowledgebase
    • Working with Stamps
      • Stamp Types
        • Height & Volume Stamps
        • Spline Stamps
        • Sculpt Stamps
      • Layers & Priority
      • Blend Modes
      • Instanced Stamps
    • Using the Graph Editor
      • Graph Preview
      • Functions & Function Libraries
    • Foliage & PCG
      • Configuring PCG
      • Using PCG on Voxel Terrains
      • Voxel PCG Graphs
    • Materials & Metadata
      • Flat Normals & Blocky Rendering
      • Authoring Materials
        • Smooth (Alpha) Blends
      • Working with Metadata
    • Gameplay Systems
      • Blueprint API
        • Spawning & Configuring Stamps
        • Querying Voxel Data
        • Writing Voxel Data to Render Targets
      • Collision, Navmesh & Invokers
      • Multiplayer Support
    • Technical Information
      • Adding Custom Nodes using C++
      • Buffers and Uniforms
      • Profiling & Debugging
        • Compiling From Source
        • Generation Performance
        • Memory Usage & Render Performance
        • Debugging plugin code
      • Platform Support
        • Targeting Mac & iOS
        • Targeting Android
  • Resources
    • Change Log
    • Voxel Graph API
      • Noise
        • Advanced Noise 2D
        • Advanced Noise 3D
        • Domain Warp 2D
        • Domain Warp 3D
        • Perlin Noise 2D
        • Perlin Noise 3D
        • Cellular Noise 2D
        • Cellular Noise 3D
        • True Distance Cellular Noise 2D
        • True Distance Cellular Noise 3D
        • Simplex Noise 2D
        • Simplex Noise 3D
        • Value Noise 2D
        • Value Noise 3D
      • Array
        • Length
        • Get
        • Make Array
        • Add to Array
        • Append Array
      • Math
        • Boolean
          • AND Boolean
          • OR Boolean
          • NAND Boolean
          • NOT Boolean
          • NOR Boolean
          • XOR Boolean
        • Operators
          • Equal
          • Nearly Equal
          • Not Equal
          • Less
          • Greater
          • Less Equal
          • Greater Equal
          • Ceil
          • Round
          • Floor
          • Add
          • Subtract
          • Multiply
          • Divide
          • % (Integer)
          • Min
          • Max
          • Abs
          • One Minus
          • Sign
        • Misc
          • Clamp
          • Mapped Range Value Clamped
          • Mapped Range Value Unclamped
          • Interpolate
          • Lerp
          • Smooth Step
          • Height Splitter
        • Trig
          • Sin (Radians)
          • Sin (Degrees)
          • Cos (Radians)
          • Cos (Degrees)
          • Tan (Radians)
          • Tan (Degrees)
          • Asin (Radians)
          • Asin (Degrees)
          • Acos (Radians)
          • Acos (Degrees)
          • Atan (Radians)
          • Atan (Degrees)
          • Atan2 (Radians)
          • Atan2 (Degrees)
          • Get PI
          • Radians to Degrees
          • Degrees to Radians
        • Float
          • Bilinear Interpolation
          • Frac
          • Power
        • Integer
          • Left Shift
          • Right Shift
          • Bitwise AND
          • Bitwise OR
          • Bitwise XOR
          • Bitwise NOT
        • Rotation
          • Make Quaternion
          • Break Quaternion
          • Make Rotation from Z
          • Combine Rotation
          • Get Forward Vector
          • Get Right Vector
          • Get Up Vector
          • Rotate Vector
          • Unrotate Vector
        • Seed
          • Mix Seeds
          • Make Seeds
        • Vector Operators
          • Cross Product
          • Dot Product
          • Normalize
          • Length
          • Length XY
          • Distance
          • Distance 2D
        • Conversions
          • To Double Vector (Double Linear Color)
          • To Double Vector 2D (Double Linear Color)
          • To Linear Color (Double Linear Color)
          • To Vector (Double Linear Color)
          • To Vector 2D (Double Linear Color)
          • To Double Linear Color (Double)
          • To Double Vector (Double)
          • To Double Vector 2D (Double)
          • To Float (Double)
          • To Double Linear Color (Double Vector 2D)
          • To Double Vector (Double Vector 2D)
          • To Linear Color (Double Vector 2D)
          • To Vector (Double Vector 2D)
          • To Vector 2D (Double Vector 2D)
          • To Double Linear Color (Double Vector)
          • To Double Vector 2D (Double Vector)
          • To Linear Color (Double Vector)
          • To Vector (Double Vector)
          • To Vector 2D (Double Vector)
          • To Double (Float)
          • To Linear Color (Float)
          • To Vector (Float)
          • To Vector 2D (Float)
          • To Double (Integer)
          • To Float (Integer)
          • To Int Point (Integer)
          • To Int Vector (Integer)
          • To Int Vector 4 (Integer)
          • To Seed (Integer)
          • To Double Linear Color (Int Point)
          • To Double Vector (Int Point)
          • To Double Vector 2D (Int Point)
          • To Int Vector (Int Point)
          • To Int Vector 4 (Int Point)
          • To Linear Color (Int Point)
          • To Vector (Int Point)
          • To Vector 2D (Int Point)
          • To Double Linear Color (Int Vector 4)
          • To Double Vector (Int Vector 4)
          • To Double Vector 2D (Int Vector 4)
          • To Int Point (Int Vector 4)
          • To Int Vector (Int Vector 4)
          • To Linear Color (Int Vector 4)
          • To Vector (Int Vector 4)
          • To Vector 2D (Int Vector 4)
          • To Double Linear Color (Int Vector)
          • To Double Vector (Int Vector)
          • To Double Vector 2D (Int Vector)
          • To Int Point (Int Vector)
          • To Int Vector 4 (Int Vector)
          • To Linear Color (Int Vector)
          • To Vector (Int Vector)
          • To Vector 2D (Int Vector)
          • To Double Linear Color (Linear Color)
          • To Double Vector (Linear Color)
          • To Double Vector 2D (Linear Color)
          • To Vector (Linear Color)
          • To Vector 2D (Linear Color)
          • To Integer (Seed)
          • To Double Linear Color (Vector 2D)
          • To Double Vector (Vector 2D)
          • To Double Vector 2D (Vector 2D)
          • To Linear Color (Vector 2D)
          • To Vector (Vector 2D)
          • To Double Linear Color (Vector)
          • To Double Vector (Vector)
          • To Double Vector 2D (Vector)
          • To Linear Color (Vector)
          • To Vector 2D (Vector)
        • Box
          • Break Box
          • Break Box 2D
          • Extend Box
          • Extend Box 2D
          • Is Box 2D Valid
          • Is Box Valid
          • Make Box
          • Make Box 2D
          • Make Box 2D From Radius
          • Make Box from Radius
          • Make Infinite Box
          • Transform Box
        • Curve
          • Make Curve from Asset
          • Sample Curve
        • Color
          • Break Double Linear Color
          • Break Linear Color
          • Make Double Linear Color
          • Make Linear Color
        • Vector
          • Break Double Vector
          • Break Vector
          • Make Double Vector
          • Make Vector
        • Vector2D
          • Break Double Vector 2D
          • Break Vector 2D
          • Make Double Vector 2D
          • Make Vector 2D
        • Interval
          • Break Float Range
          • Break Integer Range
          • Make Float Range
          • Make Integer Range
        • Int Point
          • Break Int Point
          • Make Int Point
        • Int Vector
          • Break Int Vector
          • Make Int Vector
        • Int Vector 4
          • Break Int Vector 4
          • Make Int Vector 4
        • Transform
          • Break Transform
          • Combine Transform
          • Inverse Transform Location
          • Make Transform
          • Transform Location
        • Distance
          • Smooth Intersection
          • Smooth Max
          • Smooth Min
          • Smooth Subtraction
          • Smooth Union
      • Color
        • Distance to Color
      • Name
        • Append Names
      • Point
        • Generate 2D Points
        • Make Points
        • Make Radial Point Spawner
        • Merge Points
        • Prune by Bounds
        • Prune by Distance
        • Scatter Points
        • Set Point Attribute
        • Get Point Attribute
        • Set Parent Point Attribute
        • Get Parent Point Attribute
        • Set Point Mesh
        • Get Point Mesh
        • Get Parent Point Mesh
        • Set Point Position
        • Get Point Position
        • Get Parent Point Position
        • Set Point Rotation
        • Get Point Rotation
        • Get Parent Point Rotation
        • Set Point Scale
        • Get Point Scale
        • Get Parent Point Scale
        • Set Point Normal
        • Get Point Normal
        • Get Parent Point Normal
        • Set Point Custom Data
        • Get Point Custom Data
        • Get Parent Point Custom Data
        • Get Point Seed
        • Set Point Density
        • Get Point Density
        • Set Point Bounds Min
        • Get Point Bounds Min
        • Set Point Bounds Max
        • Get Point Bounds Max
        • Set Point Color
        • Get Point Color
        • Set Point Steepness
        • Get Point Steepness
        • Apply Translation
        • Apply Rotation
        • Apply Scale
        • Get Points
        • Filter Points
        • Density Filter
      • PCG
        • Get Input Points
      • Stamp
        • Get Previous Distance
        • Get Previous Height
      • Misc
        • Make Value
        • Raise Error
        • Is Valid
        • Query with Position
        • Filter Buffer
        • Get Collision Enabled
        • Get LOD
        • Is Editor World
        • Is Game World
        • Is Hidden in Editor
        • Is Preview Scene
        • Get Height Blend Mode
        • Get Height Smoothness
        • Is Height Override Blend Mode
        • Get Position 2D
        • Get Position 3D
        • Get Volume Blend Mode
        • Get Volume Smoothness
        • Is Volume Override Blend Mode
      • Biome
        • Query Biomes: null
      • Random
        • Random Select
        • Rand Float
        • Random Vector
        • Random Rotator
        • Hash Position
        • Rand Unit Vector
        • Break Random Vector Settings
        • Make Random Vector Settings
      • Flow Control
        • Select
      • Actor
        • Get Local to Query
        • Get Local to World
        • Get Query to World
      • Network
        • Is Client
        • Is Dedicated Server
        • Is Listen Server
        • Is Server
        • Is Standalone
      • Heightmap
        • Create Cubemap Planet Distance Field
        • Get Heightmap Bounds
        • Sample Heightmap
      • Distance Field
        • Create Box Distance Field
        • Create Sphere Distance Field
      • Material
        • Blend Materials
      • Voxelized Mesh
        • Create Voxelized Mesh Distance Field
        • Make Voxelized Mesh from Static Mesh
    • Glossary
    • Licensing
    • Roadmap
Powered by GitBook
On this page
  • 2.0p5
  • 2.0p4
  • 2.0p2

Was this helpful?

  1. Resources

Change Log

Changes made for releases up to this point.

PreviousTargeting AndroidNextVoxel Graph API

Last updated 2 months ago

Was this helpful?

2.0p5

This release is only available for 5.5. The plugin will not support 5.4 for any future releases.

The biggest brings a multitude of new features alongside significant usability and stability improvements.

One of the big new features is the addition of Height Spline Graphs (docs TBD).

The release also adds (experimental!) in-editor sculpting tools (docs TBD).

Lastly, we're introducing an (experimental!) block rendering solution, as well as flat normals (docs TBD).

As extra worthy mentions, this release:

  • Stabilizes the automatic MegaMaterials that were initially added in 2.0p4

    • Materials should no longer randomly render black

    • Material-related errors should be visibly raised on-screen

    • Various GPU and render crashes have been fixed

  • Adds support for Android and MacOS

Deprecations & Removals:

  • Non-asset layer and stack references have been removed.

    • If you still need to migrate your layers to assets, upgrade to 2.0p4 to do this first.

  • The previously deprecated Voxel Graphs are now fully disabled. Graphs built in the deprecated ("Complex") pipeline can still be opened as read-only assets, but they will not be useable anymore.

  • Biome Map assets have been removed.

General Improvements

  • Improved Layer and Stack UX

  • Improve Voxelized Mesh placement mode (toggled with Alt-V)

  • Add world-state stamp debugger

Voxel Graphs

  • BiomeMaps have been deprecated

  • Metadata now only has one name field

    • Named metadata pins will need to be reconnected, and their names manually migrated to the Name field. The old pins should still be visible as (red) orphaned pins

  • Function nodes will have an orphaned Run Execution pin appear. These can be removed by right-clicking the pin

  • Improved graph preview UI

    • Nodes now show their current value when a position is selected in the preview

PCG

Height Spline Stamps can be spawned from PCG using the Create Voxel Spline, but parameter overrides are not yet supported. Spline Stamps spawned using the Voxel Stamp Spawner node will not function.

  • VPCG point scatter nodes have been refactored

    • Some manual migration will be required

  • Ensure StampSpawner stamps are spawned the moment the node finishes

    • This guarantees stamps will be ready for nodes depending on them that come after

    • To avoid regeneration loops, dependency tracking needs to be optional. This will be added in a future release

  • Remove VPCG point normal getter/setters. Use PointRotation with GetUpVector instead

Blueprint API

  • Add GetProgress to VoxelWorld

  • Refactored all stamp-related API

Back-end

  • Lots of back-end clean-up and optimizations

  • Disable progressive refinement when the game thread is stalled

  • Don't compute the editor voxel world when in PIE

  • Fix various ensures

  • Fix various shader compilation errors

  • Don't comple ISPC if plugin is in engine

  • Fix mobile compile/packaging errors

  • Add more test cases

2.0p4

This release brings mostly back-end improvements like the move from our own threadpool to Unreal's task system, the foundation of the new sculpting system (not yet usable in this release) and layers and stacks now being asset-based. It also introduces automatic MegaMaterials, which lets you use any material that's set up for Nanite displacement as an automatically displaced and height-blended material on voxel terrains.

General Improvements

  • Remove voxel threads and move to the Unreal task system

    • This should help avoid scheduling conflicts between voxel and unreal threads

    • Voxel tasks are scheduled as BackgroundLow, so they shouldn't block the game or render thread in any way

    • voxel.SetNumWorkerThreads can be used to lower the amount of worker threads to simulate lower-end hardware. Be mindful that this now affects the entire engine's thread pool, not just the voxel threads

  • Layers and Stacks are now asset-based, instead of being defined in the project settings

  • Allow for removing parts of the terrain entirely by assigning translucent materials

  • Fix override blend mode on mesh stamps

  • Disable bulk data in StampComponents to fix packaged game crash

  • Fix issues with applying shader hooks

  • Fix tooltips

  • Fix Mac compilation

Stamps

  • Add static metadata to height and volume graph stamps

  • Add material overrides to placed heightmap stamps

PCG

  • Fix 2D PCG Projection node metadata values with Update Rotation

Materials

  • Add automatic MegaMaterials

  • Add tangents (to allow use of tangent space transforms)

  • Remove support for baking WPO to collision

Blueprint API

  • Add Async Query Layer nodes

  • Update Sync/Async Export Data to Render Target nodes, to support multiple channels

Back-end

  • Add modifiers as sculpting framework

    • These will be the backbone for the new sculpting system, which is partially implemented but not yet usable

  • Refactor Get/SetVoxelGraphParameter

  • Fix stamp serialization

  • Fix various warnings

  • Refactor voxel futures

  • Remove outdated ensures

  • Add automated tests

  • Remove

    • VOXEL_ALLOW_MALLOC_SCOPE

    • VOXEL_ENQUEUE_RENDER_COMMAND

    • TVoxelUniquePtr

    • MakeVoxelShared

    • MakeVoxelShareable

    • FVoxelMemory

  • Fix shutdown crash

  • Add VOXEL_DEV_WORKFLOW

  • Improve DEFINE_PRIVATE_ACCESS

  • Fix deadlock in FVoxelMaterialManager::FindOrAddMaterialIndex

  • Fix segmented bitmask enum undetermined value

  • Fix StampBehavior enum

  • Exclude RF_MirroredGarbage in ForEachObjectOfClass

2.0p2

This release brings substantial UX and performance improvements. The biggest new features are Progressive Refinement and the Instanced Stamp Component (and its accompanying Spawn Voxel Stamps PCG node).

General Improvements

  • Add progressive LOD refinement

    • Change LODs to be set by Quality (higher is better but slower) instead of Screen Size

    • Quality is set using a range slider, with progressive refinement starting at Min and stopping at Max

    • Add separate LOD settings for Editor and Game worlds

  • Improve Stack and Layer picker widgets across the plugin

  • Add Wait For Lumen toggle to decouple Lumen Scene updates from mesh updates

  • Add Wait On BeginPlay toggle to stall the game until the voxel world is done generating

  • Add automatic in-editor thread allocation

  • Move stacks to be named, and defined in project settings

  • Substantially speed up navigation and collision generation by adding dedicated meshers (>3.5x)

  • Substantially improve details panel performance when many stamps are selected

  • Add Nanite Component settings (includes VSM Invalidation Behavior, which is now set to Rigid by default to prevent VSM invalidation)

  • Add LOD setting to all Query nodes

Voxel Graphs

  • Add Query Height/Distance/Material/Metadata nodes

  • Add RaymarchLayerDistanceField node (VPG only), similar to PCG's Projection nodes

  • Fix suggestions in the node search menu in 5.5

  • Add MakeRotationFromX/Y nodes

  • Re-add support for GetLOD

  • Add UnpackMaterial node for retrieving material weights

  • Add GetPreviousMaterial and GetPreviousMetadata nodes

    • Add IsValid output pin to GetPreviousHeight, GetPreviousDistance and add IsFinite node

  • Add more keywords to various nodes for better searchability

  • Add double positions to graphs

Stamps

  • Improve stamp details panel UX

    • Add customization for blend mode

    • Update property order to make more sense

  • Add LODRange to control which LODs are affected by any given stamp

  • Update and improve Voxelized Mesh Asset preview

    • Fix endless compute loops in Voxelized Mesh Assets

  • Allow drag-and-dropping Voxelized Mesh assets into the world

  • Add stamp placement mode where static meshes dragged into the world are automatically placed as mesh stamps

    • This mode is activated by pressing Alt-V

  • Add automatic stamp actor labeling to automatically renames stamp actors when their configuration changes

    • This functionality can be tweaked or disabled entirely from the Project Settings

PCG

  • Improve Call Voxel Graph

    • Use the graph name as node title

    • Expose graph as pin

    • Allow to have multiple point set outputs

    • Refresh PCG graph on Voxel PCG Graph change

  • Add Voxel Query node for querying arbitrary layer data

  • Add support for updating rotation when projecting to Height layer

Materials

  • Add automatic conversion between G8 and G16 compression

    • This means MegaMaterial compression type errors are no longer thrown when all textures are set to Grayscale compression

  • Fix Marching Cube shader hook on 5.5

Blueprint API

  • Add Query Voxel Layer nodes

  • Add Stamp configuration nodes, allowing data source, layers, smoothness, etc. to be modified

  • Allow VoxelStampComponent access in blueprints

Back-end

  • Rename VoxelGraphCore to VoxelGraph

  • Fix CoarseStreaming Nanite crash

  • Fix FVoxelTextureBufferPool::ProcessUploadsImpl_AnyThread

  • Fix seed migration

  • Unify VisibilityCollision, Nanite and Mesh rendering into one subsystem

  • Rename VoxelRenderChunkTreeSubsystem to VoxelRenderSubsystem

  • Add voxel.MaxChunksToProcessPerPass

  • Add ShouldGenerateChildren

  • Fix promise tracking on Linux

  • Add FVoxelUtilities::ResetPreviousLocalToWorld for static meshes

  • Switch to FForkProcessHelper::CreateForkableThread to support forking on Linux

  • Refactor FVoxelStampQueryParameter

  • Return infinite bounds if intersecting

  • Check IsLoadingAssets in stamp component

  • Make UVoxelMeshStampPreviewComponent transient

  • Cleanup StampComponent child components

  • Fix UVoxelVoxelizedMeshAssetUserData::GetAsset when asset has invalid tags

  • Fix UVoxelMegaMaterial::PostLoad

  • Cleanup task dispatchers and add voxel.VerboseTaskCount

  • Remove voxel.DebugNaniteMaterials to fix materials when Substrate is enabled

  • Add customizations for stamp blend modes

  • Fix height stamps being offset

  • Fix invalid reserve in FVoxelRenderSubsystem

  • Remove FVoxelStampArray

  • Add FVoxelLayerRef

  • Fix invalidation issue

  • Move query code to FVoxelQuery

  • Fix MipData crash

  • Fix DumpToLog

  • Fix PreviousChunkKeyToNavigationMesh not being cleared

  • Fix voxel tickers not ticking during loading screen

  • Remove VoxelActorBase and disable VoxelWorld tick by default

  • Move components to voxel runtime

  • Add SegmentedEnumCustomization and SVoxelSegmentedControl

  • Add framework for automated testing

  • Add ForEachAssetDataOfClass

  • Add FVoxelTestManager

  • Execute Then_GameThread inline if possible

  • Add implicit TVoxelFuture casting

  • Add geometry utilities

  • Add GetEnumDisplayName

  • Fix DEFINE_VOXEL_COUNTER in namespaces on Mac

  • Allow having TVoxelSet

  • Faster zip writer

  • Increase log verbosity

  • Optimize FVoxelMesher::CreateMesh

  • Fix FVoxelInvokerCollisionSubsystem::Compute not being parallel

  • Add heightmap weights edit support

  • Add FVoxelTransformRef::Make constant support

  • Remove FVoxelTransformRef from stamp components

    • Change graph stamps LocalToWorld to not use component transform

  • Optimize bulk stamp invalidation

  • Rename AABBTree functions

  • Fix UVoxelStampComponent::FindComponent

  • Fix expand structs button

  • Fix SegmentedEnumCustomization perf

  • Update VoxelLayerRef customization

  • Update LayerName and LayerRef editors

is now available for MacOS

Any existing systems using Stamp APIs will need to be manually migrated. See the for a (very) brief guide to the new API

Unrelated to this release, but worth mentioning, is that we've spun up a new , where we track bugs, crashes and (small) features we're planning to add.

Add

Add Voxel Stamp Spawner node, which spawns stamps using an

Voxel Plugin Installer
this documention page
public issue tracker
Instanced Stamp Component
Instanced Stamp Component
Diff-based sculpting allows sculpt data to be retained even when the sculpt stamp is moved, or its surroundings are changed.
Progressive refinement keeps updates snappy when making large changes. It temporarily drops the terrain's resolution and slowly increases it again.
A large amount of volume stamps being (de)spawned using a Voxel Stamp Spawner, creating Instanced Stamp Components
Blockiness (when enabled on the Voxel World) metadata can be used to make terrain blocky, everywhere or just in some spots.
Height Spline Graphs allow the creation of complex, spline-based terrain modifiers like roads.
Page cover image