Trying to understand and recreate the Water System/Shader Techniques used in "Wuthering Waves" within Unreal Engine 5.

Probably not everybody here knows about the game “Wuthering Waves” since it’s a bit more niche, but since it’s also a fairly high-end Unreal Engine 4 game, I thought maybe somebody here has looked into it’s different systems.

I’m currently trying to recreate a similar style ‘Water System’, as Wuthering Waves’s, in Unreal Engine 5. And while I already have a decent amount of UE knowledge myself (and actively play the game), I’m having a hard time figuring out how their water actually works.

Some parts of it feel similar to Unreal’s built-in experimental Water System plugin, but not entirely either. The character interaction/ripples don’t seem to behave like the default UE water interaction I get. At the same time, it also doesn’t look as simulation-heavy or precise as something like Fluid Flux 3.0.

Because of that, I’m stuck somewhere in-between:

  • It feels too advanced to just be a flat plane + shader tricks.

  • But it also doesn’t seem like a fully simulated fluid system either.

Does anybody know:

  • What kind of setup they may be using?

  • Whether they’re likely extending UE4’s water system internally?

  • Or if there are any talks, presentations, breakdowns, shader analyses, etc. about it?

Extra question:
I’d also really love insight into how their water material/shader itself may work. I know that’s much harder to identify from just gameplay footage, but in my opinion it’s one of the cleanest and most elegant stylized-realistic water shaders I’ve seen in UE.

Would appreciate literally any technical observations or theories people might have. :smiley:

Yea none of that (from quick look at this https://www.youtube.com/watch?v=5W4VObWJ21U) is unreal stock or has ever had anything at all to do with epic.

“but how do you know?” - well, for one it works.

It’s really just a plane with a shader. they use RTs and some time driven emitters to simulate the fluid interaction.
Their shaders are a variation of Nvidia’s branches, maybe the engine itself is an nvidia branch (
The Caustics are a dead giveaway of this, but they can also be faked with a PP).

No, everything you may find is probably trash. stick to learning by doing.

You need to learn what Vector Fields are, how to set them up in a material. how to capture custom vector fields in real time, how to output custom images (via Niagara) into the VF. How to drive the various captured information over time.

Overall effect
https://gyazo.com/b19cb1b87f8ecbdc50d7c9408faad610

eyJhbGciOiJIUzI1NiJ9.eyJpbWciOiJfM2Q4OTY2NzAzMWZiYzkzMmI5NGJhMDdjMDRkNGJmZDQifQ.fqjQ-GaFew2B1TYEIB6VU4a7opAZqgdjtkR-nNvStTM-gif
Sample Flow (done with Distance to Nearest and a flow map)

https://gyazo.com/52377ab31f753bc5c031a0eaabddb1d1

eyJhbGciOiJIUzI1NiJ9.eyJpbWciOiJfZDlkNDk5NDY2YTM2ZGUzYjJiNGUyYzdkZTQ2Y2NlNTIifQ.a2Vs04RmfmzMDT-tMEGH60axri0nvPTrQ43raqm3d9k-gif

While on the subject. you also need to make your own water meshes.

Probably ask google to find you my posts on water.
There’s stuff I don’t even remember creating anymore. The forum does it’s best not to send notifications on old posts, so if anything comes up do a direct quote or mention.

keep it stupid simple. that’s the only way you can get the engine to actually make anything playable. If you have to spend 20% frame budget on water alone, you are doing it terribly wrong.
Unfortunately you won’t know if that’s the case until you are done with whatever you make. But check frame load often. it helps.

A properly finalized shader won’t cost more than the 2ms it needs to process the vector field. And the capturing of the vectorfield is the highest expense.

Alternatively, Fluid Ninja was free. if you don’t feel like doing some actual work and learning there’s always that cop out :wink:

Some good resources to learn from:
tharlevfx (https://www.youtube.com/watch?v=hDH25HnFneQ)
Ben Cloward (https://www.youtube.com/watch?v=rhlV4okjkiA)

Wouldn’t look at anyone else - people love to make sh*t and drive projects off a deep end (pun totally intended).