4.26 and Chaos are now supported. Chaos cooks collision 4.7x faster than PhysX!
Upgrade Notes
M_VoxelMaterial_Colors is not flat shaded anymore, enable Flat Normal on your voxel world if you want it to be
M_VoxelMaterial_Colors_NormalShading is gone, M_VoxelMaterial_Colors should be used instead
C++
VoxelWorldGenerator has been renamed to VoxelGenerator. All the relevant naming have been updated too (eg VoxelWorldGeneratorPicker -> VoxelGeneratorPicker).
Voxel Graph parameters
Voxel graph parameters have been refactored to be easier to use.
Instead of the Set Voxel Graph Parameter nodes:
You now need to use the Set Generator Parameter node. It takes a wildcard and works for all parameter types.
Voxel graph parameters are now always exposed: if you had a float constant node, it will be converted to a parameter.
Changes
Landscape Materials support
You can now use landscape materials directly on voxels! See Materials for a quick how-to.
Splines
Splines are a powerful way to add tunnels/caves. Both additive and subtractive splines are supported.
To add a spline to your scene, make sure you are using the FlatWorldGenerator and add Voxel Content/Blueprints/VoxelSpline. If you change its channel in its detail panel to Channel 1 it will be additive.
Generator properties can now be edited inline. This is a huge productivity boost! Works with both voxel graphs and C++ generators.
No Clipping Component
When the voxel world is loading, or when the player is adding voxels beneath its feet, it can sometimes clip through the world and fall to its death.
To prevent that, I've added a new No Clipping Component: just add it to your character, and whenever it's inside the world geometry (even if not loaded yet), it will be teleported to the nearest safe position.
You can place the component closer to the character feet for better results.
Flat Normal option
You can now do flat normals by using the Normal Config dropdown on the voxel world:
This will create additional vertices to ensure each triangle has a single normal.
I've also added MI_VoxelMaterial_Colors_WithShift to the examples materials: this material will shift the colors based on the normal.
Combined with the Flat Normal option, it can give some very interesting looks like this:
It now directly reads the palette from the .vox - no need to manually export them anymore!
It is now correctly converting the colors to sRGB/linear space as needed.
Tools improvements
Sphere Tool
The sphere tool can now paint with a falloff.
Smooth Tool
The smooth tool can now smooth paint data (only works with RGB data for now).
Custom Tools
Custom tools are now listed below the regular tools:
Custom tools are really powerful: for instance, the Graph Tool with the NoisyColors generator lets you paint noisy patterns like this (it's named Graph Tool, but works with both voxel graphs and C++ generators)
Behind the scenes it's just a color with some value shift by some white noise:
New Noises
These new noises are available as nodes in voxel graphs, and as functions of FVoxelFastNoise in C++.
Crater Noise
This noise adds craters. It looks really great when used as a fractal noise.
It's a relatively expensive fractal noise. An example is available in /Voxel Content/Examples/VoxelGraphs/Erosion/VG_Example_Erosion
The noise node takes derivatives (tick Compute Derivatives in the details of a supported noise node) and outputs an erosion value that you can then add to your original noise value.
There are purely a visual thing, similar to Break/Combine struct pins in Blueprints. You can combine any 3 consecutive pins that end with X/Y/Z and have the same prefix (so it works with a lot of nodes).
Height Splitter node
The new Height Splitter node is especially useful to do height based materials. Check /Voxel Content/Examples/VoxelGraphs/MultiIndex/VG_Example_MultiIndex for an example.
Batch compiling
You can now batch compile graph from the context menu:
New Examples
Craters
This map showcases how to use data items to add craters. This lets you handpick where you want the craters to be - however, it doesn't work too well if you have too many craters.
See the crater noise above for that instead.
Dunes
This one is a very simple graph generating dunes in a controllable direction
Commits
✨ Add sRGB palette option to the magica vox importer
✨ Add sRGB Colors option to the voxel world, if for some reason you want to store the vertex colors as sRGB
✨ Add better sRGB vs Linear color handling in paint materials
✨ Improve magica vox importer to use the builtin palette correctly
✨ Add Use Settings as Default to the data asset editor
✨ Add free Google Drive binaries link
✨ Disable strength delta time modulation if paint stength = 1
✨ Add bModulateStrengthByDeltaTime setting
🐛 Fix ensure when opening any BP
✨ Add "Set as editor startup map" to context menu
✨ Add VoxelNoClippingComponent
🐛 Try to fix Android build
🐛 Fix multiplayer diffs not marking the chunks as dirty, leading to holes in TCP multiplayer
🐛 Fix multiplayer scope counter ensure
✨ Make voxel tools more deterministic
✨ Add DoEditOverride to tool SimpleTick to allow sending a RPC instead of directly doing the edit
✨ Add ComputeDevice option to choose between CPU and GPU for tools that support it
✨ Add tool determinism test map
✨ Improve Manual Multiplayer example to use the new tool system
✨ Add proper TCP multiplayer example map
♻ Disable slow ensure in FVoxelRenderOctree
🐛 Fix crash when some textures are used in voxel graphs
✨ Add voxel.texture.ClearCache
✨ Add voxel.lod.FreezeLODs
✨ Add Flat Normal option
✨ Add VoxelMaterial_Colors_WithShift
🐛 Reparent Cubic_Destruction_FirstPerson to VoxelCharacter
📝 M_VoxelMaterial_Colors doesn't read UVs anymore to determine roughness (shouldn't affect anyone)
📝 M_VoxelMaterial_Colors is not flat shaded anymore, enable Flat Normal on your voxel world if you want it to be
📝 M_VoxelMaterial_Colors_NormalShading is gone, M_VoxelMaterial_Colors should be used instead
♻ Remove M_VoxelMaterial_Colors_NormalShading and remove flat shading code from M_VoxelMaterial_Colors, as the new Flat Normal mode should be used
♻ Forgot to apply material changes 🤦♀️
🐛 Disable emissive on MS_VoxelMaterial_Colors_WithShift
🐛 Fix crash when multiplayer fails to decompress the data
✨ Add a Show Custom Tools dropdown similar to advanced details
✨ Automatically load custom tools blueprints
✨ Add Browse to tool BP button
✨ Add Box Tool custom tool
🐛 Fix Previous World Generator sampler nodes & remove custom data
🐛 Fix ImportModifierAsset
🐛 Fix color pins reading garbage values
✨ Add NoisyColors tool graph
✨ Add graph custom tool
🐛 Fix AddAssetItemDataToLeaf
✨ Allow deploying debug builds
🐛 Fix parser
🐛 Fix ConvertMeshToVoxels crashing
🐛 Fix Create3DGetter
✨ Allow using a custom collision channel in tools
✨ Add SetCollisionResponseToChannel
✨ Add C++ world generator example
✨ Whitelist mac and ios
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
🐛 Fix TVoxelDataOctreeLeafData<FVoxelMaterial>::CreateData
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
🐛 Remove unneeded Save data? popups
🐛 Remove more annoying popups
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
✨ Expose VoxelPlaceableItemActor to blueprints
✨ Add OnGenerateWorld delegate, fired right after the voxel world is created
✨ Add VoxelDataItemActor
🐛 Fix parser
🐛 Fix parser fix
🐛 Add dummy UCLASS to make UBT happy
🐛 Fix shadowing errors
✨ Add voxel.debug.DrawTime
✨ Support rebuilding data items that overlap edited data
✨ Lazily rebuild data item actors
✨ Add GetWorldGeneratorClassDefaultObject
🐛 Fix AddAssetItemToLeafData
♻ SetActiveToolByClass(nullptr) now clears the active tool
✨ Improve data asset thumbnails
✨ Add tolerance to data asset sampling to avoid precision errors
✨ Automatically enable RoundAssetPosition/Rotation in cubic mode
✨ Add RoundAssetRotation
✨ Add Inverse Transform Position XZ node
✨ Speed up data item sampling
🐛 Fix MS_VoxelPlanetTriplanar having sides and top textures swapped
✨ Add masks to data items to allow sampling only a subset of them
✨ Add Combine Mode option to data asset samplers, with Min/Max/Sum as choices
📝 Add Capsule Data Item now takes the Item Manager in input instead of defaulting to self
✨ Add sphere data item
✨ Add ravine data item
✨ Add craters example map
✨ Make data asset tolerance configurable
🐛 Increase data asset tolerance in cubic mode
🐛 Fix FVoxelIntBox::ApplyTransform which was causing voxel assets to loose some voxels when rotated
🐛 Fix data asset editor crash on close
✨ Only show relevant materials in Get Material Collection Index
✨ Add HeightSplitter node
✨ Add multi index example
✨ Add more index colors to preview settings
✨ Add vector support to graphs
♻ Remove ensures when deleting a voxel world that is still updating
🐛 Fix 4.24+
♻ Switch graph preview settings ShowValue default to ShowValue instead of ShowValueAndRange
♻ Do not print useless 0 at the end of float values
♻ Hide "Output:" if output name is none in graph value preview
✨ Add GetIndexMaterial to query a material collection
🐛 Fix data item actor crash
✨ Make InverseTransformPositionXZ 2x faster by removing checks
♻ Default data item mask to Channel0 instead of all channels
🐛 Don't create unnecessary undo frames when editing data items
🐛 Fix non editor build
✨ Add SortByStrength to GetMultiIndex
✨ Add GetMultiIndexMaterialsAtPosition
♻ Update VDI_Ravine
♻ Refactor fast noise to be easier to maintain
✨ Add Compile graph to C++ to context menu
🐛 Fix android build
♻ Add some noise SIMD tests
🐛 Fix free
🐛 Fix voxel graph node pickup when dragging from pin
✨ Add XYZ macro
✨ Add crater noise
✨ Add CraterFalloffExponent setting
✨ Add fast crater example
🐛 Fix android compilation
✨ Add dune example
🐛 Add missing ;
✨ Add Gavoronoi noise
🐛 Fix double precision compilation
🐛 Fix free
✨ Add smooth step node
✨ Add erosion node
✨ Add -StrictIncludes
✨ Add erosion example
🐛 Fix includes
🐛 Fix 4.25 includes
♻ Only enable StrictIncludes in marketplace builds
🐛 Offset cubic voxels by 0.5 voxels to make tools work
✨ Add PropagateMaterials to flatten
♻ Include data in plugin version
♻ Rename voxel threads from Default Pool to Voxel Pool
✨ Add VOXEL_INLINE_COUNTER
✨ Add 4.26 support
✨ Add Chaos support
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
🐛 Fix 4.23 compilation
🐛 Fix missing fwd decl
🐛 More missing includes
🐛 Fix 4.26 warnings
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
♻ Remove 4.21/4.22 compatibility code
🐛 Fix 4.23
🐛 Fix 4.23
♻ Add VOXEL_ENABLE_SLOW_OPTIMIZATIONS
🐛 Fix voxel tools recording modified values by default
✨ Add smooth paint tool
✨ Allow painting with the sphere tool
✨ Add falloff to SetMaterialSphere
🐛 Fix android compilation
✨ Add center heightmap option to heightmap node
♻ Speed up ApplyMaterialKernelSphere compilation
🐛 Fix android compilation
✨ Set new macro pins type to the last pin type instead of exec, or float if first pin
🐛 Fix renaming macro pins (would break all links to it)
🐛 Fix copy pasting linked vector pins
🐛 Fix SetMaterial (mainly used by heightmaps)
♻ Rename VoxelConfigEnums to VoxelEnums
♻ Update example graphs C++
🐛 Fix free
✨ Add option to sample data items in flat generators
✨ Make using data items in C++ generators much easier
✨ Add generator object cache
✨ Add Set Values/Materials Dirty
🐛 Fix native linux compilation
♻ Initial work on world generator parameters refactor
♻ Rename VoxelWorldGenerators folder to VoxelGenerators
♻ Rename VoxelWorldGenerators files to VoxelGenerators
♻ Rename UVoxelWorldGenerator to UVoxelGenerator
♻ Rename FWorldVoxelGeneratorInstance to FVoxelGeneratorInstance
♻ Rename FVoxelWorldGeneratorInit to FVoxelGeneratorInit
♻ Rename WorldGenerator properties to Generator
♻ Rename FVoxelWorldGeneratorPicker to FVoxelGeneratorPicker
♻ Rename more WorldGenerator properties to Generator
♻ Rename generator icons
♻ Rename WorldGeneratorCache to GeneratorCache
♻ Rename AVoxelWorld::WorldGenerator to Generator
♻ SetWorldGeneratorObject/Class -> SetGeneratorObject/Class
♻ Rename VoxelEmptyWorldGenerator/VoxelFlatWorldGenerator to VoxelEmptyGenerator/VoxelFlatGenerator
♻ Rename more WorldGenerator to Generator
♻ Remove GetWorldGeneratorClassDefaultObject
♻ Rename VoxelWorldGeneratorTools to VoxelGeneratorTools
♻ Rename more WorldGenerator
♻ EVoxelWorldGeneratorPickerType -> EVoxelGeneratorPickerType
♻ Rename VoxelGeneratorTools functions
♻ More renames
♻ Rename AVoxelAssetActor::WorldGenerator
♻ Rename SurfaceToolMask.WorldGenerator to Generator
♻ More renames
♻ Rename UVoxelSpawnerConfig::WorldGeneratorOutputs
♻ More renames
♻ Remove details MakeInstance
♻ Fix generator icon
♻ Remove ImportExposedVariablesValues
✨ Allow editing world generator properties inline
♻ Add NonNull meta to voxel nodes
♻ Remove VoxelGraphBlueprintTools (SetVoxelGraphFloatParameter etc)
📝Spawner seeds are reset to 1337
♻ Remove seeds & make them regular parameters
🐛 Fix 4.25
♻ Update free readme
✨ Export generator parameters to BP
✨ Expose generator instances to BP
✨ Improve generator parameters details
🐛 Fix Clear generator properties
✨ Support array/set/map properties
✨ Add noise amplitude setting to capsule graph
🐛 Pool blueprints to avoid crashes
♻ Update blueprints to use the new generator parameters
♻ Resave all content
🐛 Fix 4.24+
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
🐛 Fix data item actors not being removed when destroyed
✨ Add voxel spline
🐛 Fix #endif
✨ Refresh data item actors when a new one is added
🐛 Fix data item masks not being hashed & compared
🐛 Fix unity build
🐛 Fix shadowing error
🐛 Fix DPI scale issues when using multiple monitors
🐛 Increase MaxTessellation in quixel material to fix tessellation culling issues
🐛 Fix no clipping components behavior with multiple voxel worlds
🐛 Never use the GPU in dedicated servers
♻ Split spawner utilities
🐛 Fix missing include
♻ Cleanup height hit generator
✨ Add floating/covered checks to height spawners
✨ Add AddDefaultDataItems macro
🐛 Fix undo redo
🐛 Fix crash when deleting voxel world that has a spline
🐛 Fix shift staying pressed in the voxel editor
🐛 Try to fix embree on osx
✨ Add landscape material support
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
🐛 Convert landscape materials recursively
🐛 Fix 4.26
🐛 Fix landscape collection ensure
Merge branch 'master' of github.com:Phyronnaz/VoxelPrivate
✨ Add back the option to not use the palette in the MagicaVox importer
♻ Remove IOS from whitelist
🐛 Fix placeable items
🐛 Dean doesn't like Landcapes
♻ Remove generators BP since we have inline properties now
♻ Update release notes message to 1.2
♻ Remove IOS from the correct uplugin
🐛 Fix crash in voxel material compiler
♻ Cleanup embree
🐛 Try to fix OSX embree
🐛 Fix parser
🐛 Fix build script
🐛 Fix OSX build on epic servers
🐛 Make StrictIncludes optional