Back to Tech Art

UE5 Pseudo Fluid Dissolve

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.

Unreal EngineNiagara Simulation StagesMaterialsRender TargetsCurl Noise
Fluid dissolve effect demo
Fluid dissolve with render target preview

Left: In-game effect. Right: Render target showing the fluid texture being generated

Table of Contents

Niagara Simulation Stages

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.

Curl Noise Advection

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 system in Niagara

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.

Grid-based advection in Niagara

Previous frame sampling for advection

Directional Dissolve with Dot Product

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 calculation for dissolve direction

Box intersection with dot product for direction control

Dissolve Material

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 dissolve material graph

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

Stencil mesh showing remaining visible pixels

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 output

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.

Tech Stack

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