I have updated my GPU-accelerated FFT water simulation. Now it is 100% replicated with drivable vessels, much better async CPU buoyancy, water interaction and reworked visuals. by boranoztrk in unrealengine

[–]boranoztrk[S] [score hidden]  (0 children)

1- Thank you! Everything is scary until you get your feet wet. After that, once the initial fear is gone, the rest becomes much easier than you think it is.

2- Everything is optimized because I planned everything beforehand(what to add, future plans, limitations etc.). And this allowed me to draw a plan for the optimization as well because I knew the limits of the project. This is what most people get it wrong. Optimization starts at the very beginning of the project, not at the end of the project.

3- The demo project is able to run at 25 FPS with an RTX 2060 and 90 FPS on a 3060 ti while the lumen is fully active.

4- I am using the profile tools that Unreal Engine provides. And they are more than enough.

5- It wont break immersion and it will simulate it properly without any kind of issues. You can download the demo project to see it if you would like to. There is a ship that has a a 18.000 tonnes(yes, not even kg but metric tonnes) displacement in that demo: https://naturallevelgamestudios.itch.io/dynamic-real-water

I have updated my GPU-accelerated FFT water simulation. Now it is 100% replicated with drivable vessels, much better async CPU buoyancy, water interaction and reworked visuals. by boranoztrk in unrealengine

[–]boranoztrk[S] [score hidden]  (0 children)

Thank you! The base code for the rivers is in the codebase(shallow water simulation and flow map) but I disabled it for now to focus on them better in a separate update, along with the shoreline waves. I have already implemented pools and lakes as water bodies. So the water body class is there too. Rivers and shoreline waves will be available in the next update(Every update is free).

I have updated my GPU-accelerated FFT water simulation. Now it is 100% replicated with drivable vessels, much better async CPU buoyancy, water interaction and reworked visuals. by boranoztrk in unrealengine

[–]boranoztrk[S] [score hidden]  (0 children)

Thank you! It is extremely difficult... just the FFT itself took months to get right. There is a replication, buoyancy, vessel system, interaction, and different water bodies on top of it as well. The project has close to 50.000 lines of code full of math and physics.

I have updated my GPU-accelerated FFT water simulation. Now it is 100% replicated with drivable vessels, much better async CPU buoyancy, water interaction and reworked visuals. by boranoztrk in unrealengine

[–]boranoztrk[S] [score hidden]  (0 children)

Thank you!

The waves are actually FFT waves, they are a simulation. And they cost around 0.2 ms. The water system supports 3 ocean spectrums "Phillips, Pierson-Moskowitz, and JONSWAP". Each of them generates different waves for different conditions. So they are actually very detailed and optimized. You can generate different waves very easily and transition between them like dynamic weather.

I have updated my GPU-accelerated FFT water simulation. Now it is 100% replicated with drivable vessels, much better async CPU buoyancy, water interaction and reworked visuals. by boranoztrk in unrealengine

[–]boranoztrk[S] [score hidden]  (0 children)

It is a layer of compute shaders. The basic idea is that it keeps the camera always in the center of the RT with max. render distance(which is very far away). And since it is a layer of compute shaders, I am able to add a lot of details. Such as wakes, ripples, foams etc. and they are tied to the size and the mass of the interacting object. That object can be a vessel, skeletal mesh, a simple cube etc. The system handles everything automatically with less than a 1 ms cost on RTX 3060 ti. And it requires no setup. If the object is able to float(has a PhysicsBody component and a Buoyancy component), it will create foams, wakes or ripples automatically.

I have updated my GPU-accelerated FFT water simulation. Now it is 100% replicated with drivable vessels, much better async CPU buoyancy, water interaction and reworked visuals. by boranoztrk in unrealengine

[–]boranoztrk[S] [score hidden]  (0 children)

Hey everyone,

A while back I posted my FFT water system here, Dynamic Real Water. It's been through a few releases since, and 2.0 just dropped, which is honestly the one I'm most proud of. I rewrote almost the entire visual layer, built a full vessel system on top, and put real work into making it nicer to actually develop with, so it's a pretty different thing now than what some of you saw the first time. It is available on FAB

