UE4 Customizable Water Master-Material (Vertex Paintable)

**Customizable Material for UE4**

Supported versions: 4.24 4.25
Demo scene included.


1) Refraction with adjustable intensity, opacity, etc. (on/off switch)
2) Raindrop ripples effect on the surface. (on/off switch)
3) 2 vertex-paint channels enabling you to paint Moss, Leaves, lily pads, or anything you want on the surface of the water. (on/off switch for each channel)
4) Adjustable tile size for each vertex paint material. Adjustable speed and intensity for the movement.
5) Replaceable normal map for waves pattern enabling you to choose your tileable normal map.
6) Adjustable size, intensity, and speed for waves normal map.
7) Dynamic foam and ripples around the intersecting objects and shoreline. Adjustable spread radius, speed, opacity, and color for the foam. (on/off switch)
8) Adjustable depth parameter.
9) Adjustable colors for shallow and deep areas with contrast control between them.
10) World displacement Gerstner waves. (on/off switch)
11) 2 Gerstner wave variation with adjustable size, speed, height, and wavelength for each set and one overall intensity controller.
12) Tessellation multiplier.
13) The material is tiled all over the world allowing you to resize your water plane without any change in the size of waves or patterns. Also enabling you to snap each piece of the plane together without any seam line.

How to use:

**If you want to use the intersection foam feature in your project you have to enable "Generate Mesh Distance Field" from project setting. If you don't want the foam make sure to turn off "foam?" from the shader "feature" panel to avoid the flickering issue with the shader.

**If you want to use a planar Reflection actor in your scene you have to enable "Support Global Clip PLane for Planar Reflection".
(be careful with using this, it is pretty costly for performance).

>You can straight away use "Water_Plane" mesh in your scene and assign one of the premade material instances to it or make your own instance.
>Resize the mesh as big as you want to match the area or duplicate it and snap it together. (there won't be any seam :)
>The Gerstner works best when there are enough vertices to support mesh displacement.
> If you make your mesh very big then it doesn't have enough vert to support it. In that case, you can use the "Tessellation" parameter to divide the mesh into more polys.

Note: Vertex paint will look weird with extreme Gerstner wave intensity. It works best with a normal Gerstner wave intensity.
I am looking into fixing it in later releases.

Although the Material itself is pretty understandable I will make a short tutorial on how to use it to achieve the result you want.
Please let me know which part of it you need to be more covered.
Happy using it :)

A special thanks to Ben Cloward for his tutorials that helped me with few features.