Help figuring out why different viewport modes change fps (Performance)

EEVEE:
I have a large forest scene in geometry nodes which in solid viewport mode gives me 60 fps but entering rendered mode cuts it down to 30. Why?
In the render proprties I’ve turned all the settings I know of to either be the lowest they could possibly be or off. Samples set to 1, Temporal Reprojection and Jittered Shadows off, disabled shadows and raytacing, no volumes, etc… One external change is Preferences > Viewport > Textures Limit size set to 128.
The only difference I see in the rendered mode is self shadowing so I’ve setup a master material for every object in the scene to be emessive to see if the self shadowing was causing it and it still takes up half.
Solid


Rendered

Scene statistics: Verts: 2,833,418 | Faces: 2,708,337 | Tris: 2,708,337 | Objects: 0/11,259 | Memory: 2.84 GiB | VRAM: 1.5/8.1 GiB
Pc specs is 1070 i7 cpu and 16gb ram.

IMO, the easiest way to check what drops your FPS would be to turn off, one by one, each one of your assets while in rendered mode. Turn off each of them step by step until your FPS would be 60 again. Perhaps you have some huge particles that might be the culprit as well. Who knows.

no particles, just meshes with this default material. Also what would hiding every object till i reach 60 again get me?

It might tell which of possible asset(s) slowing down the FPS counter. Once again, I’m not saying that it will find the inner cause of your problem — that’s just one of debug methods you can give it a try. At least me, myself, — I’ve never experienced nothing similar with EEVEE. From what I remember, the rendered mode always worked fast for me, though I too had huge scenes with plenty of assets as well.

is the tree got transparent leaf card? , its is the most expensive draw calls. so use less transperat cutout as possible, or use tight leafs , that wt most games use to get good perfomance in realtime. and its also a big limitation in blender, its not desined for fast realtime preview,

Nothing has materials right now. everything is either diffuse or emssive to avoid cast shadows.

blender is not designed for fast realtime preview. its not our fault

out of context but. if you intrest in realtime envireonmt like evee, try or switch to ue5. its is so good at scatter thousands of tree without get a single lag.

I’ve tried ue5 several times but many annyoing factors bring me back to blender. things like:
10 minutes to load unreal, you gotta apply and save every material change and then wait for shader compile. shader nodes makes a lot less sense to me, UI is a lot harder and feels older compared to blenders, no compositer, limited color management settings, the “out of video memory” alert I get for practically empty scenes, the navigation is weirder, etc. It does have more features and handles larger scenes better but these issues still stand in my way of actually using it and they aren’t planning on releasing a lite version so I’m sticking with blender for now.

Some scenes do better than others. But this is a strange viewmode issue. It’s really weird why it’s still taking away so much fps. Idk if it’s bug report worthy.

seems to be caused just by the fact there are a lot of instanced meshes in that particular area. But still doesn’t explain the difference in fps when it isn’t rendering shadows or even materials.

ok that is a big list of complaints :sweat_smile:
in my opinion its better than blender when it come to render , lighting, ppv,
yes the material suck and its complicated. and i dont acutualy got the loading problem or compiling material problem. i been working in blender as student for long time now, after switch to ue5 im getting better result

The unreal ai and blueprint controversy also doesn’t look good. Blender seems to have a brighter future going for itself and is only restricted by its donation and employee amount so the only downside is how long we have to wait for these new things to come out. 5.3 and vulkan will hopefuly be a good starting point for performance improvements.

wt is that?

they’re removing blueprints and using ai in ue 6+

Yeah, but afaik, it’s going to be a transition phase, so that blueprints will still be supported a few more years. Even though they are not a default way any more. Also one can still use older version of the engine anyway. And speaking of AI, many places already use it, including google etc. But I understand your point on this. I’m not a fan of ai either…

But for the original performance question: to me 30fps in rendered view sounds pretty fast anyway. Do you need it to be 60fps (are you previewing animations etc?) or is it just that it’s so strange to have such a drop in speed? :thinking: Do you have lights in the scene? If so have you tried to remove them, or turn the shadows off from them?

im not a fan of ai to. but that is not that bad

I think I know what’s happening here.

The reason you are getting lower performance in Eevee is because Eevee doesn’t get as much benefit from instancing as other renderers.

If the forest is made with geometry nodes, then it must be made of instances, which don’t show up in the polygon count stats (unless you realized the instances). This means your scene actually has way more than the stated 2.7 million tris.

Cycles is able to take a nearly unlimited number of instances with almost no speed impact (only bound by whether they fit in memory) because it renders only what the rays touch, but Eevee is a rasterizer and needs to draw every single triangle that’s on screen one by one and that takes time even if the triangles are reused with instancing. The raw polygon count, including instances, matters a lot in Eevee and scenes have to be designed with that in mind.

Solid view has the same issue, as it’s also a rasterizer, but it fares better because its shading is so much simpler than Eevee even with everything disabled.

What I would try: switch the models to simplified versions in the distant areas or remove them if they aren’t seen.

But also I have to say that 30fps is not a bad performance for Eevee. You aren’t meant to preview animations in real time in rendered view, it exists mostly to preview the lighting and textures and that is workable even at much lower framerates.

However, the fact you are using a different render engine does. The viewport is using the workbench engine, while you are then rendering using Eevee.

The first big difference is that Eevee is using the actual lights in the scene.

You can see the difference this makes by starting Blender with the default cube, then render it with Eevee, then change the Render Engine to Workbench and render again, totally different result, hence different FPS isn’t surprising.

the point isn’t what fps i’m getting but my fps is being cut in half when switching view modes. no lights except for sun/world.