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 1 year ago
doc updated info with notes. Committed some testing changes 1 year 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 1 year 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.