Thanks to Creikey for helping me with this.
For people who are wondering:
Ocean shader is optimized by using world coordinates and following the player.
The ocean shader does not compute buoyancy but another script attached to the MeshInstance does.
I did not make all the material but merely edited it to fit my preferences.
Song: Static in the Attic by Chris Standring