Go to file
Marc Gilleron 2fd4c22c54 Rewrote memory pool to use arenas per power of two.
Using per-size arenas behaves like a memory leak when
the user creates many VoxelBuffers of random sizes repeatedly.
Now memory blocks of the next power of two are used instead.
VoxelBuffers with power-of-two size will fit best, while also being
the most common. Non-power-of-two will use a bit more memory,
but such buffers are often temporary and less numerous.
2021-11-12 23:39:50 +00:00
.github Add test CI and fuzzer 2021-10-29 19:55:56 +02:00
constants Decrease MAX_LOD to avoid potential integer overflows 2021-10-28 23:55:46 +01:00
doc Note about comments 2021-11-12 21:41:45 +00:00
edition Deprecate Vector3i(Vector3) constructor, make conversions explicit 2021-10-31 16:01:47 +00:00
editor Update supporters 2021-11-06 00:11:30 +00:00
generators Add missing classes and run doctool (doctool has issues though) 2021-11-06 02:04:16 +00:00
meshers Comments 2021-11-12 21:42:39 +00:00
misc Add test CI and fuzzer 2021-10-29 19:55:56 +02:00
server Fixed clang build 2021-11-03 00:17:20 -03:00
storage Rewrote memory pool to use arenas per power of two. 2021-11-12 23:39:50 +00:00
streams Deprecate Vector3i(Vector3) constructor, make conversions explicit 2021-10-31 16:01:47 +00:00
terrain Formatting due to update of Godot's clang-format 2021-11-12 21:42:28 +00:00
tests Deprecate Vector3i(Vector3) constructor, make conversions explicit 2021-10-31 16:01:47 +00:00
thirdparty Added mesh optimization option to Transvoxel, using MeshOptimizer 2021-07-11 16:19:49 +01:00
util Rewrote memory pool to use arenas per power of two. 2021-11-12 23:39:50 +00:00
.gitignore Ignore Godot log files that sometimes get saved in doc/tools when running scripts from here 2021-01-21 20:05:53 +00:00
.readthedocs.yml Add readthedocs file 2021-01-21 00:44:02 +00:00
LICENSE.md Update date 2021-08-07 23:03:01 +01:00
README.md Update supporters 2021-11-06 00:11:30 +00:00
SCsub Added vox scene importer. No options at the moments. 2021-07-31 18:48:47 +01:00
config.py Add missing classes and run doctool (doctool has issues though) 2021-11-06 02:04:16 +00:00
nuget.config Trying to fix Github build pipeline, this seems to be a problem with the Windows images being used to build. 2021-05-08 19:57:06 +02:00
register_types.cpp Prevent instancing VoxelTool classes manually 2021-10-26 20:17:40 +01:00
register_types.h Added project: first working prototype, but lots of TODOs 2016-05-01 15:00:02 +02:00
voxel.natvis Renamed ArraySlice -> Span 2021-05-31 16:48:49 +01:00

README.md

Voxel Tools for Godot

A C++ module for creating volumetric worlds in Godot Engine.

🚪 Windows Builds 🐧 Linux Builds 🐒 Mono Builds

Discord

Blocky screenshot Smooth screenshot Textured screenshot

Features

  • Realtime 3D terrain editable in-game (Unlike a heightmap based terrain, this allows for overhangs, tunnels, and user creation/destruction)
  • Godot physics integration + alternate fast Minecraft-like collisions
  • Infinite terrains made by paging chunks in and out
  • Voxel data is streamed from a variety of sources, which includes the ability to write your own generators
  • Minecraft-style blocky voxel terrain, with multiple materials and baked ambient occlusion
  • Smooth terrain with level of detail using Transvoxel
  • Voxel storage using 8-bit or 16-bit channels for any general purpose
  • Instancing system to spawn foliage, rocks and other decoration on surfaces

Check the changelog for more recent details.

Documentation

Roadmap

These are some ideas that may or may not be implemented in the future:

  • Texturing on smooth terrain
  • Editor preview and authoring
  • Improving LOD performance
  • Other meshing algorithms (e.g. dual contouring)
  • GPU offloading (Maybe when Godot 4+ supports compute shaders)
  • Migrate to a GDNative plugin (post Godot 4, needs work)

Supporters

This module is a non-profit project developped by voluntary contributors. The following is the list of the current donors. Thanks for your support :)

Supporters

wacyym
Sergey Lapin (slapin)
Jonas (NoFr1ends)
lenis0012
Phyronnaz
RonanZe
furtherorbit
jp.owo.Manda (segfault-god)
hidemat
Jakub Buriánek (Buri)
Justin Swanhart (Greenlion)
Sebastian Clausen (sclausen)
MrGreaterThan
baals
Treer