Hi there,
I share shader that blends textures based on vertex color.
The example uses red vertex color to weight between two textures.
Fell free to modify it for your needs adding more textures and using more vertex colors.

`
shader_type spatial;
uniform float grassres = 10;
uniform float rockres = 10;
uniform sampler2D grass;
uniform sampler2D rock;
uniform sampler2D grassN;
uniform sampler2D rockN;
varying vec4 vertexColor;
void vertex() {
vertexColor = COLOR;
}
void fragment(){
vec3 grasstex = texture(grass, UVgrassres).rgb ;
vec3 graaNtext = texture(grassN, UVgrassres).rgb ;
vec3 rocktex = texture(rock, UVrockres).rgb ;
vec3 rockNtex = texture(rockN, UVrockres).rgb ;
float inverseMultiplier = 1.0 - vertexColor.r;
inverseMultiplier = inverseMultiplier >0.01 ? inverseMultiplier : 0.01;
vec3 resultAlbedo = (grasstex inverseMultiplier) + (rocktexvertexColor.r);
ALBEDO = resultAlbedo;
vec3 resultNormal = (graaNtext inverseMultiplier) + (rockNtexvertexColor.r);
NORMAL = resultNormal;
ROUGHNESS =0.5;
}
`