This browser ocean bends waves around rocks, and labels the benchmark properly
Ultra Water exposes its rendering costs and unfinished physics, making the island useful beyond a pretty demo.

The rocks interrupt the waves in Ultra Water, and the performance table interrupts the temptation to shout “300 fps!” over everything. Open ocean reaches about 303 fps in the maker’s desktop benchmark. Breakers reach about 202. Same ocean project, different workload. The shore has overhead, which is a very familiar vacation expense.
This is a real-time ocean renderer for three.js, running through WebGL2. Four wave scales combine surface detail with larger movement. Near shore, a travel-time map helps waves slow and bend around the terrain. The resulting beach reacts to where the land actually sits, instead of displaying a repeating water texture that politely ignores it.
The README puts the desktop figures on an RTX 3060, Chrome with ANGLE/D3D11, four-sample antialiasing and a 1954-by-1692 render size. Those conditions belong beside the result. Moving the number to a different graphics card or a phone would require a fresh measurement, however cooperative the screenshot looks.
The benchmark renders 300 frames and waits for GPU completion. The live scene also has an uncapped mode, but the display still refreshes at its own rate. A high internal counter does not make a monitor show hundreds of distinct frames it cannot refresh. The distinction is useful whenever an attractive demo starts doing double duty as a performance claim.
The maker also corrects an earlier measurement method: “The fence-based benchmark is the one to trust.” Previous figures used a synchronization approach the author found unreliable under ANGLE. Keeping that correction in the documentation makes the current table more informative than a lone speed badge. It also gives anyone reproducing the result a concrete method to inspect.
For a developer, the per-pass breakdown is where the beach becomes useful. The project separates water rendering from opaque geometry, postprocessing and other work. A scene that spends too long on the water needs a different change from one spending too long on everything behind it. Turning down the whole picture first can hide the expensive part instead of identifying it.
The MIT license makes the renderer available for reuse, subject to its license and third-party notices. That leaves room to learn from the pieces as well as the complete island. A small experiment could hold the camera and resolution fixed, change one effect, and compare frame time. The useful output would be the measured difference, rather than another promise that browsers can do graphics.
The current limits keep the spectacle in proportion. Breaking waves are heightfields that lean without curling into tubes, and floating objects do not collide with one another. Anyone planning a surfing simulation still has work ahead. The attractive water already offers plenty to study before asking it to carry an entire game.
The waves still cannot form tubes.