What is the best method/shader/feature for blending multiple textures?

What is considered the best method/shader/feature for blending multiple textures in Unity? I know you can effectively do this by default if working with a terrain, but what about if you have an imported textured model and you want to paint snow, dirt etc. on to it using other layered maps?
Many Thanks

You can do this pretty simply in a shader. Create however many texture slots you want to blend (say 4 textures, “_Splat0” - “_Splat3”), plus one additional control texture. Use the R,G,B and A channels of the control texture to weight the influence of the four splat textures.

So your shader function would look something like:

fixed4 splat_control = tex2D (_Control, IN.uv_Control);

fixed3 outputcol;
outputcol  = splat_control.r * tex2D (_Splat0, IN.uv_Splat0).rgb;
outputcol += splat_control.g * tex2D (_Splat1, IN.uv_Splat1).rgb;
outputcol += splat_control.b * tex2D (_Splat2, IN.uv_Splat2).rgb;
outputcol += splat_control.a * tex2D (_Splat3, IN.uv_Splat3).rgb;