# How occlusion culling affects objects

Occlusion culling treats static objects (like the map) and dynamic objects (like players and pickups) separately.

- **Static** objects can hide and be hidden. (You don't always want static objects to do both.) They'll be baked into the data and can't be changed at runtime.
- **Dynamic** objects can't hide objects behind them, but they'll be hidden based on a rough calculation of whether they're behind a static object.

Unity uses the Static flags on an object to determine how occlusion affects them. There are 3 different things that occlusion thinks about.

- Static Occlu**ders**. The only things that can occlude are static things that don't move - specifically, Mesh Renderers and Terrain. If they're marked as Occluder Static, then things behind them get hidden. They'll be baked into the occlusion data.
- Static Occlu**dees**. This specifies static things that get hidden. Occludees can be anything with a Renderer, as long as it doesn't move.
- Dynamic Occludees. This covers anything else in the scene. If the "Dynamic Occlusion" property is enabled, then it can be hidden by Static Occluders using the baked data.

Dynamic occlusion is less precise than static occlusion. In practice, only large, solid objects will hide dynamic objects.

Occlusion culling works on top of static batching, and Unity can hide objects that are part of a static batch.