VoxaEngine is currently capable of making sand falling simulations, fire simulations, heat transfer & pressure simulations.ons.
Uses SDL2, FreeType library and Dear ImGui. Engine is programmed in C++ and rendered using OpenGL.
Features OpenGL compute shaders using GLEW for faster simulation passes.
Utilizes Dirty Rect's and multithreading for maximum performance.
It is capable of simulating solids, liquids and gasses all interacting with each other.
Each voxel has a density, which affects the outcome of the simulation.
Capable of trasfering heat between voxels and changing voxel states based on temperature.
Utilizes multithreading and sectioning for extra performance.
Most of the heat transfer is done on the GPU for extra performace
Simulation includes heat capacity and heat conductivity for each voxel for more realistic transfers.
Capable of simulating gas and liquid "pressures" and their ability to compress or stretch in avalible space.
Most of the gas pressure simulation is done on the GPU for faster speeds
Utilizing flamability and flame propagation with oxygen
Utilizing Box2D and a custom object logic to support fully destructable, dynamic objects
SDL2 renderer and most of other renderers are not made with this kind of "voxel" rendering in mind. This is why this project runs on custom render shaders to provide maximum performance that wouldn't be possible without it
Note
ImGui and poly2tri libraries are dynamically downloaded on build. Your first build may take few minutes
Caution
Installing and setting up vcpkg is an extensive process. You will have to install your OSs triplets and such. If you have no experience with vcpkg it's recommended to first look up a tutorial to set it up correctly before compiling this project
Tip
There are prebuild binaries avalible which you can just download and immediately run
Important
You need to have installed CMake v3.10 or more, g++ compiler with Ninja generator.
You will need to have vcpkg installed somewhere to use its path to get vcpkg.cmake
(All commands are inside the PROJECT folder)
To prepare the project for compilation run:
cmake -S . -B build -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="PATH\TO\VCPKG\CMAKE\vcpkg.cmake"
Afterwards run following to set the release preset:
cmake --preset release
Build the project into executable binaries with:
cmake --build build
After that, run VoxaEngine.exe from inside the build/Games/Game folder.
Important
You need to have installed CMake v3.10 or more, g++ compiler with Ninja generator.
You will need to have vcpkg installed somewhere to use its path to get vcpkg.cmake
You need to install these packages before compiling (package name depends on your linux distribution):
libglew-devorglewlibgl1-mesa-dev& mp;libgl-devormesa
(All commands are inside the PROJECT folder)
To prepare the project for compilation run:
cmake -S . -B build -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="PATH/TO/VCPKG/CMAKE/vcpkg.cmake"
Afterwards run following to set the release preset:
cmake --preset release
Build the project into executable binaries with:
cmake --build build
After that, run VoxaEngine from inside the build/Games/Game folder.
wasd- movement (wands- swim up and down or jump when not using noclip)left click- place or shootright click- explodetzu- place a physics barrel, physics sphere, static crate