Update SL's Flat Water Plane With "Gerstner Waves".
SarahKB7 Koskinen
In Second Life, the water is a single global, infinite plane, mostly fixed at a 20 metre altitude in the Mainland and Linden Homes regions.
Currently, to simulate rolling waves, scripted wave shaped objects made from prims, sculpts or meshes are physically moved across the flat water plane. And it looks unconvincing, fake and outdated.
After 23 years, this badly needs updating and replaced with something much more realistic. The most effective way to simulate realistic rolling waves for Second Life is using "Gerstner Waves".
Gerstner Waves are easier to implement, cheaper to compute, and better for stylized or simple water than other more "expensive" methods such as Fast Fourier Transform (FFT), already used in AAA games and movies.
Adding Gerstner Waves would require updating the OpenGL Shading Language shaders in the viewer code to replace the flat-plane mathematics with Gerstner Wave equations. (See: https://en.wikipedia.org/wiki/Trochoidal_wave )
However, Gerstner Waves do have a downside, their waves can appear repetitive and predictable looking when studied closely.
The Gerstner Waves offset vertices both vertically and horizontally. This creates the characteristic sharp crests and broad troughs seen in real oceans.
Real waves don't just bob up and down; they break and flatten as they hit the beach and sand. To do this without scripts:
Depth Buffers: Use the engine's depth buffer to calculate the distance between the water surface and the terrain.
Vertex Modification: Near the shore (where water depth is low), the shader can automatically reduce the wave amplitude and increase the texture "foam" opacity.
PBR Materials: Utilise the new PBR (Physically Based Rendering) extensions in Second Life to ensure the light reflects accurately off those new wave angles.
Existing boat floatation and buoyancy should be maintained, as well as the ability for an avatar to swim or dive underwater in newly updated seas too. Sunlight and surface sounds should diminish accordingly to avatar's depth underwater.
Multiple Gerstner Waves interacting with each other in SL regions would create random and chaotic waves that closely resemble those in the real world. Hopefully, multiple Gerstner Wave regions connected to each other would blend together seamlessly at region boundaries without visible gaps or troughs.
Updated seas should offer a variety of "Sea State" conditions across the entire region in the region Land settings too. There are 10 internationally recognised Sea States:
Sea State 0 - Calm (glassy) - Wave Height: 0 metres (0 ft)
Sea State 1 - Calm (rippled) - Wave Height: 0 to 0.1 metres (0.0 to 3.9 in)
Sea State 2 - Smooth (wavelets) - Wave Height: 0.1 to 0.5 metres (3.9 in to 1 ft 7.7 in)
Sea State 3 - Slight - Wave Height: 0.5 to 1.25 metres (1 ft 8 in to 4 ft 1 in)
Sea State 4 - Moderate - Wave Height: 1.25 to 2.5 metres (4 ft 1 in to 8 ft 2 in)
Sea State 5 - Rough - Wave Height: 2.5 to 4 metres (8 ft 2 in to 13 ft 1 in)
Sea State 6 - Very Rough - Wave Height: 4 to 6 metres (13 to 20 ft)
Sea State 7 - High - Wave Height: 6 to 9 metres (20 to 30 ft)
Sea State 8 - Very High - Wave Height: 9 to 14 metres (30 to 46 ft)
Sea State 9 - Phenomenal - Wave Height: Over 14 metres (46 ft)
Example video: https://www.youtube.com/watch?v=9S-Glo806TY
Log In
SarahKB7 Koskinen
Please also consider upvoting this similar request: https://feedback.secondlife.com/feature-requests/p/waves-in-second-life-seas
Bavid Dailey
there are international standards for seas state? Who decides ? (genuine question)
SarahKB7 Koskinen
Bavid Dailey - The World Meteorological Organization (WMO) sets Sea State standards. See: https://en.wikipedia.org/wiki/Sea_state
Rowan Amore
How would this impact game performance? Region crossings?