A high-performance Computational Fluid Dynamics (CFD) simulation engine built with C++, CUDA, and Vulkan. This project utilizes the Lattice Boltzmann Method (LBM) for fluid simulation and provides real-time visualization.
- Lattice Boltzmann Method (LBM): 3D fluid simulation using the D3Q19 model.
- High Performance: Accelerated using CUDA for parallel computation on the GPU.
- Real-time Visualization: Vulkan-based rendering with zero-copy CUDA-Vulkan interoperability.
- Interactive: Real-time camera controls and ImGui-based user interface.
- Solid Boundaries: Support for solid obstacles within the simulation domain.
Before building the project, ensure you have the following installed:
- C++ Compiler: Compatible with C++20 (e.g., GCC, Clang, MSVC).
- CMake: Version 3.24 or higher.
- Make: Build tool.
- CUDA Toolkit: For compiling the LBM solver kernels.
- Vulkan SDK: For the rendering engine.
The project includes a Makefile to simplify the build process.
To build the project in Release mode (optimized):
make buildTo build the project in Debug mode:
make debugTo clean the build artifacts:
make cleanTo format the source code using clang-format:
make formatTo build and run the tests:
make testAfter building, the executable will be located in the build directory.
./build/Engine/Engine- W / S: Move Camera Forward / Backward
- A / D: Move Camera Left / Right
- Q / E: Move Camera Down / Up
- Right Mouse Button + Drag: Rotate Camera (Look around)
- Core/: Contains core engine components such as Application, Window, Input, Timer, and Logger.
- Engine/: Contains the simulation and rendering logic.
- Graphics/: Vulkan renderer, Camera, and Shader management.
- Physics/: LBM solver implementation using CUDA.
- thirdparty/: External libraries and dependencies.
This project is licensed under the Apache-2.0 License.