to adjust the transparency try something like this fake fresnel term i devised:
put this in your vertex shader output struct:
float4 fresnel: COLOR0;
put this in the vertex shader:
float3 PositionWorld = mul(Pos, matWorld);
float dist=distance(PositionWorld, vecViewPos);
if (dist<=300)
{
Out.fresnel.xyzw=dist*0.005;
}
if (dist>300)
{
Out.fresnel.xyzw=1.0;
}
put this in the pixel shader input
float4 fresnel:COLOR0
then in the pixel shader at the end:
float4 final=reflection;
float3 watercolor=(0.58,0.65,0.63); //adjust this change water coloring
final.rgb*=watercolor;
final.w=(1*fresnel)*0.8;
this adjusts transparency based on view distance-but your water terrain needs a lot of faces. You said yours did so it should work. There are better ways to do this, like a real fresnel term, but this works for my purposes.
also, in the technique part of the fx file put these lines before you compile the shaders:
zwriteenable=false;
zenable=true;
alphablendenable=true;