Efficiently creating waves

I’ve been experimenting with creating displacement waves to simulate rough sea conditions, using Gerstner waves… I can get some really nice effects in small samples, but I’m struggling to see how I can apply this to a large seascape, due to the requirement to have displaceable vectors at a resolution suitable for capturing the wave forms.

As I am working with a procedural approach it is slightly more awkward still. I was using a single plane for the water and increasing the tessellation in the shader, but this is capped at a factor of 60 (much too small) and I was also wondering if there is a more efficient way I can change my tessellation based on the player screen area. I could dynamically create a mesh as part of my procedural terrain creation, but what are the implications of carrying a very large poly count (imagine a sea surrounding an island 5x8 km). It seems there should be a better way of doing this.

Some new ideas would be welcome!

I think the best way to do this is grid projection. I shared an example here. Maybe you’d like to check it out.

1 Like

Thanks, that looks very interesting - so you are creating a uniform meshed plane, then moving it as the player moves the camera to keep their screen filled with a hi-res water plane as required?

Yes, kind of. You can find detailed information at this link.

1 Like

Really interesting, thanks.

1 Like