People have known about it at some level (you can guess most of this just by looking at the .bsp file spec), but no one took the trouble to do detailed testing and write up the results. Also, until the Q3 engine source went GPL, you had to guess as to what was happening under the hood.
I did get a little bit confused by the fact your ‘test case’ column rarely matches the ‘name’ column in the above table, but I got the idea enough to see what a difference it can make.
Sorry about that, as stated this is an unfinished draft (the whole project has been sitting on my HD untouched for a long time :/), but I figured I throw it up there. I’ll try to sort that out soon.
My question now would be how much would this affect a real-world case, since obviously your test maps were designed to highlight any differences, and as a result are probably not likely to reflect how brushes are used normally.
Absolutely. This is only one of many performance factors, and not nearly such a big deal on real maps. However, it does give people some more things to consider beyond just r_speeds. The points that brush complexity does cost, and that BSP splits matter even if they don’t help vis is something that many experienced mappers seem to have missed.
The immediately obvious case would be removing caulk hull brushes (so it’s about time I started using a custom shader for that methinks) - apart from that what other uses spring to mind?
For caulk hull, it might make more sense to keep the hull and discard the drawing stuff. Imagine a flat wall with textured trim etc. The collision and BSP hull just need one simple shape, while the visual geometry could be made out of many. Of course, then you have to worry about where your detail interior deviates from the hull. There are additional complications with surfaceparams and marks (that’s one of the unfisnished bits of this project, and isn’t as simple as it might seem on first glance).
Unreachable geometry is significant on some maps. Think about maps like mp_assault, where you have huge, complex mountains (and buildings) that aren’t reachable at all. You could make some very simple clip to make sure people don’t end up there, and stray PFs explode, and have all the rest be brush free. That alone would probably be enough to turn assault into decent performing map.
Completely noclip brushes includes decals and hints as well. Also, lowering the cost of brushwork allows you do do things that would normally cause unacceptable performance hits. For example, you could make a tile floor that used hundreds of tiles of individual tiles. Of course, it doesn’t ultimately let you do much you couldn’t do with ASE models, but it simplifies the workflow a lot.
Another category is detailed geometry that can make use of a simple clip. For example, if you make a pile of rubble on the ground (with the individual bits made from brushes) they could cost you a lot, even though a simple pyramid of clip would suffice. In fact, many mappers would already use the simple clip to smooth out movement, but they still pay the cost of the brushes that are embedded in the clip.
It also allows you to create new and interesting map bugs :moo: