[Community Project] WIP Weather & Ocean Water Shader

If anyone here is familiar with Hankor’s mathematical ocean tutorial, and was able to replicate it successfully, I could use some help finding what’s causing this issue: 52d03675b67b0dba1e065e6fb64a8f6f3df0e0cc.jpeg


Have anyone tested this in the 4.7 perview?

Hey there, sorry for the delay, had a huge ice storm knock out power for 2 days. :frowning:

It is hard to tell from the images what is causing that look, if you could zip up a copy of the project and upload it to DropBox or other similar site and then PM me the link I will certainly take a look for you! Or if you could PM me some more images showing the Gerstner formula & Cluster I can try and figure it out for you. It’s most likely an issue with the Gerstner formula itself, or the values you have set for the WaveLength/Amplitude/Steepness values in the Gerstner Cluster.

Hey Frequia,

Yes I have and can report that 4.7 Preview 1 does not work due to an engine problem preventing MaterialParameterCollections from working. Good news is that 4.7 Preview 2 has this fixed and it will work perfectly. I managed to download it yesterday before it was pulled from the launcher due to a major issue that needs to be fixed before release. It should be up on the launcher within the next couple of days, so wait for that before upgrading if you have the Ocean in your project.

EDIT: 4.7 Preview #2 was just released! Download it from the launcher and you can use this material in 4.7 :slight_smile:

Hey DotCam, do you have any bouyancy implementation time in mind? its just for record, Im interested in what youre doing

Keep up the good work

IT WORKS! :smiley: I just got Buoyancy working!!! Woohoo!!! :cool:

I need to do a bit more polishing and test it out with a few different objects with different shapes, but it actually works! Man I am so happy right now. I will try to model a simple boat and some other shapes for you guys to play around with.

Expect a new release WITH buoyancy in a couple of days!

Thank you so much Handkor in case you read this, I had to brush up on my C++ skills for a couple of weeks and learn the API (and coding conventions), but I finally figured it all out. Your BuoyancyComponent works great! I plan on modifying it a bit to automatically detect the shape of the object for the test points, with adjustable COM and weight of the object to increase or decrease the displacement of the object (for example the draft on a ship).

And thank you everyone for your patience on this, sorry it has taken so long… I’m finally able to work on this again so stay tuned! :slight_smile:

Looking forward to that! :smiley: This is the most complex watersystem I`ve ever seen in any game-engine.
EDIT: Will you add underwater-effects as well?

:o Thank you for saying that, but it is nowhere near as complete as it needs to be, it will get much more complex before I’m happy with it. The new (upcoming) release will be Alpha ver 0.2 since it will be a major update, but still lots more work to do to get to version 1.0! I have had to move Buoyancy (and a few other things) to code, Buoyancy had to be done that way, but I have also moved quite a bit of the Tick code from the blueprints over to code as well. So far it is performing really well! Adding in buoyancy has not had any impact on performance! You still control all of the features from a blueprint, but the logic has been moved out.

As far as underwater effects go, I have a partial solution that is already implemented and will be released in the coming days as well as buoyancy. These include swimming, underwater camera effects, water on the camera lens effects, some bubble particles, etc. I need to add a couple more pieces, but it should be a great starting point for expanding upon to suit your game’s needs. Now that the major issues are dealt with, stuff like this will get updates much quicker.

Ahh man I am just so pumped!!! Spent weeks on buoyancy getting nowhere and now suddenly it just works… BOOM!! haha love it :smiley:

Great to hear this DotCam, but I have a suggestion for you, I think you should release separated demo projects, one for the water like now, and other where you will add the swim capabilities.

I say this because its probable that some people doesnt want to have a swimable water

Just a suggestion!

Any progress with that update? :slight_smile:

Thanks for pointing this out, I meant to explain this a bit better. I am actually planning to add in multiple BP Wave Controllers each with a optional components, such as:

  • The original version for those who need an ocean in the distance and really don’t care for anything else
  • The original version + Underwater Effects
  • The original version + Buoyancy
  • The original version + Buoyancy + UnderWater effects.

On top of all of that, I will be adding in a 8 wave solution for all of the above, along with the 16 wave version for all above. 8 wave Sets is really all you need for the open ocean, and saves a lot of processing. Also the Original Version mentioned has had some other updates, more on that soon.

I have been planning this for a bit now, the use cases for something like this are so different that creating a single monolithic blueprint is not feasible, so there will be a few to choose from.

There has been progress, but it has only been a day…

I will have this out to you guys early this coming week! :smiley:

I really appreciate that you’re willing to help. Here’s the link to my project: Dropbox - Error Thanks for the help, and great job on the buoyancy!

Found out that it had the kinda underwater effect I was looking for :slight_smile: Amazing work so far DotCam.


It does render the ocean on each side of the mesh, but it does not have the PostProcess effects for underwater in that version, it should look like you are underwater from that view (ie have a blurred depth of field that gets stronger for farther away objects, along with color grading & a blueish color to make it look like water). Sort of like this (this is an old image, it has been modified since this image was captured):

Hmmm… I have a question for you though, your ocean appears to not have any specularity/reflections at all. Did you change your settings to make it look that way or is t not working correctly? Here is an image showing what it looks like by default:

You do need to have a movable SkyLight in your scene to enable that look, but if that is how you want it to look then it’s no problem, just curious. :slight_smile:

Yes, I changed the settings to make it look like that and its working just fine :slight_smile: Im going for a toonish-water look, so I dont need so much advanced postprocessing.

Yes this is something I wanted to add in the future too. Let the user enter custom point or lets them choose from a set of predefined hulls (Cube, sphere, cylindre, boat,…) where the user can just choose point density.

Really awesome cannot wait for this!

Is it possible to get it looking as good as cryengines dx11 water?

Or would that be a job for waveworks? Not sure if waveworks will only work on nvidia for a long time I wish your material could look this beautiful

Just a quick video update showing the buoyancy is almost working! There are some obvious issues with it, so it’s not quite ready for release. Mostly it is a matter of tweaking values to get it operating as expected, so nothing major (I hope!), and I will update you guys again soon.

Yeah it would make things so much simpler and is something I will be looking into, but right I have bigger problems to deal with… :smiley:

Did you do anything special inside the graph on the buoy and/or change the values (such as Buoyancy, test point volume radius or directional damping)? As you can see from the video it is acting pretty strange. If I turn off “Simulate Physics” for the Buoy it bobs up and down perfectly with the waves (just no side to side angle rotation). I may have a bug somewhere in the code, will take a look again to see what’s up. Thanks for any insight on this!

Will the buoyancy work on the blue character as well as custom characters too? Im going to try the system in 4.7.0 preview 3 by the way :slight_smile:

If physics is off I set actor location to the water surface, that is intended behavior to allow none physical object to be able to snap to the water’s surface.

In the video it almost looks like your damping values are too high along the z-axis. The directional damping is like normal linear damping but it allows an object to have different values along each axis. This was added to let a boat keeps its momentum going forward but have heavy drag going sideways. There might be a bug where the damping is applied even when a point is out of the water though.

Buyoancy you can leave to 1.
Test point volume is meant to place a sphere around each testpoint so that when a point is near water it offers a percentage buoyancy of it’s spherical volume instead of just a black and white over/under water. It allows the force to be applied more gradually as a point crosses the water level.