Realtime GPU smoke simulation

Hey, we are still waiting for your amazing work to come up, i don’t know if you’re on vacation of if you’re tired about the project, but you need to know that we’re a lot that are willing to support you in any way !

Hoping to see some news soon, have a nice day :slight_smile:

Hi, thanks a lot for kind words.

I’m not tired about the work, I just had a lot going on in work and life in general in the past month so no features were developed in JFlow and I haven’t touch the code at all, however it was quite often in my mind. Unfortunately next month I’m far from home, so I won’t be able to develop anything around simulations as I don’t have a laptop with a GPU but it could be time to work on the GUI if time allows it.

Now I’m working on a little AI made for denoising smoke and fire renders using Cycles, as for now it is too time consuming without denoisers and Optix and OIDN are giving quite poor results with low samples counts, especially in animation. (hopefully my will work a bit better)

So that’s for the news for now, and maybe some time in the future more features will be made

Have a nice day too :smiley:

13 Likes

You should apply for an Epic MegaGrant. They are looking to fund Open Source tools:

Epic is Blender Foundation’s largest financial supporter and I believe they have also funded Blender add-ons/third-party development as well.

Also, are you aware of Nvidia Flow? It is integrated inside Nvidia Omniverse for real-time volume simulation. Seems to perform like Embergen or Houdini, but maybe there is something here that can be helpful to you as they have published the libraries:

Faster volume rendering is my biggest problem in Blender right now. Are you thinking Cycles needs an more optimized volume shader to be able to display real-time volumes like Embergen, Houdini, Omniverse, etc? Or is do you think it is more complicated than just the shader?

3 Likes

Hi, thanks for links, I’ll look at them.

And with Cycles it’s not just the shader I’m afraid but the whole architecture with kernels included. But I might be wrong. As I’m not as good with the rendering part (JFlows internal engine is fast but results are far worse than Cycles) so I’ll try with better denoiser for just the Volume so it may help a bit, but maybe I’ll get some better idea for the rendering itself.

And with the grant I’ll look at the requirenments as it looks promising

2 Likes

My last question is many based on this old comment from you:

Oh, that comment was about blender’s viewport performance and it is far more complicated than with Cycles itself.
Some improvement should be seen with Vulcan backend if the blender core rewrite will be correctly done, but overall it will need half of blenders viewport to be rewriten as it has problems with high geometry and volume quality. But that’s entirely over my head as I know just the bare minimum about OpenGL and Vulcan as the main work is done in C++/CUDA and OpenGL just writes previously ray-traced image to the screen.

4 Likes

Very nice work!
Earlier I noticed these two comments: “I think I may have some good news coming to you soon. Still an early alpha and the gvdb library had to be a bit rewritten…” (Oct '21), and “I found an open source liquid simulator with GPU support called Fluids3…” (Oct '20)

As the lead architect for GVDB Voxels (with Nvidia 2013-2019) and as the developer of Fluids3 SPH (independent work), I wanted to lend my full support behind what you’re working on. Having this technology inside Blender is exactly why I have always pushed hard to make projects open source. It’s really great that you’re bringing sparse volumes and simulation to the Blender community.

If you’d ever like to talk shop about any details, performance, simulation, viewport rendering, volume raytracing, OpenGL, GVDB, NanoVDB, anything - I am available to talk with you. For both GVDB and Fluids3 I was also a sole developer so I know what you’re going through.

I’d also like to mention that Fluids4 was recently updated, runs in 64-bit, has no particle limit, supports CUDA 10+, and uses a new cmake build. I would be happy to share it with you (and on github) in support of any upcoming Blender releases you’re planning.

You have my support!

Kind regards,
Rama Karl Hoetzlein

36 Likes

Just so everyone (and not just me) knows, where exactly can I get Fluids4? I’m a complete rookie who’s also looking to create a fluid simulation addon, but with sand and liquids in addition to smoke. I’ve looked everywhere for it, and I’m hoping to aim for those who don’t like using nodes, but instead like to have presets.

