You mean something like this example by Attila Schroeder? [See related discussion here.]
I used his program to create a simpler version which is incorporated in a module that I use for flight simulations, like this or this.
For best performance, I would suggest using WebGPU. However, if you are determined to use WebGL, I have a WebGL version of the above - which is an updated version of the jbouny program.
In the images that you posted above, the bottom example doesn’t need a special wave generator, but merely a reflective plane.