[Community Project] WIP Weather & Ocean Water Shader

I know that there is a AO being done. But I don’t know how you can access it . it is available as a buffer. It would need to be inverted and have its contrast adjusted but in theory should provide a perfect masking solution for object penetrating the water. the other solution would be to do the math and calculate it yourself to give you more control.

I did find this. But honestly it is way over my head.

Not sure if that would work though you are prolly going to need a solution that avoids self occlusion and only calculates for other objects.

Also note that this is not practical for the shore line and that the depth based approach is prolly more effective there.

Yeah I think that’s too far over my head as well for now, but I can see how that system would help. I was also thinking about recreating the mesh (which I am doing anyways) to use a separate material near the shoreline, only difficulty is not everyone’s shoreline is going to be the same shape. I’m also looking into constructing multiple smaller panels through the construction script, just not sure how difficult it would be to construct them so they follow the landscape (or whether that would even work in the first place :smiley: - never mind the performance implications). The material is in WSC so multiple panels will line up properly and can overlap, I’m just not sure if multiple overlapping sections are possible with the translucency issues noted previously.

Anyways thanks for the info, will test out these ideas this week.

Ok So it looks like the AO can be pulled in using a SceneTexture Node. You can then go into the list and select the AO buffer.

Not sure if this means that you just also have to generate a foam pass and then use it to mask the 2 passes after the fact or what. That part is a little beyond me. I know that is a offline rendering world we would do it that way and put it together in post.

I really like this but when will Buoyancy be added to it?


Please can you add some water reac/impact flash at HeroTpp body character. Thanks. :slight_smile:

Jesus Christ, this is the most intimidating material set I have ever seen. My mind melts just looking at it.

I will be adding buoyancy very soon, along with a couple other new features :wink:

This is another feature I have been working on, creating particle effects for splashes (as well as rain), I am working out the details but this should also be in the next release with buoyancy.

Ha! lol…Yeah I know it is fairly complex, even with everything placed into parameters & functions it is still a large material (over 600 instructions). If your mind isn’t melting enough from that, have a look at the math involved (this is for calculating a single Gerstner wave) :cool:



I just wanted to say thank you DotCam for all the hard work and making this project a reality!! It just looks sick and cant wait for your next version!! Best of luck with the next release!

Any ETA on Buoyancy?

EDIT: Had to edit my post to ask another question.

How would I go about syncing multiple Water planes together in the world composition tools to look like they are one mesh?

Just curious,


Nice work, the weather really makes it come alive. Particularly the lightning! Also love the foam off the rocks. As I posted on another ocean shader post, would love to see some ocean spray here and there… Still awesome without it though!

Thanks… for this free project you made… i hope this will add to UE4 Modes at Landscape :slight_smile: thanks for your answer… Good luck

Just wanted to say thank you for the awesome work. I can’t wait to see what you have planed for the next release.

If you feel this is a bug please report this on the Answer Hub: and include a link back to this post. That is also where you would want to post a feature request.


Absolutely amazing work, when everything is tweaked right you can create some truely fierce storms. I wish I could help but most of this is beyond me for the moment, can’t wait to see how this develops.

Gah! I just noticed your post now… Ugh… sorry HeadClot.

But some good news!! Buoyancy is almost ready, I found I was calculating the wave incorrectly from the OceanManager BP, got that fixed and I can get something to float a bit finally. It still needs a bit more work but it should be any day now!

I am creating a BuoyantMesh blueprint base classes that will allow you to set any static mesh you want, and it will calculate the mass and center of mass offset of the input mesh. It will be adjustable as well, but by default it will create 4 debug spheres around the COM of the object that get used for applying gravity or buoyant forces to each sphere so it can rock back and forth with the waves.

Regarding multiple water planes as it stands right now, you can add a second Ocean BP right next to (or even overlapping) so long as they have the same settings. But that is the least performant way of doing this, I am planning to add a Mesh Spawner in the Construction script to create multiple meshes in a grid format. The material itself is in WSC so there shouldn’t be any problems getting them to line up correctly, you can even overlap them if you need to.

Also I have been working on getting an LOD system functional to avoid the performance issues I just noted, I will have some more info on this later, but if you have any ideas you’d like to pass my way I would be all ears!

Thanks HeadClot! :slight_smile:

Thanks Steve, I have ocean spray on my list, but it’s a long list :smiley:

This actually was a bug worth mentioning, only problem is I can’t get it to happen again. The issue ended up being that the Slider value range for one variable got set to 0 when it should have been 10 after I migrated out the content from my master project. Somehow this value got changed in the process, it ended up forcing the value to 0 when I tried to adjust the value, freezing the ocean waves in place.

Anyways if I can get it to happen again I will be reporting it on AnswerHub. :slight_smile:

Thanks guys! new version should be out very soon. :slight_smile:

I love you DotCam. Superb work.

“Thanks guys! new version should be out very soon. :)”

Cant wait!!! Thx DotCam!!!

DotCam, I sent you the code to my BuoyancyMovementComponent. It allows you to add buoyancy to any BP without a base BP. It’s C++ though since we cannot create MovementComponents in BP yet.

Handkor! Good to see you bud!

Responded to your PM as well, but I will give this a try over the weekend and let you know how it goes, thank you very much for doing this! A BP only solution to this is proving to be exceedingly difficult, I wanted to try so it would be accessible to all, but the performance hit is too much.

Just an FYI for everyone reading this, this project would not have been possible without Handkor. For anyone wanting to know more about how this shader works I highly recommend watching his tutorials and checking out his thread on the topic, he explains in detail how and why it works, it was a huge help for me to understand it all. You can find more info on this here:

Thanks again Handkor! :slight_smile: