← All ideas
  • Published 30 Aug 2019

Visibility and Occlusion Culling for EEVEE

Working with EEVEE for architectural visualization, I've become aware of how extremely slow EEVEE renders can become when more lights and objects are loaded into the scene.

For example, an interior bedroom scene with 2.5M tris and 6 lights results in a render time of 2 minutes/frame @ 128 samples. Enable the collection for an adjoining bathroom (which is occluded by a closed door) and now the polycount is 3.9M tris with 31 lights... and the render skyrockets to over 11 minutes/frame @ 128 samples. Enable JUST the lights for that room, and the render still doubles to 4 minutes/frame.

EEVEE desperately needs dynamic occlusion culling , where objects hidden behind other objects are culled and not rendered or loaded into memory, and at the very least, view frustrum culling, where objects out of frame are culled (Cycles has a setting for this). For dynamic occlusion culling, UE4 utilizes hardware occlusion queries (among other methods) to achieve culling for objects.

Further info here: docs.unrealengine.com/en-US/Engine/Rendering/VisibilityCulling/index.html

This would be a great time-saving feature for rendering in EEVEE. Thanks for your consideration.

ensuite-bathroom-3d-render-blender-eevee-AdamJanz3D.png

94.1%

Development Status: Open

Upvote 32 Downvote 2
Copperplate
30 Aug 2019

7 Comments

emil.assarsson

This issue seems to be more related to the number of lights in the scene. This is a limitation in all realtime engines. If you turn off shadow casting on all light doesn't need it, you should get much better performance. Each shadow renders a depth-map. This means that you will have duplicate draw calls for all lights. Occlusion Culling, depending on the technique, will not always improve performance, especially on high poly scenes.

3
Copperplate Author

* @Emil Assarsson * Thanks, Emil, for that info. Hopefully there will be a solution that will avoid the performance hit of duplicate draw calls for lights; but there is still a large performance hit coming from unused geometry that should be culled.

1
mindinsomnia

* @Emil Assarsson * Obviously rendering lights will always incur a performance hit, but there's a lot of excess drawing occurring in the way Eevee handles lights. I've seen better real time performance with more lights with more concurrent shadow maps from engines in 2015 than what I'm getting from Eevee.

Josephbburg

EEVEE also needs this feature for rendering regions. Rendering a region is currently just as slow as rendering at full resolution.

3
Emi_Martinez

Is the any update about dynamic occlusion culling on eevee? We really need this feature

1
mindinsomnia

Like an idiot I'm trying to use Eevee right now for rendering a large office scene.

You know how many lights are in the typical office?

FML.

Copperplate Author

* @ Grady * I haven't tested Eevee performance in the latest versions of Blender, which support light instances. I believe some of the slow down was also due to having more reflection planes in the scene, since the scene must be rendered again for each new reflection plane.