FluXY is a GPU, grid-based, 2.5D fluid simulator. It's lightweight, fast, robust, and easy to use.
Here you can find the manual and API docs .
❗ Includes shaders for:
- Opaque fluid surface (URP/HDRP, 2019.4 and up)
- Transparent fluid surface (URP, 2019.4 and up)
- Volumetrics, new in 1.3 (URP/HDRP, 2021.2 and up)
You can use the included shaders on your project right out of the box, or as inspiration for your own simulation-driven shaders.
💡Expand 2D fluids into the 3D realm.
FluXY fluids live in containers. A container can either be a custom mesh or a flat rectangular area. Containers can face the camera, and objects in the scene can splat density and velocity data onto containers. All 3D data coming from the outside world such as forces, velocities, is projected to 2D. This gives the impression of a full 3D simulation, but orders of magnitude cheaper.
💡Turbulence, pressure, buoyancy, surface tension, external forces...
Take full control of the simulation: make swirly fluid by increasing turbulence, make it expand by reducing pressure, rise to the sky by increasing buoyancy, use adhesion and surface tension to make dripping paint, let it be affected by wind...
Fluids can inherit the movement of their container. Put a torch in a character's hand, and the flames will be affected by running, jumping, waving and any other movement. You have full control over how much acceleration/velocity is transferred to the fluid.
💡Simulate fire, smoke, ink, water, paint, and other VFX.
Make your players traverse oily water, unleash magic spells, add smoke to destructible/crumbling objects, and more.
💡Dynamic Level of Detail (LOD)
Integrated with Unity's LOD components, distant simulations are performed at lower-resolution. Transition between levels of detail is smooth as butter.
💡Fast separable pressure solver
Calculating pressure usually is the most expensive part of fluid simulation, as the same basic math operation has to be repeated many times per frame. FluXY offers you a fast, separable pressure solver that achieves results comparable to traditional methods in a fraction of time. And, you can still choose to use the traditional way if you wish.
When using the traditonal pressure solver, pressure values can double up as a cheap wave simulation.
The entirety of the fluid simulation happens in your GPU, using fragment and vertex shaders.
💡Parallel simulation of multiple fluid containers.
Simulating one fluid container is fast, but simulating up to 16 at the same time is even faster. FluXY uses automatic dynamic atlasing to put multiple simulations into the same texture, for maximum performance.
💡Full source code included. Fast support and regular updates.
If you want to modify FluXY, add custom features to it, or just take a look under the hood, you'll be happy to know that every script and shader is included and easily editable. If you need assistance or have a question, drop us a line and we'll do our best to help.
❓What do I need to know to be able to use FluXY?
For basic use cases, very little experience is needed. Some basic Unity skills and understanding 3D concepts such as world/local space, raycasts, velocities/accelerations... will get you far. No C# scripting needed.
As you get into more elaborate effects, some shader knowledge is useful. FluXY outputs fluid density and velocity values as textures, you can use these as input in your own shaders to create some seriously cool stuff.
❌Things FluXY isn't / doesn't do:
- Not a full 3D fluid simulator, no volumetric effects. Simulation takes place on a 2D plane.
- No free-surface fluid simulation (can't simulate pouring fluids on containers, for instance).
- Not a fluid renderer. A basic unlit shader compatible with all SRPs is included (used in most store videos/images), and sample shaders for fluid surfaces and volumetrics, however you must use your own shaders for anything fancy. Fluid simulation outputs two textures (density and velocity) that you can easily use in your own shaders/materials to match your game's look.
- Can't simulate large water bodies like oceans, rivers, etc.
- Does not support two-way rigidbody coupling. Rigidbodies can either drive the fluid flow, or be driven by it, but not both at once.
❌Limitations for custom meshes
- FluXY performs simulation in texture space, so meshes must be UV unwrapped with this in mind: uvs must be non-overlapping, and texture seams minimized since fluid cannot flow across seams.