Thank you.
I added a global normal map and roughness values.

shader_type spatial;
uniform float grassres = 30;
uniform float rockres = 30;
uniform float dirtres = 30;
uniform float normalres = 10;
uniform sampler2D grass;
uniform sampler2D rock;
uniform sampler2D dirt;
uniform sampler2D splatmap;
uniform sampler2D normalmap;
void fragment(){
float grassval = texture(splatmap, UV).g;
float rockval = texture(splatmap, UV).b;
float dirtval = texture(splatmap, UV).r;
vec3 grasstex = texture(grass, UV*grassres).rgb * grassval;
vec3 rocktex = texture(rock, UV*rockres).rgb * rockval;
vec3 dirttex = texture(dirt, UV*dirtres).rgb * dirtval;
vec3 result = grasstex + rocktex + dirttex;
ALBEDO = result;
vec3 normal = texture(normalmap, UV*normalres).rgb ;
NORMAL = normal;
METALLIC = texture(normalmap, UV*normalres).b ;
ROUGHNESS = texture(normalmap, UV*normalres).r;
}
Someone made a height blending shader
https://kinwailo.wordpress.com/2017/05/19/godot-terrain-shader/