Func occluder



It hides models which are completely obscured by the brush. Sides of a  that are textured with nodraw will not be factored into occlusion calculations. See Max occludee area and Min occluder area in.

Poor occluder usage is worse for performance than not having any! Check if your occluders are actually helpful by using  in the console to switch them between their on/off states. Situations where occluders are useful are rare in comparison to other optimization techniques; even some Valve maps use them wildly inappropriately.

The issue can be boiled down to two variables: how long it takes the engine to trace lines to each model on-screen to check for LOS (increases as more models are added, not affected by the complexity of said models), and how long it would take the engine to render the occluded models (increases with model complexity and somewhat for each individual model, regardless of complexity). The line-tracing part of this has to be done with high precision and granularity to avoid de-rendering things that are actually visible. In short, occluders start to drain performance when the cost of checking each model for LOS outweighs the benefit of not rendering the occluded polys.

Areaportals on the other hand experience less overhead because they use a much less precise culling method. Their use cases are much more concrete and predictable, and they're based in the BSP architecture. These two methods of optimization are essentially opposites - one hides things behind it, and the other hides everything except what's behind it. What these two have in common is the fact that they're used in scenarios where is impractical or impossible.

The above image from Nucleus is a good use of occluders: the room's unusual geometry makes hinting very unintuitive to do, and areaportals were probably forgone for the unusual shapes and amount of windows and doors present in the area. Ultimately, the occluders do indeed boost fps.