✨ Feature Requests

  • Search existing ideas before submitting- Use support.secondlife.com for customer support issues- Keep posts on-topicThank you for your ideas!
Update SL's Flat Water Plane With "Gerstner Waves".
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
18
·
Rendering
llAvatarOnSitTarget reports incorrect agent on sit target after disconnect
This is a super old bug that I want to bring back to light, I could not find a canny on this. This bug alone, is responsible for several vehicle woes, often requiring vehicles to be re-rezzed. Old archived posts referencing this issue: https://forums-archive.secondlife.com/54/11/317331/1.html https://github.com/secondlife/jira-archive/issues/8363 Summary: In short, when an agent crashes and disconnects uncleanly, the sit target remains occupied. Other viewers will still show the (now gone) avatar on the seat, scripts who call llAvatarOnSitTarget or related functions will be told that the sit target is occupied by the avatar who got disconnected. What makes this particularly evil for scripts? This stale state survives script resets, since it's a simulator state issue. The stale sit target survives sim crossings Even worse, you can unlink and relink the link with the sit target, and the simulator will still report that the disconnected avatar is sitting on that sit target once you relink. If the disconnected avatar relogs to a different region, and teleports back to the region the vehicle is in, when they resit, the avatar will now occupy two sit targets. Side note: If a linden wants help reproducing this bug, I'm happy to help. It can be reproduced easily if we stress test and try to crash on purpose; by having a multi-avatar vehicle with several avatars running several scripts.. we can make ourselves crash onto sim corners.
10
·
tracked
Load More