Voxel module for Godot Engine
Go to file
2019-05-12 16:33:25 +01:00
math Added bit-shifting and comparison operators to Vector3i 2019-05-03 23:54:35 +01:00
meshers Useless comment 2019-05-12 16:17:57 +01:00
providers Optimized VoxelProviderNoise with a noise buffer so it does less OpenSimplex calculations 2019-05-11 17:42:56 +01:00
screenshots Add smooth terrain screenshot 2019-05-05 19:55:05 +01:00
terrain Added exclusive area parameter to block processors so they can remove blocks from their queue 2019-05-12 16:33:25 +01:00
util Added exclusive area parameter to block processors so they can remove blocks from their queue 2019-05-12 16:33:25 +01:00
.gitignore Added project: first working prototype, but lots of TODOs 2016-05-01 15:00:02 +02:00
config.py Compilation fixes 2018-09-02 18:48:08 +01:00
cube_tables.cpp Fix UVs, change tables to use OpenGL convention... 2018-10-05 23:51:55 +01:00
cube_tables.h Reorganize all files and rename a few things 2019-04-28 17:58:29 +01:00
LICENSE.md Added license 2016-07-28 00:21:21 +02:00
octree_tables.h Moved ObjectPool to util/ and moved OctreeTables to root 2019-04-29 21:31:08 +01:00
README.md Indicate LOD works with smooth terrain 2019-05-06 01:39:45 +01:00
register_types.cpp Added VoxelProviderNoise for testing 2019-05-05 18:27:33 +01:00
register_types.h Added project: first working prototype, but lots of TODOs 2016-05-01 15:00:02 +02:00
SCsub Add base class to all meshers, gather common things in it 2019-04-28 20:48:59 +01:00
voxel_buffer.cpp Rename get/set_voxel_iso => get/set_voxel_f 2019-04-28 16:28:49 +01:00
voxel_buffer.h Added VoxelBuffer::clear_channel_f() 2019-05-05 18:27:09 +01:00
voxel_isosurface_tool.cpp Reorganize all files and rename a few things 2019-04-28 17:58:29 +01:00
voxel_isosurface_tool.h Added VoxelIsoSurfaceTool::do_heightmap(), untested 2019-04-24 02:08:45 +01:00
voxel_library.cpp Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_library.h Fix includes 2018-09-19 20:25:04 +01:00
voxel.cpp Reorganize all files and rename a few things 2019-04-28 17:58:29 +01:00
voxel.h Code formatting 2019-04-28 01:34:00 +01:00

Voxel Tools for Godot

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

Blocky example screenshot Smooth example screenshot

Setup

You need to get the source of Godot 3.1+ and recompile it with this module.

Install the contents of the repo in a folder under "modules/", named "voxel".

IMPORTANT: if you clone the repo, Git will create the folder as the repo name, "godot_voxel". But because Godot SCons scripts consider the folder name as the module's name, it will generate wrong function calls, so you must rename the folder "voxel". For more info about Godot modules, see http://docs.godotengine.org/en/3.1/development/cpp/custom_modules_in_cpp.html

What this module provides

  • Fully editable terrain as long as you call the right functions (see demo: https://github.com/Zylann/voxelgame)
  • Voxel storage using 8-bit channels like images for any general purpose
  • Data paging using blocks of 16x16x16 voxels, so the world can be streamed with threads as you move
  • Minecraft-style terrain with voxels as types, with multiple materials and baked ambient occlusion
  • Smooth terrain with voxels as distance field (using extensions of marching cubes)
  • Level of detail for smooth terrain (no edition support yet)
  • Simple interface for custom terrain generators (block by block using threads)

What this module doesn't provides

  • Level of detail for blocky terrain
  • Game specific features such as cave generation or procedural trees (though it might include tools to help doing them)
  • Editor tools (only a few things are exposed)
  • Import and export of voxel formats

Roadmap

I work on this module whenever I want and add things I'd like to have, so the roadmap is pretty much depending on my personal agenda.