Thanks Megalomaniak.
This one is free for anyone, it looks good and it's a good starter.
The concern with vertex based is there is no LOD, if your water plane is big this will decrease the frame rate.
vec2 UVText = UV;
UVText.x = (UV.x + (TIME * XspeedMultiplier)) * UVscaling;
UVText.y = (UV.y + (TIME * XspeedMultiplier)) * UVscaling;
vec3 normalNoiseText = texture(normalNoise,UVText).rgb ;
I'm working on other things and a basic water shader will do the job.
Another effect using blending two normal maps with lerp and having both using UV shift could produce something interesting.
shader_type spatial;
uniform float UVscaling = 10;
uniform float UVscaling2 = 10;
uniform float XspeedMultiplier = 0.001;
uniform float YspeedMultiplier = 0.001;
uniform float XspeedMultiplier2 = 0.001;
uniform float YspeedMultiplier2 = 0.001;
uniform sampler2D normal1;
uniform sampler2D normal2;
uniform vec3 colorWater;
uniform float roughnessValue =0.1;
uniform float metalnessValue =0.7;
void vertex() {
}
void fragment(){
vec2 UVText = UV;
vec2 UVText2 = UV;
UVText.x = (UV.x + (sin(TIME * XspeedMultiplier))) * UVscaling;
UVText.y = (UV.y + (cos(TIME * XspeedMultiplier))) * UVscaling;
UVText2.x = (UV.x + (sin(TIME * XspeedMultiplier2))) * UVscaling2;
UVText2.y = (UV.y + (cos(TIME * XspeedMultiplier2))) * UVscaling2;
vec3 normal1Text = texture(normal1,UVText).rgb ;
vec3 normal2Text = texture(normal2,UVText2).rgb ;
vec3 normalBlend = mix(normal1Text,normal2Text, sin(TIME));
vec3 normalOutput = clamp (normalBlend, 0.1, 1);
//NORMALMAP_DEPTH = 0.5;
ALBEDO = colorWater;
ROUGHNESS =roughnessValue;
METALLIC = metalnessValue ;
NORMALMAP = normalize( normalOutput);
}