Voxen is a vulkan voxel engine.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dirkson 48ebcb0f50 updated info with notes. Committed some testing changes 10 months ago
doc updated info with notes. Committed some testing changes 10 months ago
include Undoing the last commit. Manually. Because git was made by insane people 2 years ago
src updated info with notes. Committed some testing changes 10 months ago
subprojects Improve vulkan environment setup prompt 2 years ago
.gitattributes No github, .h is not c++ 3 years ago
.gitignore Fixed vulkan build 2 years ago
.lvimrc added 'include' dir to lvimrc 2 years ago
LICENSE Initial commit 3 years ago
Readme.md Updated notes 2 years ago
build Updated osmia 2 years ago
meson.build Updated to newer specification of header file. Tracked down clang/graphene incompatibility that prevented building 1 year ago




Very early WIP. Nonfunctional.

What is it?

  • Voxen is an MIT-licensed, cross platform, multi-threaded voxel engine.
  • It is written in C and works on windows, OSX, Linux, and BSD.
  • It uses vulkan to render.

What is it not?

  • Voxen does not provide a way to texture voxels. (Use another engine that supports non-voxel voxels.)
  • Voxen does not store speed or rotational speed of objects. (Use the *data field)
  • Voxen does not figure out how many threads are available. ()
  • Voxen does not provide UI or other 2d rendering. (nanovg vvg, skia, nuklear?)
  • Voxen does not provide texture loading. (stb_image, devIL)
  • Voxen does not provide a way to load materials from disk. (ScrumbleDataFormat, Json, )
  • Voxen does not provide a way to create a window, context, or take keyboard input. (glfw, SDL)
  • Voxen does not provide network code (use Exp/Imp functions alongside compression and tcp/IP)
  • Voxen does not provide collision detection (Use bullet or other physics engine using voxenObj sizes and locations)
  • Voxen does not output errors to stdout, stderr, or a logfile. (Provide it a voxen_debug callback, then use your own preferred logging solution)
  • Voxen does not provide a way to do textured skyboxes.(Write your own textured skybox in vulkan, or throw up a few voxels for stars, sun, moon, etc.)


Runtime Deps

  • Vulkan
  • Graphene
    • The build script will automatically grab this
  • Eventually Threading (Of some sort)

Build Dependencies

  • Vulkan SDK
    • The build script will help you install this.
    • It includes Shaderc/glslc
    • Dependencies:
      • Bash
      • Cmake
      • Make
      • Git
      • Python 2
  • Bash
  • Meson
  • Ninja-build
  • Git

Example Binary Dependencies

  • glfw 3.2+

How to build

To build the library and example:

./build -r

To build just the library:

./build -r libvoxen.a


./build -r libvoxen.so

Building as a .dll is intended, but not yet implemented. It may work on windows anyway.

Why C?

Many languages bind much more readily to C than C++. Ideally, I'd like Voxen to be accessible in Zig, C, Rust, and C++, and others if you have to. Also I know C.