An example of the sea surface simulation applied to the GitHub - osrf/buoy_sim: Simulation of wave energy harvesting buoy project.
There is still optimisation required in the physics calculations in order to run complex models, such as the wave buoy, that have many links and collisions each contributing to buoyancy and hydrodynamics. For the visuals two approaches have been investigated. The first uses dynamic vertices - recalculating the vertices, normals and tangents then copying them to the GPU each frame. This is not fast and does not scale well for tiling as each geometry instance must update its vertex buffers. It does make it easy to use PBS materials however. This is the approach used in the clip. The second approach updates texture maps for the displacements and the surface derivatives. The textures are updated then staged for upload to the GPU each frame. This is done once per frame regardless of how many tiles are loaded (each share the same material). This is much better for large scenes but requires custom shaders that apply the displacements and compute the TBN matrix in the vertex shader. To use PBS materials with this approach requires a custom Hlms and adopting shader pieces to override the PBS vertex and fragment shaders where needed. This is work in progress. The second approach scales better, and is amenable to moving the wave model to the GPU as well.
To optimise the physics requires a fast-read back of the wave height given a surface state and collection of model mesh points. Also for future work.