Well if the surrounding geometry is static and the scene is large enough, you could build a cubemap or an envmap of it, and then sample it while doing reflection of your ocean waves and floating objects (and apply fresnel as needed) which would be a pretty good approximation I think. Not sure how expensive that would be, how often does the geometry around the water change?
Wouldn't it look "wrong" where the objects intersects the water, such as floating buoys and boats. I read about some techniques doing parallax compensation to improve the quality of cube maps, not sure if that can be used here?
Ah, sorry, I misread that you wanted the dynamic objects to reflect their surroundings, not the water reflecting the dynamic objects. Yes, it would look wrong. If the dynamic objects are small enough and not too many of them, perhaps an impostor based approach could work (by computing the cubemap and, for each frame, superimposing impostors of each dynamic object at the right angle, or some other method).
Any trick used is probably going to rely on details like how big the objects are relative to the rest of the scene or some other factor, though.
Actually, I think he did mean that the water should reflect the dynamic objects. The problem with a pre-baked cubemap is that it doesn't really achieve the "mirror" effect that he's after; most obviously the dynamic objects won't move in the reflection, and equally importantly, since a cubemap takes into account the angle of reflection but not the position from which the reflection ray originates, the reflections won't be in the correct spot.
EDIT: What I'm describing below is probably what the OP meant by "planar reflections" so it probably doesn't add anything new, so feel free to skip to the next edit
The most straightforward approach is to use a dynamic cubemap calculated underwater and directly below the player at the same distance from the water as the player (i.e. the cubemap's position is the player's position reflected over the water). That way, the angle from the cubemap will match the player's viewing angle when reflected by the water (this may not be totally intuitive, but if you draw the rays on paper it becomes very obvious).
Obviously in order to be completely accurate, this approach assumes that the water is a perfectly flat surface; the nice thing is that it still looks very good on mostly flat surfaces (which water typically is) for the same reason that any kind of environment map typically looks good even if it's not calculated from exactly the right place.
EDIT: If the above method yields too many artefacts as you say, I suggest potentially using an additional cube map, this one being calculated at precisely at the player's location. You can switch to or interpolate with this map as the water's normal vector gets farther from the planar vector. These reflections won't be accurate (in terms of position), but the artefacts will likely be less distracting, since you are at least guaranteed that the second cube map won't contain anything that the player can't see directly.
Edited by cowsarenotevil, 09 September 2013 - 02:06 AM.