Afaik, there's no way of actually doing what you're asking with in realtime rendering. We would have to ray trace every pixel or have some other very water-specific buffer to attenuate the light. I think this is out of scope. If you disagree, reach out to me.