Voxel module for Godot Engine
Go to file
2019-04-28 04:27:37 +01:00
dmc Added smooth_meshing option to VoxelTerrain and handle padding differences it introduces 2019-04-28 01:32:23 +01:00
screenshots
transvoxel Rename VoxelMesherSmooth => VoxelMesherTransvoxel 2019-04-21 14:47:50 +01:00
.gitignore
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 Fix UVs, change tables to use OpenGL convention... 2018-10-05 23:51:55 +01:00
LICENSE.md
README.md Remove repetition 2019-04-28 04:27:37 +01:00
rect3i.h Fixed compilation 2019-04-24 02:07:06 +01:00
register_types.cpp Added VoxelIsoSurfaceTool 2019-04-22 20:15:46 +01:00
register_types.h
SCsub Dual marching cubes WIP (only octree and dual grid extraction, untested) 2019-04-20 17:32:10 +01:00
utility.h Added VoxelIsoSurfaceTool 2019-04-22 20:15:46 +01:00
vector3i.h Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_block.cpp Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_block.h Count updates per block for debug purpose 2018-09-29 17:08:05 +01:00
voxel_box_mover.cpp Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_box_mover.h Added box mover utility for quick move and slide physics 2018-10-01 00:11:33 +01:00
voxel_buffer.cpp Remove default channel from is_uniform() to prevent mistakes 2019-04-28 00:27:17 +01:00
voxel_buffer.h Code formatting 2019-04-28 01:34:00 +01:00
voxel_isosurface_tool.cpp Subtract should actually use inverted signed distance 2019-04-28 03:51:24 +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_map.cpp Fixed VoxelMap::get/set_voxel_f bound to the wrong function 2019-04-28 02:27:50 +01:00
voxel_map.h Added get/set_voxel_f in VoxelMap 2019-04-28 00:25:33 +01:00
voxel_mesh_updater.cpp Code formatting 2019-04-28 01:34:00 +01:00
voxel_mesh_updater.h Added smooth_meshing option to VoxelTerrain and handle padding differences it introduces 2019-04-28 01:32:23 +01:00
voxel_mesher.cpp Added smooth_meshing option to VoxelTerrain and handle padding differences it introduces 2019-04-28 01:32:23 +01:00
voxel_mesher.h Added smooth_meshing option to VoxelTerrain and handle padding differences it introduces 2019-04-28 01:32:23 +01:00
voxel_provider_image.cpp Smooth VoxelProviderImage a little in isolevel mode, also properly repeat the heightmap if it's not power of two 2019-04-27 02:08:12 +01:00
voxel_provider_image.h Add quick support for isolevel in VoxelProviderImage 2019-04-25 00:54:14 +01:00
voxel_provider_test.cpp Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_provider_test.h VoxelProvider now receives an offset in voxels instead of blocks 2017-08-28 15:42:54 +02:00
voxel_provider_thread.cpp Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_provider_thread.h Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_provider.cpp Added an image-based terrain generator for testing (ported from the GDScript demo) 2018-09-28 01:11:28 +01:00
voxel_provider.h Clang-format did things 2019-04-24 01:31:42 +01:00
voxel_raycast.cpp Fix includes 2018-09-19 20:25:04 +01:00
voxel_raycast.h Fix includes 2018-09-19 20:25:04 +01:00
voxel_terrain.cpp Added smooth_meshing option to VoxelTerrain and handle padding differences it introduces 2019-04-28 01:32:23 +01:00
voxel_terrain.h Added smooth_meshing option to VoxelTerrain and handle padding differences it introduces 2019-04-28 01:32:23 +01:00
voxel.cpp Clang-format did things 2019-04-24 01:31:42 +01:00
voxel.h Code formatting 2019-04-28 01:34:00 +01:00
zprofiling.cpp Fix includes 2018-09-19 20:25:04 +01:00
zprofiling.h Fix includes 2018-09-19 20:25:04 +01:00

Voxel Tools for Godot

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

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)
  • Simple interface for custom terrain generators (block by block using threads)

What this module doesn't provides

  • Level of detail for blocky terrain
  • Level of detail for smooth terrain (not YET)
  • 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.