VFD (Viscous Fluid Dynamics) is a simple, real-time fluid simulation tool for computer graphics and simulation enthusiasts with special focus on highly-viscous simulations. The current focus is to get the basic structure of the engine to a working state. The engine is currently in development and is not yet ready for use.
Visual Studio 2022 is recommended, but older versions should work after a few updates to the Setup.bat and premake5.lua files. Additionally, an Nvidia GPU with compute capability 3.0 or higher is required for running the CUDA code.
1. Downloading CUDA
Download the CUDA toolkit and follow the setup instructions for your system. The project runs on CUDA toolkit version 11.7, however, older or newer versions will probably work aswell. Older versions of the toolkit can be found here. Note that if you're using a different version of CUDA you will have to update the premake5.lua file.
2. Downloading Vulkan
Download the Vulkan SDK and follow the setup instructions for your system.
3. Downloading the repository:
Clone the repository with git clone --recursive https://github.com/Goubermouche/VFD.git
.
If the repository was cloned non-recursively previously, use git submodule update --init
to clone the necessary submodules.
4. Configuring the dependencies:
Run the Setup.bat file found in the root directory. This will create project files for VS2022.
The current plans and known issues can be found here.
For more detailed descriptions and a full list of plans see the SRS and FS documents.
Engine core, editor & basic rendererCUDA integrationFirst fluid simulationBetter component integration and renderer extensionEditor style passDFSPH solverViscosity solverSurface tension solverOffline DFSPH implementation (GPU based)Better simulation GUI- ...
Note that the application is currently in its infancty, and as such won't provide a mature toolset.
- Once you've starting the application you can modify the current scene; to do so you have to right click the scene hierarchy panel and, using the right mouse button, create an empty entity, you can the select this entity by left clicking it and, by pressing the 'Add Component' button, add various components to it.
Action | Description |
---|---|
Space | Pause/Unpause active simulations [Deprecated] |
RMB | Open context menu |
LMB | Select, interact |
MMB + Drag (while hovering the viewport) | Camera orbit |
MMB + Shift (while hovering the viewport) | Camera pan |
Scroll (while hovering the viewport) | Modify camera zoom |
Note that CUDA and Vulkan have to be installed on the target system in order for the project to compile successfully. All other dependencies are already included and will be downloaded and set up automatically.
Dependency | Description |
---|---|
CUDA | Used as a parallel computing platform and application programming interface. |
GLFW | OpenGL window API |
GLUT | OpenGL API wrapper |
Vulkan | Rendering API, currently only used for parsing shaders. |
ImGui | Stateless GUI, works as the core of the editor. |
glm | Math functions and utilities. |
entt | Fast ECS, core of the entire application. |
Cereal | Simple serialization library used to save & load ECS scenes. |
tinyobjloader | .obj Model loader. |
STB | Utility image libraries (stb_image.h, stb_image_write.h) |
- Implementation of the DFSPH simulator is largely based off of SPlisHSPlasH.
The project currently implements techniques from the following publications:
- Jan Bender, Tassilo Kugelstadt, Marcel Weiler, Dan Koschier. Volume Maps: An Implicit Boundary Representation for SPH. ACM SIGGRAPH Conference on Motion. Interaction and Games, 2019
- Marcel Weiler, Dan Koschier, Magnus Brand, Jan Bender. A Physically Consistent Implicit Viscosity Solver for SPH Fluids. Computer Graphics Forum (Eurographics). 37(2). 2018
- F. Zorilla, M. Ritter, J. Sappl, W. Rauch, M. Harders. Accelerating Surface Tension Calculation in SPH via Particle Classification and Monte Carlo Integration. Computers 9, 23, 2020.