6.8 KiB
6.8 KiB
Changelog
This is a high-level changelog for what has been worked on so far.
At the moment, this module doesn't have a distinct release schedule, so this changelog follows Godot's version numbers and binary releases. Each version mentionned here should have an associated Git branch containing features at the time of the version. Backports aren't usually done so far, but PRs are welcome if it's necessary.
Semver is not yet in place, so each version can have breaking changes, although it shouldn't happen often.
master
-
General
- Introduction of Voxel Server, which shares threaded tasks among all voxel nodes
- Voxel data is no longer copied when sent to processing threads, reducing high memory spikes in some scenarios
- Added a utility class to load
.vox
files created with MagicaVoxel (scripts only) - Voxel nodes can be moved, scaled and rotated
- Voxel nodes can be limited to specific bounds, rather than being infinitely paging volumes (multiples of block size).
- Meshers are now resources so you can choose and configure them per terrain
-
Editor
- Streaming/LOD can be set to follow the editor camera instead of being centered on world origin. Use with caution, fast big movements and zooms can cause lag
- The amount of pending background tasks is now indicated when the node is selected
- Added About window
-
Smooth voxels
- Shaders now have access to the transform of each block, useful for triplanar mapping on moving volumes
- Transvoxel runs faster (almost x2 speedup)
- The SDF channel is now 16-bit by default instead of 8-bit, which reduces terracing in big terrains
- Optimized
VoxelGeneratorGraph
by making it detect empty blocks more accurately - Added
SdfSphereHeightmap
andNormalize
nodes to voxel graph, which can help making planets
-
Blocky voxels
- Introduced a second blocky mesher dedicated to colored cubes, with greedy meshing and palette support (scripts only)
- Replaced
transparent
property withtransparency_index
for more control on the culling of transparent faces - The TYPE channel is now 16-bit by default instead of 8-bit, allowing to store up to 65,536 types (part of this channel might actually be used to store rotation in the future)
-
Breaking changes
VoxelViewer
now replaces theviewer_path
property onVoxelTerrain
, and allows multiple loading points- Defined
COLOR
channel inVoxelBuffer
, previously known asDATA3
VoxelGenerator
is no longer the base for script-based generators, useVoxelGeneratorScript
insteadVoxelStream
is no longer the base for script-based streams, useVoxelStreamScript
instead- Terrain nodes no longer produce meshes based on the voxel data. Instead they use the mesher assigned to them.
- SDF and TYPE channels have different default depth, so if you relied on 8-bit depth, you may have to explicitely set that format in your generator, to avoid mismatch with existing savegames
-
Fixes
- C# should be able to properly implement generator/stream functions
-
Known issues
VoxelLodTerrain
does not entirely supportVoxelViewer
, but a refactoring pass is planned for it.
godot3.2.3
- 08/09/2020
-
General
- Added per-voxel and per-block metadata, which are saved by file streams along with voxel data
StringName
is now used when possible to call script functions, to reduce overhead- Exposed block serializer to allow encoding voxels for network or files from script
- Added terrain methods to trigger saves explicitely
- The module only prints debug logs if the engine is in verbose mode
VoxelTerrain
now emit signals when blocks are loaded and unloaded
-
Editor
- Terrain nodes now render in the editor, unless scripts are involved (can be changed with an option)
-
Blocky voxels
- Added collision masks to blocky voxels, which takes effect with
VoxelBoxMover
and voxel raycasts - Added random tick API for blocky terrains
- Blocky mesh collision shapes now take all surfaces into account
- Added collision masks to blocky voxels, which takes effect with
-
Smooth voxels
- Added a graph-based generator, dedicated to SDF data for now
-
Fixes
- Fixed crash when
VoxelTerrain
is used without a stream - Fixed
Voxel.duplicate()
not implemented properly - Fixed collision shapes only being generated for the first mesh surface
- Fixed
VoxelTool
truncating 64-bit values
- Fixed crash when
(no branch) 27/03/2020 Tokisan Games binary version
-
General
- Optimized
VoxelBuffer
memory allocation with a pool (best when sizes are often the same) - Optimized block visibility by removing meshes from the world rather than setting the
visible
property - Added customizable bit depth to
VoxelBuffer
(8, 16, 32 and 64 bits) - Added node configuration warnings in case terrain nodes are wrongly setup
- Implemented VoxelTool for VoxelBuffers
- Added
VoxelStreamNoise2D
- Added blur option in
VoxelGeneratorImage
- Generators now all inherit
VoxelGenerator
- Optimized
-
Blocky voxels
- Blocky voxels can be defined with a custom mesh, sides get culled automatically even when not a cube
- Blocky voxels can have custom collision AABBs for use with
VoxelBoxMover
- The 3D noise generator now works in blocky mode with
VoxelTerrain
- Blocky voxels support 8 bit and 16 bit depths
-
Smooth voxels
- Implemented Transvoxel mesher, supporting transition meshes for seamless LOD. It now replaces DMC by default.
- Heightmap generators now have an
iso_scale
tuning property which helps reducing terracing
-
Fixes
- Fixed dark normals occasionally appearing on smooth terrains
- Fixed Transvoxel mesher being offset compared to other meshers
- Fixed stuttering caused by
ShaderMaterial
creation, now they are pooled - Fixed cases where
VoxelLodTerrain
was getting stuck when teleporting far away - Fixed a few bugs with
VoxelStreamBlockFiles
andVoxelStreamRegionFiles
-
Breaking changes
- Removed channel enum from
Voxel
, it was redundant withVoxelBuffer
- Renamed
VoxelBuffer.CHANNEL_ISOLEVEL
=>CHANNEL_SDF
- Removed
VoxelIsoSurfaceTool
, superseded byVoxelTool
- Removed
VoxelMesherMC
, superseded byVoxelMesherTransvoxel
- Replaced
VoxelGeneratorTest
byVoxelGeneratorWaves
andVoxelGeneratorFlat
- Removed channel enum from
godot3.1
- 03/10/2019
Initial reference version.
- Support for blocky, dual marching cubes and simple marching cubes meshers
- Terrain with constant LOD paging, or variable LOD (smooth voxels only)
- Voxels editable in game (limited to LOD0)
- Various simple streams to generate, save and load voxel terrain data
- Meshers and storage primitives available to use by scripts
...
- 01/05/2016 - Creation of the module, using Godot 3.0 beta