Blood in water effect like Ghost of Tsushima. How?

So I’ve spent the last few days trying to figure out how to do blood particle with water interaction like in Ghost of Tsushima but in Unreal Engine 5, but I can’t seem to figure it out.

ezgif-46d6c95f5dd924
I know the particles are dynamic according to this blog (need to use waybackmachine to enable gifs) , but how do they turn into clouds after they interact with the water, and most importantly, how does the effect gets picked up by the river’s flow and dissipates? It’s just incredible to me. If anyone can help me figure out how to achieve a similar effect in ue5, I’d very much appreciate it. Thanks.

Hi @greatluffy,

I have a pretty good idea as to what’s going on here!

So, first thing to note is that Ghost of Tsushima is not made in Unreal Engine. While a lot of this tech can be replicated in Unreal, just know that by default Unreal may not have the same systems in place that allows them to do this.

That being said, this is very similar to the tech used for Wukong, and that was made in Unreal. This is a system that I’ve played around with before, so I have a pretty good idea of how it works.

This system uses Virtual Texturing and Render Targets to draw intractions to textures that can be read from / written to anywhere. That is why this system is so lightweight- once the upfront cost of the render target is paid, all of the interactions are virtually free.

As for how the water specifically was done, this is a very complicated iteration of this system. But basically, if I had to guess, once the particles hit the water, they are rendered to the render target texture used by the water. Then, the way that specific render target texture probably works is that each time it rewrites its information, it uses the vector information from the water’s flowmap and a blur to fade out the effect downstream over time. The water material is set up specifically to read this interaction information as blood (probably based on which color it is being rendered too) and the texture is probably used as an alpha in a Lerp between the water color and the blood color.

I know this all sounds very complicated, and that’s because it is. PrismaticaDev has an awesome tutorial series that breaks it down in complete detail, and even shows some additional examples on how it can be used throughout your world.

I would recommend trying to recreate this by following his tutorial and then building off of it, since it’s such a complicated setup.

This is the first video in the 3 part tutorial.

This is a video breaking down his full interaction plugin, where you can see a very similar effect as the blood in the water.

You can also just by his interaction plugin if you want the finished product without the setup. I would definitely still recommend watching his videos though so you have an understanding of how it works.

Best of luck! Let me know if you have any other questions.

Oh wow, thanks a ton! That does seem like a genius solution. I’ll check it out! Btw, as far as I know, there’s no way to blur textureparameters (or at least an ez way), so how that might be achieved?

He goes into the method in his tutorials, but basically in this method, a texture is drawn with the input data, then sent to a material, then sent to a new, final render texture. This occurs every frame. When the texture is sent to the material, you can make any adjustments to it- just like a normal texture. This is how you add all of your extra effects like noise/movement addition, blur, and a fade over time.