Fact of the matter is that for rendering it is better to assign material to vertex then to assign to square.
When you render a triangle, render it several times with different textures (fixed pipeline). Or render it once with several textures (HLSL pixel shader). The outcome is the same.
Givven a quad of Grass (G) and Rock( R ) Snow(S) in the following formation:
The vertex in the middle should have 0.75 grass , 0.25 rock, and no snow.
Use the above mentioned "algorithm" to calculate the alpha value for that vertex and texture
Here is an example of the result. Although terrain tiles are square, you cannot see them (besides the fact that I used a very repetitive texture here).