Ocean Seasons - Another Ocean plugin

After some time playing with the several oceans available, the community one, the VaOcean plugin abandoned ages ago, the available oceans in the MP and the water solutions aswel (yes, I bought all of them), I realized none attend what I need in terms of performance and visual/features. I mean, from all the community one is the most beautiful and with more features, but making all necessary changes for my project is a nightmare. So, after expending that much, one thing that I learned as the most important things:

Feature / Roadmap list:

  • FFT - the best shapes, fast simulation since it can be achieved out of GPU if you want -** done**
  • Underwater fog, distortion, wet lens, refraction, caustics, god rays following caustics, SSS - done
  • Buoyancy - done
  • Masking objects inside water (any amount of them) - done
  • Masking objects floating, like bottom of boats or anything else - done
  • shoreline - done
  • dynamic wetness at shore - done
  • water physics - in progress
  • wakes for objects with surface disturbance (ripples and trails) based on volume x mass - in progress
  • splashes when objects collides with surface - in progress
  • foam where it should exist - foam on waves - done
  • streaks - in progress
  • crashing waves at shore, following the coast - in progress
  • waves influence by terrain and winds, being winds changed after terrain obstacles - in progress
  • waves pointing to an attractor (like all waves converging to an island shore) - in progress
  • Ocean visible on editor - done
  • Infinite Ocean (you can turn-off and apply on a plane area). - done
  • feature switches (including ray tracing features only) - in progress
  • Multiplayer support (you can shoot a distant enemy on top of a wave and you will surely hit !) - paused
  • Huge waves with tubes, allowing water sport games! - paused
  • presets for color based on world locations - paused
  • C++ plugin that is fully supported by blueprint only projects - in progress
  • up to now, there is no blueprint only version in development, but we are always with an eye opened for this, in case we figure a good way on doing it

I have grabbed all papers available from the Internet, about FFT implementations, and as that math level Im not working since I have graduated as Engineer (which I exchanged by Computer Science later), I will have to grab some old books and do a bit of update on my memory, studying that part.

It will be a plugin to get the benefit on doing the simulation on CPU, but it can be exchanged for GPU as a setting, so a game implemented can benefit from high core count or higher GPU models. It will be available for all platforms, but I guess mobile is not feasible… it will be a secondary study after the product is ready.

Are anyone interested into this and that thinks any feature is missing?

ETA is March/April 2019, likely to be released after UE 4.23.

I would be interested :slight_smile:

Just give me an infinite ocean plane as an option. :slight_smile:

Added. You will be able to switch between the two modes: Infinite or not, when not infinite you will be able to scale the plane yourself.

I would definitely be interested in an ocean that has waves that can crash on the shore

I will place some rock cliffs and some rocks near shore. For the effect being seen on cliffs the sea state needs to be very turbulent.

waves_crush_cliff_highs.jpg

I will be satisfied with the 1st pic already, but I have a project that will greatly benefit from the effect on the cliffs.

So far, I managed to bring back to life VaOceanPlugin from here: https://forums.unrealengine.com/deve…plugin-vaocean

Progress and current look here:

I will start to work from this version which works only in UE 4.16 and make it work on UE 4.17 where the global shaders have suffered changes. Once this is done I will work on the following features:

  • review the current Tessendorf implementation to adequate it to the latest papers
  • add infinite ocean system
  • rework the ocean material to improve Color, SSS, reflections, Foam on wave crests, Foam on shore
  • underwater fog, distortion and wet lens as postprocess

Once the steps above are done we can compare the performance with WIP Community Ocean (since it also has those features) and if it really gets better performance, then I will change this thread to WIP and will implement the remaining features on 1st post. If the performance is not OK then it will go FREE, meaning I will check with EvoPulseGaming to decide which of the two implementations (his or mine) will go to the free version that he will merge with WIP Community Ocean, so everyone can grab a functional FFT ocean shader and develop on top of this.

Main FFT limitation is SM5. It’s the reason why I’m not keeping the VaOcean in actual state (It was Win-only some time ago and it’s not interesting target platform to have for plugin). I have my own local branch with lots of refactoring (current approach in develop branch is too rude), maybe I’ll update it this month.

Hi there @ufna ! Glad see you around!

