I wanted to contribute an improvement I made. It’s rough, it’s simple, but it does the job. I added Blueprint logic that determines if you are underwater or not, and it toggles a post-processing effect which is quite simple. It’s a good starting point and someone can improve on it. The basic approach is you add a PostProcess component to the VAOcean_Simple_XXXX BP’s, and create these settings:

Note, all you edit are the scene color components. Feel free to add a bunch of other stuff too. I got some of this off of a YouTube video. But hooking these up to volumes are a pain and quite tedious, so I wanted an automatic global approach. Unfortunately, creating this component makes it globally on all the time in the editor and in the game initially. But there is an easy fix for that. You need to simply turn it off in the Construction Script.
Now the major work was to hook up the logic inside the Blueprint. The approach is really just a simple bounds check of the camera compared to the water plane – with the exception that all we’re doing is checking if the camera is inside the bounds and below it. This won’t work if you have caves under your lakes or oceans… but the logic can be improved, but it handles cases where camera is underwater and character is not, vice versa, etc… Feels right.

And here are some below and above water screenshots.


