Skip to content

A simple realtime fluid simulation tool for computer graphics and simulation enthusiasts.

License

Notifications You must be signed in to change notification settings

Goubermouche/VFD

Repository files navigation

VFD

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.

Viscous fluid simulationViscous fluid simulation

Getting up and running

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.

Plans

The current plans and known issues can be found here.

Long term plans

For more detailed descriptions and a full list of plans see the SRS and FS documents.

  • Engine core, editor & basic renderer
  • CUDA integration
  • First fluid simulation
  • Better component integration and renderer extension
  • Editor style pass
  • DFSPH solver
  • Viscosity solver
  • Surface tension solver
  • Offline DFSPH implementation (GPU based)
  • Better simulation GUI
  • ...

Usage

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.

Controls

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

Dependencies & Requirements

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)

Release Notes

Screenshots

Acknowledgements

  • 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.

About

A simple realtime fluid simulation tool for computer graphics and simulation enthusiasts.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published