Parts/Assets Flickering At Certain Camera Angles

At certain angles of the camera, at certain angles, various parts and models, local character included, stream in and out rapidly.

I have no repro steps, this seems like it’s localized to this one game, our team is unsure of the impact.
However, turning streaming enabled off entirely resolves it.

The relevant place ID is 81246389901587 (edit: 94616760701754 suffers from the same problem). See this video here, and see private content for profiler dumps.

My systems info:

  • Ryzen 5 3600
  • 16 GB DDR4
  • GeForce GTX 1660 6GB
  • W11 preview stable

The game’s streaming settings are as below, though changing any or a combination of them does not impact, mitigate, or in any way reduce the frequency of the problem.

  • Predictive streaming - default
  • Stream behaviour - improved
  • Streaming out behaviour - opportunistic
  • Next gen replication - default
  • All models streaming behaviour are set to default (non-atomic).
  • Streaming enabled - on (this problem disappears entirely when streaming is off)

A private message is associated with this bug report

Do you have our new ‘mesh streaming’ feature enabled. It is a experience workspace setting.

this is set on default which to my knowledge is the same as enabled, disabling this does not resolve this issue.

Ok thank you. I would recommend leaving it at ‘default’.

Currently ‘default’ is off for this feature.

thanks. in following up after some experiments, it looks like turning streaming enabled off was the only way to resolve it, and we really aren’t in a position to turn it off.

Place 94616760701754 has the same content and suffers from the same issue. That place should be joinable by one of those direct-start links.

I tried to reproduce it locally but could not.
Also the place seems slightly different than in the video.

I can confirm asset-wise they are not. In an attempt to reconcile things, I’ve just pushed a change to the 01754 place.

Hi EspressoAPI,

Thank you for reporting this issue. We’ve found the root cause of the issue and will have a fix in an upcoming release. I will keep this thread updated for when we are able to enable the fix.

Thank you. Out of complete curiosity, what is causing/caused this?

This was a bug that had been in the engine for a long time but the conditions to trigger it are rare so nobody else had reported the issue.

Basically, each terrain chunk will provide occluder mesh information. This is designed to update with the renderable mesh so that the occluder meshes match up.
So for instance, when using streaming if we create a chunk mesh with LOD3 voxel data then stream in LOD0 voxel data, we will update both the render mesh and occluder mesh with the higher accuracy data.

But chunks will only conditionally provide occluder information. For instance, a chunk that is all water will not provide occluder data. In cases like this we are suppose to remove the old occluder info, but in rare circumstances we instead keep the old occluder info active. In your case this caused a sheet of buggy occluder mesh to appear and cull parts that it hid.

3 Likes

Thanks, eye-opening indeed.

I suppose if the old occluder info was kept in “rare circumstances”, I’m assuming it’s probably accounting for a very rare edge case? Or was this something that was rather left accidentally in there?

And with that, I’m also a little lost. There are a few large bodies of water in our game, it doesn’t seem like we are experiencing this issue (from QA and my experience) in other regions of the map, but only this one very particular region where we have two pools side by side. Thus, what was so different in that particular map region that triggered this rare case? I can only think of the fact that I had that water surface at a number not divisible by 4 in full.

Edit: whatever you can share on this is great. I was told at RDC that anything in regards to streaming & culling is a very delicate and scrutinized system, and I respect a lot of the unknowns/untellables that surrounds this.