Disable/Enable 3D Rendering at Runtime

I am developing an application, much of which is based on 2D User Interface.

I want to disable all 3D rendering, and only enable UMG; and be able to toggle this effect.

I am currently using a completely empty level, and was hoping I could drastically improve performance for the UI when rendering is not needed, which could be always or never.

Right now, I do not see any real difference in CPU/GPU processes using an empty level, my laoptop runs hot ad fans kick in regardless, when I am only displaying a still image in UMG as background and using UMG widgetsonly on screen

limit your max frame limit to something like 60 (can be set in project settings or via command panel type in t.maxfps 60 in the console command).

Your laptop is probably doing well over a 100 frames a second on an empty scene. If you do not limit the frames it will go full power until it hits a thermal limit, spinning up the fans in the process.

This will help yes, but this does not answer the question. I want to dynamically enable/disable 3D rendering at runtime and render only UMG. And then turm back on when user wants to view a 3d scene.

Hey there @blindminds! I don’t believe there is a way to completely disable the 3D rendering of the viewport, while you can disable the world view for the time and this should help with resources, the renderer will still be using resources.

Wow, the Set Enable World Rendering gave tremendous immediate improvements, and can also be triggered/toggle with blueprints at runtime. Amazing…thank you!

1 Like

Great! I’m glad this works for your use case! It won’t disable overhead altogether, but seems to be the best way besides custom engine source edits. If you do end up taking the optimization further, I’d love to hear about it! There’s been a good number of users looking to work with similar applications, but as you’re aware the scene renderer is quite heavy.

Yes, the scene render can be quite heavy. I have thought about further optimization, on crazy levels, but I am a noob solo developer, so will have to wait till I am successful and have a real team with great programmers. But I have thought about rendering the scene to a render target and using that render target for a background. Enable rendering to get render target, once done disable. When the user wants to move camera or whatever, can activate for real time, once positioned, render frame to target, turn off and just display image while they use UMG interface.

I mean, for a solo dev who has only been doing UE for like 4 years, this little node gave me MASSIVE performance boost when the background is showing and no scene is being showed, only UMG. Like…massive. My UMG panels were so stuttering when I moved them, now they just fly so smoothly across the screen no matter how fast I move them.

1 Like