There are two main types of objects Umbra takes care of: Occluders and Occludees. The former are only geometry and Umbra treats them as the only solid model. The latter are those whose visibility Umbra actually tests with the occlusion data. Occluders consist of pretty much the entire geometry where the flag “Occluder Static” is set and not surprisingly Occludee who have the flag “Occludee static”.
As a rule of thumb and default, you can and should set most, if not all, of your renderers as decludees so that Umbra can and should sort them out. Also, most of your static renderers can be occluders by default. Just make sure that if your renderer isn’t opaque, it shouldn’t be occluder either. (Unity will actually issue a warning in this case). This of course includes transparent objects and the like.
But even if your object contains very small holes (e.g. a cheese slice) that you want to search, but reducing the value of the smallest hole worldwide doesn’t make sense, removing the occluder flag from the renderer is the right thing to do.
Since occluders are considered solid, correct culling can usually be guaranteed if the camera does not cut an occluder. This means, for example, if the collision system cannot prevent the camera from flying in an occluder, but you are likely to remove the occluder flag in order to obtain meaningful results.
Given the fact that Umbra sorts out occlusions at the object level, it makes no sense to have objects several kilometers in size. Such massive objects are very difficult to remove because part of the object is almost always visible, especially in combination with Umbra’s conservative culling. Therefore, it is usually a good idea to divide the terrain into several areas, unless you want the entire terrain to be visible at all times.
With regard to occlusion culling, the best object subdivision is usually a natural one, which means that of course different objects should probably be kept separate during culling. So it usually doesn’t help to chunken objects too aggressively. You should only group objects that are similar in terms of visibility. On the other hand, a too fine-grained subdivision can lead to unnecessary overhead per object. In reality, this only becomes a problem when there are tens of thousands of occludes in the scene.
Perhaps it should be emphasized that only the object subdivision of occludes is important. In any case, occluders are considered a single large shell polygon soup.
In the previous article we briefly described how Umbra first voxels the Occluding geometry, groups these voxels into cells and then connects the cells with portals. Umbra is always conservative, which means that in different cases Umbra considers the occluders somewhat smaller than what they really are or vice versa the empty surfaces somewhat larger.
This means that if there happens to be an unintended hole in their occluding geometry, it is more likely to be preserved by voxelization. There is a good chance that it will be slightly enlarged in the final output data. This can lead to surprising “leaks” in the occlusion. The camera may be looking at a seemingly solid wall, but things behind the wall won’t get clogged up because there’s an unnoticed small gap somewhere.