In fact you’re wrong as i was for a thing: i just understood that view blockages are near useless about rendering performances. As Envy said, the engine is doing only Frustum culling. For doing occlusion culling, mappers have to use areaportals or occluder brush entities. But occluder is worth it comparing to areaportal, in term of performances, but are still required for some usages. I was already thinking about PVS optimisation, but was wrong with view blockages. I will use areaportals now…
The best thing is first to make PVS (visclustering) optimisation as it impact all the engine processes (reducing GPU and CPU costs). Then try to use areaportals for GPU cost. But you need to get a minimum of areaportals in the Field of View of the player, as it adds CPU cost, and think about areaportal leaks (a portal need to separate two distinct areas).
You point out a good thing… I was converting brushes to func_brushes for all details. But for what don’t require collision detection, i’m thinking it’s better to convert them to static props and use “not solid” for the collision parameter… But that can be in detriment of map filesize (cause of model files and VHV file generations), so it needs to be at the end of mapping process to get a good balance.