Jump to content

Experimental SDK build: Water System improvements

Recommended Posts

We have released an experimental SDK build to demonstrate work in progress on Water System improvements. 
The main change is the precise control of waves spectrum. Unique characteristics of each wave system can be set independently through spectral parameters, wave direction and speed, and the shape factor of waves (as all the data is now available on the CPU side). You can create multiple waves and wave groups (from largest to smallest) with convenient access to every parameter and an ability to control them via API at run time (e.g. processing Weather Control packets from IOS, etc.).


If you want to check out the new Water System improvements: 

  1. Log in to the Developers Portal (developer.unigine.com) with your credentials.
  2. Go to the Downloads section and choose Experimental build for your SDK edition.
  3. Once the SDK ZIP-archive is downloaded, unpack its contents to any location on your computer.
  4. Open the SDK Browser. Go to the Products tab, click Add Installed, then browse to the location of the unpacked SDK and click Select Folder. The SDK will be added.
  5. Make this SDK default by clicking the Make Default button.
  6. Create a new project and open it in the UnigineEditor. 
  7. Add a Global Water object to the scene (presets for different Beaufort numbers are also available via Create -> Water -> Beaufort N).

We appreciate any feedback regarding the functionality, feature-completeness, ease of use of the new functionality - together we can make the future production version better!
The final version of current improvements shall be included in the upcoming 2.14 release, with possible UI and API changes. 

Further Water System upgrades to be expected in future releases shall include refactoring of the Global Water object with a set of performance optimizations and visual improvements, as well as implementation of local water, rivers and streams.

Link to comment

Known Issues

  • Repeating pattern on the water surface.
  • Smooth linear interpolation between Beaufort numbers is currently unavailable.
  • Noise on the water surface close to the horizon line.
  • The foam may look unnatural due to temporary foam rendering settings used in the experimental build.
Link to comment


I took a look at the water system and basically played around a bit with the parameters.

It looks promising, to achieve variety and complexity in terms of motion. As far as I understand, there are unlimited numbers of waves which are combined to a sea of waves.

Each wave has the parameters length, amplitude, direction, steepness and phase. The waves are layered on top of each other.

One issue I see straight away, that this might become something complex, which is barely controllable in an easy way, and probably hard to tweak as well. 
The interface, is not suitable for this task atm. So I wonder, how this could be improved. 

A suggestion would be, to display the waves as 2d curves (in the new 2d editor?), which can be manipulated in terms of the 5 parameters. At least it would be helpful to see the shape of the wave, which is created out of the 5 parameters, as a preview, maybe 2d as well? 

Or, maybe there is a way to find a representational way in the 3d viewport as well, that each wave is displayed when selected?

This would be a good task for a node-based approach (graphical), I guess? As you could group, control tweak easier.


Maybe it doesn't need that much control at all on the surface (just only if you want to dive into deep). A little bit like the clouds, if there are some very good, reality based presets, its much easier to go from there, rather to start from scratch.

Presets would be great to have. So that the switching between different ocean forms is easy. So people could tweak and share setting?

The settings at the moment look a bit unrealistic. Everything too big and to slow. Wondering, how to grain down.

The waves do loose its length very quickly and become like hills, bumps or mountains.

But if you zoom out, the overall impression is quite satisfying.


Different material presets would be great to have as well. 

The current water material gives me headaches (still) so many parameters.... (including wave animations... hmm) 


Some parameters are not self explaining straight away (the names are also a bit cryptic), but I guess that will be optimize.

Will there be a control about the wave speed per layer? (or is there some magic within the wind system?)


I think this is already something so much better in terms of motion, compared to the last version!

I am excited that you work on this topic! 


Thank you!!


Edited by werner.poetzelberger
Link to comment

Hi Werner,

Thanks for the feedback!

Yes, the API and UI will be completely changed, right now it's just a preview. Currently the wave speed is calculated relatively to gravity constant (we will think how to expose it so you can change it on your side).

3D wave displaying sound more or less doable (if you will hide some waves groups), 2D is highly unlikely.

How to submit a good bug report
FTP server for test scenes and user uploads:

Link to comment

Do you have plans to implement buoyancy for GlobalWater?

And is it possible to have intersection queries for GlobalWater (or even getting some local patch of water mesh)? That would be mandatory in order to implement custom buoyancy model based on your "wave system".... Even just to correctly display splash form falling object, contact point is required...

Edited by tower120
Link to comment

> Water intersections should already work right now. Have you tried to use them?

No I didn't. I'll try now. Why then there is no buoyancy for GlobalWater? Looks like WaterMesh physics simulation can handle sine waves already...


BTW. Clouds intersection queries works too? Just out of curiosity.

P.S. Looks like I convinced myself that all work done on GPU side with tesselation/geometry shaders, so there's just no data on CPU side...

Link to comment

Clouds intersections works too.

What do you mean by "buoyancy" and how it should work? Do you have any example?

If you can get water height in specified point you can do whatever logic you need on your side. Sometimes it will be enough to have only 3 points for height, sometimes more - you can implement the required logic on your side.

How to submit a good bug report
FTP server for test scenes and user uploads:

Link to comment

> What do you mean by "buoyancy" and how it should work? Do you have any example?

Like ObjectWaterMesh with water physics enabled.

Link to comment

Hey. What is the approach to achieve most realistic reflections on the water surface. 

Objects, but mainly environment and most important for us the sky with clouds.




Link to comment


That's highly unlikely due to the nature of object - it has infinity bounds and tessellation (that's not available in WaterMesh). We will think in the future how it can be improved, maybe some solution would be found.


The main purpose of the new Water is to change waves generation algorithms. The rest of the stuff should be the same as in previous implementation. For good reflections you can try to use new Planar Probe object, it should give you slightly better results than before.


How to submit a good bug report
FTP server for test scenes and user uploads:

Link to comment
  • 7 months later...
On 3/19/2021 at 2:05 PM, silent said:

Seamless transitions between different Beaufort levels (would be possible with the stable 2.14 release):


Hi @silent, is this already possible on the current release (, through the editor like you demonstrate and through scripting (by changing the beaufort property)?

I can't find the beaufort slider control though... the global water parameters that you show are a bit different from what i have...


Link to comment
  • Create New...