As i was working on a terrainshader last year, here's some more ideas that might help in improving the overall look.

Adding noise and optional heightmaps to your splatmap can really improve the look of your final texture. Especially rocks benefit from this technique:

original


noise on splatmap fetch and heightmap for better blending (gives a more 3d-ish look and creates "small rocks")


since we already have the heightmap for our rocktexture, we can also create ambient occlusion in texture space very cheaply so the rocks aren't peter-panning anymore. (ambient occlusion has been overdone in this image to show the effect. The final effect should be a lot more subtle)



Another thing to note is that there isn't a holy-grail-blendmode for mixing the final texture. In fact, it makes sense to create different blendmodes for different types of materials. For example mud mixes with it's surroundings, while sand and snow lays on top of things. Generally speaking, start thinking in layers and have a look outside to see how different materials react with each other. In the end it all comes down to the question: "Will it blend?" grin

original snow, using "default" blending


fixed snow, using replace instead of mix


final snow with noise on splatmap lookup



Creating a nice terrain shader really is a neverending story. Almost as bad as creating "perfect" shadows. laugh
I'm not saying you NEED to implement any of this, just thought i'd share some of the stuff i did while working on my masterthesis in 2012/2013 laugh

[edit] Re-Reading this, i got pretty off-topic and this hasn't much to do with your original problem...oh well grin

[edit2] Also, to create a more "random" and less tile-ish look for your diffuse texture, you can use a cheap trick (if you aren't already doing that anyway). Fetch your texture with original scale/tilingfactor. Then fetch them a second time, this time without/less tiling/scaling. Now create your final diffuse output using this formula:
Code:
finalTexture = (texture * (scaledTexture*f+(1-f))) * (1+f)
Example: (normalTexture * (scaledTexture*0.75+0.25)) * 1.75



Hope some of this stuff helps laugh


Shade-C EVO Lite-C Shader Framework