Black hole simulation project
Here is the black hole raw code, everything will be inside a src bin 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
- Clone the repository:
git clone https://github.com/kavan010/black_hole.git
- CD into the newly cloned directory
cd ./black_hole
- Install dependencies with Vcpkg
vcpkg install
- Get the vcpkg cmake toolchain file path
vcpkg integrate install- This will output something like :
CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake"
- Create a build directory
mkdir build
- Configure project with CMake
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake- Use the vcpkg cmake toolchain path from above
- Build the project
cmake --build build
- Run the program
- The executables will be located in the build folder
If you don't want to use vcpkg, or you just need a quick way to install the native development packages on Debian/Ubuntu, install these packages and then run the normal CMake steps above:
sudo apt update
sudo apt install build-essential cmake \
libglew-dev libglfw3-dev libglm-dev libgl1-mesa-devThis provides the GLEW, GLFW, GLM and OpenGL development files so find_package(...) calls in CMakeLists.txt can locate the libraries. After installing, run the cmake -B build -S . and cmake --build build commands as shown in the Build Instructions.
for 2D: simple, just run 2D_lensing.cpp with the nessesary dependencies installed.
for 3D: black_hole.cpp and geodesic.comp work together to run the simuation faster using GPU, essentially it sends over a UBO and geodesic.comp runs heavy calculations using that data.
should work with nessesary dependencies installed, however I have only run it on windows with my GPU so am not sure!
LMK if you would like an in-depth explanation of how the code works aswell :)