✨ 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
Bring back the long draw distance project from 2005-ish
Not necessarily in the same form. I don't think you want to draw all the skyboxes, that's going to look like trash. There are two ways of doing this, I think, which don't expose skyboxes. One is a full solution that takes a long time, like multiple quarters to a year. The other, you could probably launch in less than a quarter with not too much effort, and possibly 100% client-side with assets you already have. (Yes, really.) What for? To drive interest, naturally. Perhaps to recapture interest of people who left long ago. To spur more exploration, which then causes random encounters, gives people Something To Do (biggest problem w/ user retention in SL), etc. This kind of change could get you mentioned in articles on gaming publications. It will definitely get you mentioned on social media. I notice that when I fly around very quickly, I can see terrain and water from quite a long distance, like a kilometer or so. There's no objects, of course... _But it isn't bad!_ I like it! Unfortunately, it goes away pretty quickly, and I'm back to smog alert-level draw distance. To me, the really good, fully-complete solution would be this: Select all objects in the space between terrain and some reasonable altitude, like terrain Z+50 or terrain Z+100. This includes linked objects, so if you're selecting everything within terrain Z+50 and part of a link set is poking up to 55 meters above terrain, you get the whole link set. Bake that into something like a .kml every so often (daily/weekly/etc), Google Earth-style. Apply reasonable LOD. Beyond draw distance, fall back on that .kml-like mechanism. It'll be a little outdated sometimes, but so what. All we see now is smog! Obvious consequence of this: skyboxes don't show up. :) That's the full-blown solution that takes months to engineer, but it's a solved problem in computer graphics, and has been for well over ten years. I can look at Google Maps on a $200 Chromebook, and see that .kml stuff (sides of buildings, etc) just fine. Now, you're thinking, that is one heck of a project. Is there a quick, easy win that gets us part of the way there, right quick fast in a hurry? Like, something that could be banged out in a matter of _weeks?_ Yes! Here is what I propose, to get the ball rolling, measure user feedback, etc.: Let the user specify that terrain/water can be loaded past the draw distance. How far would depend on empirical testing. Maybe the answer is 1KM. Maybe it's 5KM. A terrain mesh is a 256x256 image, so we're not talking about a huge bandwidth impact. (You already stream the map to the viewer, so it's not like this is some undiscovered territory.) The upper limit is, more or less, "what can we draw on a high-end graphics card without turning it into a slide show?" You could give users the option to overlay the terrain mesh with the overhead map tiles you're already sending. This would make the terrain look odd here and there, as people sometimes put "sprites" way up in the sky: ads, drawings of hearts, airport/road hub information, etc. Still worth trying. With this, you don't see skyboxes either. Win-win. Now, what about sims that aren't edge-connected, like the private estates? What if you don't want to show one private estate from another, or from the mainland? I implemented an A-star algorithm that would pathfind its way across the grid as it existed in summer 2003. It ran in LSL back when that was a 16KB affair, and it ran fast even then. It even had the ability to back its way out of blind alleys! The algorithm that tells you whether you can see a terrain mesh from where you are, given arbitrarily long draw distance, is just that, A-star or something like it, written in the 1960s, and capable of running on 1960s hardware. This is not remotely difficult, or CPU-intensive.
2
·
Rendering
·
tracked
Load More