some vertexshader(blubb)
{
pos = mul(matModelViewProj, vertpos);
texcoord = mul(matModel, vertpos).xz*tiling; //texture coordinate for the blended textures
maskcoord = vertexcoord0; //texture coordinates for the blend mask
}
other pixelshader(some)
{
mask = tex2D(masksampler, maskcoord);
if(mask.r < 0.1f)
color = tex2D(tex0sampler, texcoord);
else if(mask.r < 0.2f)
color = tex2D(tex1sampler, texcoord);
else if(mask.r < 0.3f)
color = tex2D(tex2sampler, texcoord);
else if(mask.r < 0.4f)
color = tex2D(tex3sampler, texcoord);
...
}
Just some ugly pseudo code, but should give you an idea on how easy one could realize something like that. If you want smooth blending you could maybe interleave the colors between the different channels or whatever. Or you can just use each textures alpha channel for its blend value, as one of the template effects already does it for endless textures.
BUT this whole approach also needs your own shading, also while the ifs probably aren´t that bad, it might be a better idea to only blend three or four textures and split the mesh into several parts, so you could have your paths use four textures blending to the grass to their sides which is then another model blending with some sand, flowers and rock or whatever.
A modern approach to the whole problematic would be virtual textures, which should be possible in some ways with DirectX9 I think, but I am not sure...