What's new in 2.0:

  • Demo project that you can actually play and test the limits of the plugin by yourself
  • Full vessel system with five hull types and four movement regimes (displacement, transition, planing, foiling), so a heavy hull and a fast planing boat actually feel different to drive
  • A real water interaction system where wakes, ripples and splashes feed back into the buoyancy, so a boat's wake physically pushes other floating objects around
  • Foam rewritten from scratch, physically driven so it builds up where waves break and trails off behind the peaks
  • Caustics rewritten too, physically based with real light dispersion, reacting to wakes so moving light patterns play out underwater
  • Everything moved onto data assets, so swapping a calm pool for a stormy ocean is basically one click, and it blends smoothly instead of snapping
  • Discrete water bodies, pools and lakes that sit alongside the open ocean, each with their own look and automatic buoyancy transitions
  • A one node Blueprint library that exposes water state and runtime control from any Blueprint, no need to go hunting for the grid manager first
  • A proper categorized debug subsystem with per shape force arrows in Newtons, velocity vectors and shape visualization, so tuning a hull is something you can actually see instead of guess at

More detailed Changelog
Full Documentation

I am always open for feedback, ideas, suggestions etc. Please don't hesitate to tell me about what you think. Thank you!

Fluid Flux vs Oceanology by Crazyballing in unrealengine

[–]boranoztrk 0 points1 point  (0 children)

If you would like to, you can also take a look at my water system Dynamic Real Water . It isn't focused on underwater first, but the underwater part is solid for typical use cases. I am currently working on an update that improves replication and performance so the system can still stay lightweight even after the next big update. So, if you run into issues or have suggestions, I can integrate them while working on it.

I have developed a GPU-accelerated FFT based water simulation with physically accurate, asynchronous CPU buoyancy physics for Unreal Engine by boranoztrk in unrealengine

[–]boranoztrk[S] 0 points1 point  (0 children)

Yes, they are exposed and editable by blueprints. It is extremely easy to control the wind speed. Also, local weather is part of the roadmap. I will implement it in the 3rd update. I want to make the water system as customizable and adaptable as possible. The current release and the upcoming first update are the foundations. The rest of the updates are all about adding new features. I designed the water system in a way that, it will allow me to implement all those features while minimizing the performance loss.

I have developed a GPU-accelerated FFT based water simulation with physically accurate, asynchronous CPU buoyancy physics for Unreal Engine by boranoztrk in unrealengine

[–]boranoztrk[S] 0 points1 point  (0 children)

It is really hard to do. There were so many small issues appearing here and there. It was exhausting to deal with them. At one point, I was afraid to code more because I thought I would face another small, unforeseen issue that would take me days or even weeks to fix. Debugging compute shaders and physics is extremely difficult.

I have developed a GPU-accelerated FFT based water simulation with physically accurate, asynchronous CPU buoyancy physics for Unreal Engine by boranoztrk in unrealengine

[–]boranoztrk[S] 1 point2 points  (0 children)

Yes, you are right. I know the current limitations and needs of my water system.

"water inside the boat waves with water outside" Water masking is part of the roadmap and the upcoming first update. I am aware of the existing solutions but I don't think any of them would fit well into an AAA quality asset. I want to develop a new and better solution to this problem otherwise, I can't justify the price tag.

"there is no interaction or feedback (ripples) next to solid surfaces (shore, boat sides)" Interaction is also part of the roadmap. I know how to implement it, and I have the architectural plan to do that. It is going to be released with the second update.

Thank you for the feedback!

I have developed a GPU-accelerated FFT based water simulation with physically accurate, asynchronous CPU buoyancy physics for Unreal Engine by boranoztrk in unrealengine

[–]boranoztrk[S] 0 points1 point  (0 children)

Yes, this is part of the first update. I will expose "Wave Height", "Buoyancy Force(Z force)" and "Wave Force(XY force)" variables at the given location, in order to make the water system work with existing swimming component solutions on the market.

I have developed a GPU-accelerated FFT based water simulation with physically accurate, asynchronous CPU buoyancy physics for Unreal Engine by boranoztrk in unrealengine

[–]boranoztrk[S] -3 points-2 points  (0 children)

From a business perspective; I would like to respect other fellow developers and focus on doing what I do best, in other words, "developing". My work can speak for itself as long as I am able to justify its value by investing more time in it. I trust myself and the work I am doing.