N body simulation
  • C++ 92.8%
  • GLSL 4.6%
  • CMake 2.6%
Find a file
jrgrgr d0e16294de feat: add scalar newtonian backend
This commit finally adds a working newtonian backend. It is only
visually tested for now but it looks okay, the velocities are
initialized using the centripetal force equation in the generator.

Because technically there is working gravity in Zorya I'm feeling okay
with bumping the CMake version to 1.0.0, but it's still quite janky and
in need of refactoring and cleanup as well as missing some core
features. So maybe more of an alpha than a proper v1.0.0 release. We'll
see which will be the first tag and proper git release.

Notable missing features are particle collisions and culling as well as
the groundwork for GPGPU support. AVX should be fairly straightforward
to implement with the current architecture. The rendering is also
currently quite boring, maybe some colors are in order. Oh and OpenMP
still doesn't work. Great software.
2026-03-13 00:56:58 +01:00
lib Basic ImGui window with docked layout embedding OpenGL framebuffer 2025-12-26 20:27:41 +01:00
src feat: add scalar newtonian backend 2026-03-13 00:56:58 +01:00
.gitignore Change shader to use SoA SSBOs instead of AoS VBOs 2026-02-11 22:35:02 +01:00
.gitmodules Added ImGui as dependency 2025-12-26 18:53:05 +01:00
CMakeLists.txt feat: add scalar newtonian backend 2026-03-13 00:56:58 +01:00
README.md Updated build instructions for heater 2026-02-22 22:44:23 +01:00
zorya.supp Added valgrind suppression file to suppress leaks coming from glfw, gtk and fontconfig (not my fault) 2026-03-01 18:59:09 +01:00

Zorya

Zorya is a (soon to be) high performance modular N body newtonian gravity engine built in C++23. It (will) feature runtime switchable compute backends. The rendering is handled using OpenGL 4.5 with an ImGui overlay

Build and run

Dependencies

  • CMake 3.31+
  • C++23
  • glfw
  • glew

First clone the project with the ImGui submodule (hello heater)

git clone --recurse-submodules https://dawn.wine/jojers/Zorya.git

Set up cmake and compile

cd Zorya
cmake -B build && cmake --build build -j $(nproc)

Now run with ./build/zorya