Layers are no use - the 32 limit is too small even for a single project, let alone for code that I'm distributing to different teams (I can't steal their layers, Unity has too few to start with). Given that, what's the best way to cull gameobjects during rendering? Things I've tried: Look for something in OnWillRenderObject() that lets you tell Unity "don't render it; cull it" - I expected at least a bool return, but seems no such method exists Looking for some form of "ShouldCull()" method, as I've had in other game engines. I can't find anything in the docs Replace rendering with manual call to Render(), embedded inside OnWillRenderObject(), and disable the object using SetActive(false) immediately before rendering, then restore it during OnRenderObject() - this works in Play mode, but fails in Editor mode Using shader-replacement - this doesn't work because you cannot say "render everything normally EXCEPT FOR object X", instead you have to manually rewrite every single shader that exists on every object everywhere in your scene. Which is effectively impossible. Nuking the mesh bounds, and then restoring it. This feels like a really bad idea from a performance POV, and you have to be a bit careful about choosing bounds that are DEFINITELY outside of Unity's frustum culling (which has some bugs - it will crash on some values - and has a margin-of-error, so simply sticking it a long way away won't work) This feels like I'm missing something obvious - surely Unity allows games to do their own culling? It's such a huge performance win!