We got the plugin working up to UE 4.19, but we got an issue with your plugin because it was based on NVidia’s sourcecode found here:
https://blogs.msdn.microsoft.com/nat…mple-in-c-amp/
and we are not sure we can go ahead using it as per its EULA seems we can’t. As the matter of using it is quite complicated, since we failed to understand that EULA completely, we asked Epic about it and we are still waiting for a response. There are other MIT sources in the internet we could go with or just get Tessendorf papers and do it from scratch, since we are used to implement shaders thats not the hard part, but just a matter to speed up things.

Thanks for dropping by and salutations from Brazil to all in Russia.

EULA clearly permits it, but it’s based not on works of C++ AMP team, but on NVidia’s original HLSL one. (I should definitely update repository with this info, and keep NVidia EULA also. My fault, I’ve never thougt about VaOcean as something production ready, just a proof of concept for CS shaders on UE4).

For it comply need the original copyright notice at each file or function from the original material and the EULA file going along.

As for me, complementing the ocean with the list of features above is OK for my project (has to have beaches), but we would like to also sell the solution as a complete and featured plugin in the marketplace, but having EULA from 3rd parties might cause issues for us if we don’t understand them completely, and this was one of my questions for Epic.

As for features, the engine rendering system is strong nowadays. We got a solid Forward Render, Vulkan and OpenGL besides D3D, with both Vulkan and OpenGL SM5 capable and the next generation of consoles being more potent, having a solution today will shiny in the games to be released in 2-3 years.

We are very interested in fog, ocean visible in editor, masking floating objects and generally a realistic looking ocean. The two last points are the most important for us, because we absolutely need to go below the water level in our boats, and since we visualize real products, it needs to look realistic.

We do visualization in VR in Unity, but were asked to look into Unreal as well, and were very surprised that the offerings for water in Unreal appeared very poor.

Will keep an eye on this, and any water based projects we have will remain in Unity for now.

We do hope satisfy this need soon!

The 1st version for the plugin is almost done. It will include the following features:

  • FFT shader not based on VaOcean plugin, but on a MIT license work which will have all the credits for the developer as it should be - done
  • Underwater fog, distortion, wet lens, refraction, caustics
  • Buoyancy
  • shoreline
  • foam where it should exist (shore and at waves) - foam on waves done
  • Ocean visible on editor - done
  • Infinite Ocean (you can turn-off and apply on a scaleable plane area). - done
  • Multiplayer support (you can shoot a distant enemy on top of a wave and you will surelly hit !)

This version will be FREE to use.

and I will place it for @EvoPulseGaming to integrate with his work for a weather solution (also FREE) that you can follow-up for now at the WIP Community Ocean Thread : https://forums.unrealengine.com/comm…n-water-shader

I will make the plugin as the base for the entire solution (as told in 1st post) and will release in the marketplace only when it is implemented all features. So if everyone likes the FREE plugin they would already feel the taste for the complete solution on the videos that will follow.

PS: not happening yet as I have changed plans for the asset.

I would be very interested. I just bought the Realistic Ocean Simulator but it does not support coast lines that look amazing and have waves. It would be fantastic if it could have coastlines that realisticly roll up to a beach.

I am all in for this if it lives up to the promises :slight_smile: (or even just most of them, if not all)

Btw just added the Wave Tubes to allow water sport games (ie surf, bodyboarding, etc)

subscribed, looking forward to see this

one big challenge I had on a certain project was to match the waves direction to always go towards the coast regardless of its orientation. I haven’t seen all the UE4 water projects but so far from the ones I’ve seen none really tackled this topic (which is specially sensitive if you do islands where one arbitrary wind direction just won’t cut it)

and then you have the classic challenge of wave splashes, where making the splashes match the points of contact is very non-trivial to do
Ryan Brucks showed it here: https://www.youtube.com/watch?v=OQ3D0Q5BlOs but he doesn’t explain that much how - “…]
utilizing distance fields for analytical splashes. All splashes are a single mesh here …]” - doesn’t specify if the single mesh is itself the water or a secondary mesh with the same gerstner wave logic applied to it (I’d put my money there)

would be nice to see some pictures of your progress btw

I will provide videos and pictures along the development for sure.

Its been 3 years research atm, so Im pretty confident on the outcome. Everything you mentioned is already researched, Im just integrating into the way FFT is implemented in the code I have choosen for the project (which was in OpenGL) and that Im changing to be generic.

Love the updates. keep it up!

Nice effort… I will buy this if you also include the ability to inquire ocean height at any (x,y) from bp or c++ - this is a must to implement boats buoyancy for an example. Yes there is a mention of ‘buoyancy’ in the feature list but it is not very clear to me.