Seamless, endless, and performant custom water using skinned meshes and PBR

only issue would be that only the built in water has SSR, wish we will get an option in the future to have SSR for custom materials aswell

if you import it with avatar evolution, the limit is 50k

Is the moving water just one part using mesh deformation?? and is the movement done locally or on the server side

1 Like

nice but it looks plastic and is a clear example that roblox needs reflections

This is great! Extremely excited for the game already, already a huge fan of wild west

How would I avoid issues like this between planes? the bones controlling the edges are synced, but this still happens.

1 Like

I “fixed” this literally by putting a bone on every vertex.

Wow! It’s just soo cool what you are able to do with PBR and skinned meshing. Roblox is really making its engine more powerful for us developers. Great work!

1 Like

Very nice work, I always like seeing amazing examples of work, and I can tell your team put a lot of effort into this.

I’m not doing anything specifically, but it would be AWESOME to just have lol. Maybe do a few showcases with.

So you used an armature to animate the water? Sounds super tedious, but how? I tried using the ocean modifier in blender and put it into an animation, it didn’t have bones though so I don’t think it can be used in roblox. Looks great though!

WOW! This is the definition of innovation. Skinned bone meshes are amazing, and I hope your game is successful. Good luck!

1 Like

Maybe this resource I made could help everyone here wondering how to make this.

@Eth_r , @Alphirex , @TheOriginalGMW , @Sir_Highness , @EtiTheSpirit , you guys were wondering how to make this, hopefully this post helped!


Thank you sooo much, I’ll check this out ASAP tomorrow morning.

1 Like

Hi @tyridge77.

I am trying to implement a system like this and I have a few questions:

  • How do you get 2 ms update time?
    When using around 4000 bones, and updating them every frame, I get around 20 ms update times. This is using three gerstner waves.
    Do you have some magic formula that speeds this up?

  • How does your fast height lookup work?

What exactly do you do with the bones nearest to the camera? Do you use trigonometry to calculate the height from a triangle?
What if the server doesn’t see the bones? Does it use a different method?

Keep up the amazing work!
I’m excited to see this game when it’s playable.


Ty, huge fan of ur work. How many bones did u set the plane to be so u could animate it and make it seamless?

1 Like

That’s absolutely amazing! It’s a real shame that it’s not open source, but oh well. Looks amazing anyway!


Nice! I’ve always wanted an ocean like that in roblox, Guess i just have to hire someone once my game gets popular.

This is a really cool concept for what’s gonna be a really cool game! I really like the effect that the mesh deformation gives. Really good!

Keep up the good work! :slight_smile:

1 Like

Could it be possible to get a tutorial for how you made this endless? Ive been struggling with my own. Ive rewrote streaming enabled, and redid my code countless times but keep falling upon the same issue. When loading in a bone plane, the render label (in microprofiler) jumps and causes the other planes not to update for a split second causing issues.
(Ive made it so that a queue is made for all the waves that need to be loaded into the workspace (pulled from replicated storage). And I one at a time in over each frame (ive even given buffer room)

Anyway to circumvent the long render times?