Currently I am working on an implementation of Jerry Tessendorf’s algorithm for creating realistic looking ocean surfaces in XSI.

The following video shows some features of the ocean plugin. The mesh has a resolution of 128×128, larger resolutions are possible.
Video will start after being loaded (8,5MB), kindly wait a few seconds.
A weight map for emitting spray particles or modulating the shading where waves collide, can directly be retrieved from the algorithm:
While the plugin allows for natural looking ocean surfaces it does not handle obstacles or any sort of interactivity (as far as creating waves by artistic tools is concerned).
This is way I implemented Tessendorfs iWave algorithm in another plugin for XSI. It allows to paint in waves and obstacles by means of weightmaps. These can even be animated to create interesting effects or to have obstacles like boats moving through the sea and creating waves. What is more I optimized the algorithm and added SSE2 support for a nice performance gain (10k mesh plays back with 80fps on a 2,4 GHz core).
By plugging the first into the second plugin, you will be even able to use both approaches to create natural ocean surfaces and interaction (waves bouncing back from obstacles, etc.).
There will be no publically available version of this plugin in the near future. I am currently inspecting ways to move the code to ICE nodes.