Need some advice about optimizing Level Streaming

Hello everyone,

I am trying to achieve smooth level streaming. I am streaming a single level that contains a static mesh that has 600K vertices. I know it is not a real case, but I am wondering if I am not able to stream heavy static meshes ? As far as I understand of the process loading assets are not the problem. They are using FAsyncLoadingThread and not blocking the GameThread which is good. But the problem starts after the ProcessAsyncLoading function. It calls ENQUEUE_RENDER_COMMAND and RenderThread copies buffers to GPU Memory(VRAM) from RAM. This process can not be limited therefore it blocks RenderThread and GameThread waits for RenderThread and that causes hitches.

Do you have any tips to avoid this? I would like to stream levels during cutscene and cutscene are plays in game and hitches effects cutscene performance.
How can I solve those issues?

Hi @ilkeraktug. I asked the Rendering team about this.

We are aware of this and we’re planning on fixing this behavior in a future update. I unfortunately don’t have a time estimate for you.

Currently RHI buffers are created on the Render Thread and there’s no easy way around that. This shouldn’t be a problem for most normally sized meshes but like you noticed, can be a noticeable chunk of the frame time for very large meshes. For now, you can mitigate the problem by either splitting your largest meshes up into multiple smaller meshes, or by turning on Nanite for larger meshes.

Dear @Ari_Epic

Thank you for your reply. It is really helpful!