Thank you for acknowledging that this is a problem. As a result of deferred rendering, the methods for simply capturing a reflected environment are much more difficult than before. Second, no specular highlights really SUCK. You can, if you want to, use per-pixel lighting and forward shading to get that nice specularity, or custom-build a simple phong shader in the material and attach it via Material Parameter Collection to a light vector BP: no shadows, but it is incredibly fast to render.
A lot of what makes for great opaque rendering makes for very bad, very very bad water rendering, but there are ways to work around it and make something that looks nice, even if it’s not perfect:
1 - Get some specular highlights in there! Either use the forward shading path and per-pixel lighting, or if you want to save on expense, use a GGX or Phong specular model w/custom light vector for the highlights on the ocean waves. It won’t cut out with shadows, so be wary of that. It’s cheap, and looks very good.
2 - Forget the reflection and look at what else you have to work with: normals, colors, and opacity. Make sure the normals work, make the colors pop, and use your own fancy techniques for messing with the opacity. I used an Assassin’s Creed III document on water that suggested color and opacity ramps, and making the water less opaque based on the light source and normals can really sell the idea that it has subsurface scattering. Using scene depth and depth-based, or distance-to-surface techniques to ramp the water’s color and opacity can really do a lot to sell the fact that it’s water.
3 - Depth-based coloring on surfaces underneath the water. Super Mario Sunshine used vertex painting to color things under the water as being very, VERY cerulean, and half of the reason the water looked beautiful is actually because of that: the colors just popped. If you were on top of the water, you knew how everything was underwater because everything turned blue. Don’t underestimate this effect, lightmass is terrible for projecting translucent rendering, so if you want a blue ocean, you need to make it blue down there as well.
The goal is not to model the water perfectly, the goal is to get a result that looks beautiful. If there’s something in the real world that you can do easily in a game, great! Do that! If not, then try to strike the right balance between what is physically correct and what looks good. Here is a water shader I’m working on currently. It’s not the best, but at 194 instructions with color and opacity depth techniques, sky reflection, refraction, panning normals, a basic custom subsurface, and Phong specularity, I really can’t complain. It looks good: