Water depth - depth from surface not from camera?

Most water depth fade implementations use eye depth, but this isn’t quite right, and breaks when you change direction. How do I do it using distance to surface?

Probably a crappy solution would be to render the water and the terrain below it from a top down camera. Store the difference in their depths in a texture then project those pixels to your current camera view and use those values to blend. I guess kinda like a shadow map.

This might benefit you in your hunt for the correct distance.