Nimm mal als Normale testweise float3(0.f,1.f,0.f) und poste nen shot wo man ne einzelne Reflektion deutlich sehen kann.
Abgesehen davon kannst, für den Fall dass du deine wasser plane nicht rotierst, deine tangentspace normalmap direkt als Normale vewenden:
normal = tex2D(NormalMap,UV).rbg*2.f-1.f; //we are not in tangentspace but in objectspace, thats why we use rbg instead of rgb
Unter Umständen musst du jetzt noch die xz Werte austauschen oder invertieren damit die normal in die richtige Richtung zeigen, also z.B.:
normal.xz=normal.zx;
normal.x*=-1;
...
Solltest du die Wasserfläche um den pan winkel rotieren wollen, musst du den Spaß dann noch mit der matWorld multiplizieren.