Fluid3D

Ok, here we go: After months of teasing here and there, I’ve finally found the time to clean up everything I have so far, added some examples and now I’m brave enough to release the first beta-version fo the Fluid3D-pack. Yay!

What is it?

It’s an (almost) one by one port of the NVIDIA GPU Gems example. It includes dynamic obstacle-fluid-interaction, one basic directional-impulse, basic raymarcher for the fluid itself and comes with 3 examples how to use it and combine it with DX11.Particles

Why here and not as a contribution?

This has two reasons.

First it depends on the latest changes of DX11 by vux, which is not released yet. Here you can download a self-compiled version.

Second reason: There is one important thing missing. Normally you do the computation of the fluid-pressure more than once. Because of the design of vvvv and DX11-nodes this could be only done atm by writing a plugin which does this internally for some iterations and outputs the final pressure. I haven’t done this before, @vux gave me some hints how to do so but had not the time yet to look into this. So if any of you guys (@microdee, @tmp, @woei, @antokhio, @sebl, whoever) thinks, this is a no-brainer: feel free! You would be very welcome. But for now, it’s working already and is doing what fluids are doing.

How to install?

Download it and put into the pack folder:

fluid3d_v09.zip (809.4 KB)

You gonna also need InstanceNoodles, DX11.Particles and latest DX11 build.

Can you use it?

Yes, please. Have fun. If you find bugs, let me know. If you add features, please share. And also if you gonna use it for a project, I would love to see it.

Cheers!

20 Likes

Awesome
Thanks for sharing

Looks great, easily good enough for a contribution!

hey @timpernagel,
really nice! good job !!

regarding the performances with a GTX 980Ti i reach
01_Example_Fluid3D_Density.v4p : 120 fps
02_Example_Fluid3D_Obstacle.v4p : 35 fps
03_Example_Fluid3D_Particles.v4p :30 fps

with GTX1070m
01_Example_Fluid3D_Density.v4p : 120 fps
02_Example_Fluid3D_Obstacle.v4p : 45 fps
03_Example_Fluid3D_Particles.v4p :40 fps

can someone confirm such GPU usage?
thanks

@guest Yes, can confirm this drastic difference in performance.

This has one reason: Obstacles are enabled in 02_Example_ and 03_Example_ . Voxelizing and generating a TextureArray based on the mesh and vertex-movements is kinda heavy. Only way of pushing the performance is to reduce the resolution of the mesh or reducing the resolution of the fluid-volume. I have a 1080ti here, patch is running at 60fps if mainloop locked to this.

@dottore also proposed an idea to have a second way of generating the velocity for the obstacles by only calculate them based on transforms of the whole geometry not based on changes of every vertex. I will put it on the list, could bring some additional fps.

hey @timpernagel
thanks for the explanation
looking forward to this alternative!

Small update: fluid3d_v091.zip (840.1 KB)

  • added ImpulseSpherical and example
  • added SimpleObstacles and example
  • added Absolute-toggle for BasicRaymarcher
  • fixed size and position of both impulses, now in VVVV-space

@circuitb The “SimpleObstacles” is the transform-based-calculations mentioned in my last post. It brings here on my machine ~13 more frames. @guest : I’ve tested the example patches on my laptop with 980M and have to say they all run almost stable at 60fps. So still faster than on your both setups for some reason. 🤔

1 Like

thanks for the update
just to let you know
the Renderer (DX11 Texture Array) Element Count of the Geometry part is the bottle neck on my machine
when i activate Bind Whole Target (not sure it’s a good idea in this case) everything is running @ 60 fps

1 Like

@circuitb just tested your proposal. when enabeling “bind whole target” obstacles are not generated correctly anymore. The Renderer (DX11 Texture Array) is not outputting anything anymore. Propably it’s the same on your machine. So, Bind Whole Target has to be enabled in order to get the obstacles running.