Black hole simulation project (CMake with optimizations)
Here is the black hole raw code, everything will be inside a src incase you want to copy the files
I'm writing this as I'm beginning this project (hopefully I complete it ;D) here is what I plan to do:
-
Ray-tracing : add ray tracing to the gravity simulation to simulate gravitational lensing
-
Accretion disk : simulate accreciate disk using the ray tracing + the halos
-
Spacetime curvature : demonstrate visually the "trapdoor in spacetime" that is black holes using spacetime grid
-
[optional] try to make it run realtime ;D
I hope it works :/
Edit: After completion of project -
Thank you everyone for checking out the video, if you haven't it explains code in detail: https://www.youtube.com/watch?v=8-B6ryuBkCM
-
C++ Compiler supporting C++ 17 or newer
-
sudo pacman -S base-devel cmake
-
sudo pacman -S git
- Clone the repository:
git clone https://github.com/namuinteractive/black_hole.git
- CD into the newly cloned directory
cd ./black_hole
- Install dependencies (Arch Linux), use the equivalents for your distro
sudo pacman -S glfw-x11 glew glm
- Create a build directory
mkdir build
- Go to build
cd build
- Configure project with CMake
cmake ..
- Build the project
make -j$(nproc)
- Run the program
- The executables will be located in the build folder
for 2D: simple, just run 2D_lensing.cpp with the necessary dependencies installed.
for 3D: black_hole.cpp and geodesic.comp work together to run the simulation faster using GPU, essentially it sends over a UBO and geodesic.comp runs heavy calculations using that data.
should work with necessary dependencies installed, tested on Arch Linux, although other distros should work fine.
LMK if you would like an in-depth explanation of how the code works aswell :)
Note: I am not the original creator of the code, I just adapt it to Linux and similar systems. The original repository is here: https://github.com/kavan010/black_hole