← All ideas
  • Published 14 Aug 2020

Viewport Occlusion Culling

Something that would help viewport performance in large scenes, is to cull objects which aren't visible. Occluded that is.

Currently we have Frustum Culling which culls objects outside of your view, like things behind you. But anything that is in front of you, even if you cant physically see it. Goes un-culled. That means if your view is in a small empty room facing a wall, the vast city outside in front of you is still calculated for and bogging down performance anyway.

People back in the day with Blender Game Engine were particularly interested in this, but while that's long in the past. Such things could still be important today for good viewport performance. Often Occlusion tests are shared between a frame or two for less power needed overall. But the benefit to the blender viewport, is that it doesnt have to be 100% seamless since its not a render or a video game. So occlusion tests can be shared to more frames before testing again. And with modern hardware, it might even be possible to optionally do it all by per-pixel traces straight onto objects, since games usually cheat and simplify it.

These here are some of the things that peaked my interest in this topic(besides my own struggles with large scenes): gamesindustry.biz/articles/2016-12-07-overview-on-popular-occlusion-culling-techniques

youtu.be/lDbF1O1cze8

chrome_2020-08-09_01-29-30.png

100%

Development Status: Open

Upvote 15 Downvote 0
LethalDumpster
14 Aug 2020

3 Comments

Vyach

I am not sure, it will give boost. In the game all meshes are precalculated (main+lods) or have simple stepped decimation. In Blender objects can have a lot of heavy modifiers and unloading/loading such objects will drop performance down.

May be with Vulkan there will be more optimization.

2
LethalDumpster Author

* @ Vyacheslav * As everything goes, its situational. And optional.

But need I remind you of something ive already stated? We have Frustum Culling. This "de-renders" anything outside of your peripheral vision. Its always in effect. Simply looking away from a heavy area in scenes, shows better performance. Occlusion culling does the same thing to objects. Its just that it chooses to do it to objects if their hidden behind something, rather than if their "behind you".

Now as for pre-calculation, yes, that is something in the way. But I could also note that alot of things in blender are pre-calculated to(or rather cached in some cases). Even in EEVEE, you can bake Indirect Lighting with Irradience Volumes. Baking out things is nothing new to blender. And can allow for greater performance if utilized properly, at the cost of waiting a moment or two in the beginning. Optionally ofcourse.

spiraloid

you can do this with a decimator and vertex groups defined by the weight lifter addon using shadow map processing.

blendermarket.com/products/weightlifter