Stylized Water Shader with Unreal Engine

Hello everyone! This is my first post and I hope I can contribute to the community.

I am currently getting into the shading and VFX world and have been working on small projects practicing and learning new stuff for me. I do have a strong programming background but almost nothing about art and so on.

Here you can find a recent breakdown video I did last week:

You can check a in depth look at the shader and Gerstner waves implementation on my Artstation or my website:

Feedback is much appreciated. Thanks!


Hi there!

I think the waves look awesome! I wanna try making an ocean shader too sometime. It’s really cool that you showed how you’ve done them! :blush:

One point of feedback from my side is about the foam on the waves. I think the fact that the texture of the white foam is not animated itself gives away the illusion. Also the edges of where to foam ends and starts are too clear. Maybe introduce some noises in the alpha map so the foam looks more sparse.

But that’s all from my side. The rest looks super neat to me!


Great waves mate!

Love the colors. But in my opinion, the foam / water transition feels somewhat linear in some points.

And maybe, at 00:22, I’m missing some water refraction, since the bottom of the water stays almost the same and that breaks the illusion.

Keep it up! :sparkles:


I agree with you about the wave foam. I am not an artist so textures are not my strength, the foam that you see in this example is one of included in the unreal’s starter content.

I need to work on a proper foam, improve the mask and also add some noise to break a bit the repetitions of the foam and the fake reflections.

Thanks for your feedback!

Thanks about the colors, I am really happy with the result.

Abiut the refraction, is there in the shader, but I always found it a bit too much. I deactivated it on all the example that are on the video but it is completly based on an irrational opinion: I don’t like refraction :upside_down_face:

And since it was an irrational thing, the programmer inside my head decided to leave a parameter on the shader in case I change my mind in the future.

1 Like