Combined SPH and OpenGL.
- A free 3D camera
- Water particles simulation
- Basic visual effect: skybox, lighting, texture
- Connect particles into a surface
- CUDA Toolkit (12.x or later)
- NVIDIA GPU Driver (575 or later)
- CMake (3.18 or later)
- GCC/G++
# Update package list
sudo apt update
# Install required development packages
sudo apt install libglfw3-dev # GLFW
sudo apt install libglm-dev # GLM Mathematics Library
sudo apt install libstb-dev # STB Image Library
sudo apt install libglew-dev # GLEW
sudo apt install freeglut3-dev # FreeGLUT# Install NVIDIA utilities
sudo apt install nvidia-prime nvidia-settings
# Configure system to use NVIDIA GPU
sudo prime-select nvidia
sudo nvidia-xconfig
# Log out and log back in (or restart) for changes to take effect# Create build directory
mkdir build
cd build
# Configure with CMake
cmake ..
# Build the project
make# Run with NVIDIA GPU (recommended)
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia ./app
# Or run normally if NVIDIA is your primary GPU
./app| Key/Mouse Action | User Action | Functionality |
|---|---|---|
| Left Mouse Click | Hold | Focus on the camera and enable camera rotation |
| Mouse Movement | Move Up/Down/Left/Right (after focusing the camera) | Rotate the camera lens in the corresponding direction |
| W | Press/Hold | Move the camera forward a certain distance/continuously |
| S | Press/Hold | Move the camera backward a certain distance/continuously |
| A | Press/Hold | Move the camera left a certain distance/continuously |
| D | Press/Hold | Move the camera right a certain distance/continuously |
| Space | Press/Hold | Move the camera up a certain distance/continuously |
| Ctrl | Press/Hold | Move the camera down a certain distance/continuously |
| Shift | Hold | Increase camera moving speed, release to return to normal |
| X | Press | Switch simulation status to running |
| P | Press | Toggle simulation status between pause and running |
| R | Press | Initialize SPH particle data, and pause simulation |
| ESC | Press | Close the program |
This project is based on the Smoothed Particle Hydrodynamics (SPH) simulation computational method from CPP-Fluid-Particles. I extend gratitude to zhai-xiao for their foundational work that enables our project to implement.