1 Like

@palisadepics
Fluids4 is not yet on github. It is a stand-alone demo for SPH, not a blender plug-in. I was offering to help @michal1000w with possible integration in the future.

For your benefit, and others:

  • SPH - Fluids only, usually. Sometimes bouncy. Particle only. (e.g. Blender particles, Fluids4)
  • PCISPH - SPH but without the bounce.
  • FLIP - Very good fluids. Combined particle & grid. (e.g. FLIP Fluids plugin)
  • MPM - Fluids combined with sand, snow, etc. Like FLIP /w cohesion. (e.g. none for blender, Taichi)
  • McCormack - Smoke & fire method. (e.g. michal1000w demos above)
  • GVDB - Any of the above, but focuses on sparse domains. (GVDB=GPU Sim, NanoVDB=GPU Raytracing, OpenVDB=CPU original)
11 Likes

Thank you :slight_smile:
Working on the Hurricane demo I was indeed inspired with Fluids3 SPH demo and I reduced the particle limit, updated CUDA and added something like a Narrow Band simulation myself to make 80 million particles in 30fps (also object collisions and a rewrite for simulator and some partial rewrites for the gvdb itself).

That work however has been made with my very little experience in the field so if there is a possibility to look at Fluids4 code, that could add some fresh look at the problem and hopefully bring even better simulator in the end, that also could be more production ready than the early development demo I’ve made some time ago. And finally, when stable, it could be merged into blender.

I would also love to have some talks with a specialist like you about the issue, as for now I’ve been working on everything myself for around 4 years, and I’m just 21 years old so I’ve got little experience and probably my way of thinking is not as polished as it needs to be to create a production ready system.

So in summary I would love to get some help and advice from you and have a look at the github repo. I won’t be able however to work on it this month as I’m out of home and my laptop does not have an integrated GPU. When I come home however I will continue development, as for now I just sit with a notepad and theories.

Thank you again for all the support

With best regards,
Michał Wieczorek

19 Likes

@michal1000w
Sounds good. I don’t see any way to direct message on blender devatlk. Email me at [email protected] and we can arrange to talk.

9 Likes

I can’t sleep so I’ve made the first implementation of color support in JFlow Alpha.

35 Likes

Aaand some more basic tests. Nothing special but shows the aproximate behavior.

19 Likes

Nice … Is this NVIDIA only ??

1 Like

Greetings from Germany!

I just stumbled across this and read the whole thread, and I just have to say this: Dude!!! It absolutely blows my mind that you as a single talented person created such a fantastic piece of software as a side project over the course of like 2 years. As a CS student interested in CG and simulations myself I am insanely inspired by your work, not that I’d ever be capable of doing something remotely close. And also, please never stop having fun at what you do and feel absolutely encouraged to take some time off for yourself even if this means pausing the development for a while - I think everyone agrees with me on this, even though it might not be evident at all times because of all the excitement. Basically, don’t get burned out :stuck_out_tongue: Wish you all the best and keep up the great work.

6 Likes

For now it is just for NVidia GPU’s as I have more experience in CUDA and I don’t have AMD gpu to work with even if I change the entire project to OpenCL.

4 Likes

Thank you :slight_smile: I’m trying to have a lot of fun with this project as that’s what kept me going for the past few years of development.
Good luck with your work

4 Likes

OpenCL has been depreciated AMD current uses HIP.

With Intel coming out with GPUs and Apple having their own HW is this a good plan moving forward cause wont the system need to be coded for every Platform ?

3 Likes

I’m not sure about it either, but probably there would be a need to make it separate for each platform, however I have just one platform for now, so even if I had time and will I won’t be able to do this at this point in time.
But ideally I will try to make it for all possible devices.

3 Likes

And some more explosions:

19 Likes