Here is a realtime water shader I have been working on using Substance Designer and Unreal Engine 4.
I'm using parallax mapping to fake the ground underneath the water and displacement for the waves. The caustics/refraction is created by using the wave height to warp the UVs of the sand texture underneath. The depth of the water is controlled by a simple gradient in this example, but any height map can be plugged in. The waves also taper to the shallows. Next challenge: seafoam! hahah