Water Body Not Rendering Properly When Loading a Level Mid Session - Requires Delayed MarkForRebuild() on WaterZone

Hello, I’ve been running into a strange issue with Water Bodies in Unreal Engine 5.

If I start the game in a level without any Water Body components and then load into one that does have them, the water doesn’t render properly and leaves gaps (but does create a WaterInfoTexture). However, if I start directly in the level with the Water Body, everything works fine.

After a bit of trial and error, I found that calling ‘MarkForRebuild()’ on the ‘WaterZone’ after a short delay (around 5 seconds) seems to fix the issue; the ‘WaterInfoTexture’ then regenerates at the proper resolution. But if I call it too early, the problem persists and so it’s not the most reliable solution.

It seems like the ‘WaterInfoTexture’ is being generated too soon, probably before the landscape or other geometry has finished loading, so the texture ends up at a lower resolution. Giving it a moment to fully initialize before forcing the rebuild helps, but this feels like a workaround rather than a fix.

I have attempted to call ‘MarkForRebuild()’ when the level and all actors are loaded, but still no luck. The only viable approach at the moment seems to be after a short delay.

Any help would be appreciated!

Hi,

I have been unsuccessful in reproducing the results that you are seeing.

I have tried the following:

  • Create a project in UE 5.4
  • Enable the Unreal Water Plugin
  • Add a water Body ocean to the Map
  • Create a new Start Up Map
  • Create an input event in the Start Up Map to trigger the Water Map to load
  • Run the Start Up Map in PIE and load the Water Map on keypress

This may mean that our projects are out of sync or I have missed an important step. Are you please able to provide a minimal project that reproduces the issue or detailed steps to reproduce.

Thanks

Hi,

Thank you for the additional information. Unfortunately I was still unable to reproduce the issue that you are experiencing.

Following is a screen capture from my test map:

[Image Removed]

Some things to note about the water system.

  • Large rivers do not cull well, if any part is in the view frustrum the whole river will render ( you can test this yourself using the freezerendering console command )
  • The Landscape_WaterBrushManager texture sizes have a direct correlation to the resolution of the landscape.

Some follow up questions:

  • Does this occur on a packaged build
  • Does it update eventually without calling the MarkForRebuild() function
  • Is there anything interesting in the Logs relating to Texture loading

To further investigate this issue I will need you to provide either the offending Map or a minimal project that reproduces this results that you are experiencing.

Kind Regards

With that in mind I am not sure I am able to provide any further assistance. If you do have any more information to share or are able to provide project files that reproduce the issue, feel free to continue the conversation here.

Best of luck.

My apologies, I did not specify that I am using a ‘Water Body River’. To be even more specific, the river goes from one end of the landscape to the other with a few twist and turns throughout.

Instead of the ocean, are you able to try the river please? I have tested the ocean locally (out of curiosity) and that works perfectly.

(UPDATE) I have attempted to try loading both a streamed and non-streamed level to see how it performs. I added a landscape to both and placed a river water body; both levels worked as expected. The level that doesn’t work has a larger landscape and a vast amount of instanced foliage actors. I have tried a variety of fixes including calling the rebuild logic after the world has loaded, after all actors have loaded, after all landscape textures are fully streamed it etc. and still no luck.

Hello! I have also been investigating the behavior on a new level and it seems it works as expected and produces the same results as you have shared. Because of this, I won’t be able to reproduce it on another level and share it with you as it seems specific to our project and I’m not 100% what causes it after investigating further.

With regard to your questions:

1 - Yes it does occur in a packaged build.

2 - No it does not eventually call MarkForRebuild() (the only viable fix seems to be manually calling it after a short delay).

3 - No there are no logs relating to the texture loading.