This is a pseudo simulation because I cut corners with curl noise from Niagara instead of running actual fluid dynamics. The effect is screen-space, using dot products and Blueprint math for bounds projection. The key is advection: using current frame values to predict where particles were in the previous frame, making the dissolve look like it's actually flowing.


Left: In-game effect. Right: Render target showing the fluid texture being generated
Niagara's simulation stages let me do compute-like operations, which is pretty powerful. I use a specific kind of render target that can write to the current frame while also reading from the previous frame - that's critical for the advection to work. Without being able to compare current vs previous values, you can't predict motion.
This is what makes the "fluid" look fluid. Advection predicts where values were in the previous frame using velocity. I sample curl noise to get divergence-free motion (those swirling patterns you see in real fluids) without actually solving any fluid equations.

Curl noise velocity field setup
I get the grid UV, sample the velocity, and look up where that pixel was last frame. Then I pull that value forward. This is the core of what makes it feel like the dissolve is "flowing" instead of just fading.

Previous frame sampling for advection
Because of how I use dot product for the dissolve direction, I can actually dissolve from any angle: bottom to top, left to right, diagonal, whatever. Just change the vector values and the dissolve follows. I calculate the min/max bounds of the object in Blueprint to get the world-space extents.

Box intersection with dot product for direction control
I layer multiple noise textures with different speeds to get variation in the dissolve edge. The dissolve starts from a direction (controlled by the dot product) and eats away at the mesh over time. Smooth step controls the falloff.

Full material graph: noise tiling, dot product direction, smooth step, and opacity mask

Stencil mask: one of the two overlapping meshes
The trick here is I'm overlapping two identical meshes with different stencil masks. One mesh just disappears with a standard dissolve, while the other gets the fluid simulation applied with a time offset. This creates that layered effect where the "fluid" seems to eat into the character.
Final output samples the advected texture with a depth test for sorting. The noise makes it look like fluid filling or draining, depending on which way you run the effect.

Final material with depth test output
It's called "pseudo" fluid because I'm not solving Navier-Stokes or anything - curl noise gives you that swirling, divergence-free motion for free. The combination of advection, directional control, and layered noise creates something that looks like fluid simulation without the computational cost.
Simulation Stages
Compute in Niagara
Render Targets
Previous frame read
Curl Noise
Fake fluid motion
Dot Product
Direction control
Blueprint
Bounds calculation
Smooth Step
Edge falloff