Re: Overlapping world brushes in Source
Posted by Naklajat on
Wed Apr 25th 2007 at 8:53pm
1137 posts
384 snarkmarks
Registered:
Nov 15th 2004
Occupation: Baron
Location: Austin, Texas
Almost every HL2 level optimization tutorial I've seen says overlapping brushes are bad news, and basically to avoid them wherever possible. They say it makes VVIS have a fit, it causes shimmering textures, overlapping brushes killed my father, etc, etc. But I've never seen a reason with proof of why they are problematic, and in fact there are many instances of overlapping brushes in the HL2 source VMFs.
Until recently, I diligently made sure none of my world brushes were overlapping, at the advice found in many tutorials and guides, but it takes more time, and makes mapping much more tedious. But from what little understanding of Source BSP I have, I'm pretty sure VBSP nukes everything that isn't facing the inside of properly-sealed map, including faces inside intersecting brushes. I've not seen any ill effects of having world brushes overlap, besides coplanar faces with different textures being split at an unpredictable point, but coplanar faces aren't hard to avoid. The more I look and experiment, the more it seems it's another myth born from ignorance, like texturing all outer surfaces of your map with the nodraw material.
What are your thoughts/experience? and to the few professionals here, what is the norm regarding this at your workplace?
It seems to me that carefully used overlapping world brushes do nothing but save time. And saving time is always a good thing.
o
Re: Overlapping world brushes in Source
Posted by Finger on
Wed Apr 25th 2007 at 9:08pm
Finger
member
672 posts
1460 snarkmarks
Registered:
Oct 13th 2001
Well, in general I think it's a great philosophy to drill into a new persons head. Starting with a strict goal of super efficient construction will do nothing but teach good habits. Even if the engine culls overlapping faces, the real problem is that people develop sloppy technique. A good mapper really needs to be as effecient as possible whenever possible, as all of the little shortcuts could add up to real performance problems in the end. This was true in the days of r_speeds and low detail, and is still true - no matter the polygon budget.
I do think, however, that overlapping brush based entities is fine for certain situations. I have in the past overlapped detail (func_detail) brushes when needed. You will see this in Valve maps also; for example they might create the roof of a house out of one large brush, then push other details right through that brush. These are always detail brushes intersecting world brushes, or detail brushes intersecting detail brushes.
Re: Overlapping world brushes in Source
Posted by fishy on
Wed Apr 25th 2007 at 9:14pm
fishy
member
2623 posts
1476 snarkmarks
Registered:
Sep 7th 2003
Location: glasgow
It was a long time ago, but it was definately documentation from valve that I read, and it gave very technical sounding explainations of why overlapping brushes will indeed be responsible for the death of a loved one.
.....which reminds me of the old joke, where a three legged dog hobbles into a bar, pulls out a six-shooter, and declares in a broad Texan accent, "I've come for the man that shot ma paw."
i eat paint
Re: Overlapping world brushes in Source
Posted by Crono on
Wed Apr 25th 2007 at 9:19pm
Crono
super admin
6628 posts
700 snarkmarks
Registered:
Dec 19th 2003
Location: Oregon, USA
It has to do with building the bsp tree. Most people don't know how that data structure works (nor would I expect you to if you don't know anything about graphics programming).
The basic point is that if you have a lot of overtly complex overlapping pieces (such as world brushes) then it will be a very poor tree. I believe it involves backtracking and managing the tree while creating it at the same time. You get poor balance and things like that. All of a sudden, when you're playing the game and parsing that portion of the tree, it gets very slow, because there's a cluster of nodes because of the poor brush configuration (as an example, I don't know if HL2 has any sort of contingency when creating the tree).
That's the only thing I can think of. It also leads to mis calculated portals, lighting, and things like that. But, if the thing is written properly, there will be some pre-processing step that goes through, clips all this stuff neatly (which it does) and eliminates parts that wont be seen and all that crap. But there's still situations where it's a problem and we already know that Source isn't the most optimized engine.
To be honest, it's a moot point, the source engine was built on outdated techniques. My best guess as to why they continue using this ancient technique is that's how it was done in quake. It's not how I would personally do it ... ever.
Blame it on Microsoft, God does.
Re: Overlapping world brushes in Source
Posted by Adam Hawkins on
Thu Apr 26th 2007 at 11:51am
Posted
2007-04-26 11:51am
858 posts
333 snarkmarks
Registered:
Aug 25th 2002
Occupation: Specialty Systems Manager
Location: Chesterfield, UK
It's to do with how faces are 'cut' when the map is compiled. If you let brushes intersect willy nilly, it will cut brush faces however it pleases. Placing the brushes (or shaping) them so that they dont overlap gives some control over face intersections and therefore a lower poly count.
Don't know about HL2 but activate wireframe view in HL1 to get an idea. My map Sorrow's poly counts would have been through the roof if i'd let everything overlap in order to save time.
You Got To Get Through What You've Got To Go Through To Get What You Want But You Got To Know What You Want To Get Through What You Got To Go Through
Re: Overlapping world brushes in Source
Posted by Kasperg_JM on
Fri Apr 27th 2007 at 1:22pm
66 posts
1589 snarkmarks
Registered:
May 20th 2006
Overlapping brushes have no effect in map performance, since BSP has
discarded those extra bits of brushes in the vbsp process. Vvis
interprets the resulting faces as if those overlapping sections never
existed. Portals and leafs are calculated after the tools have gotten
rid of them.
The only thing that they can affect is how long vbsp takes to do the
math, which is a very minimal amount of time compared to what vrad
takes to light up surfaces with a low lightmap scale.
It offers no real advantages either. If you avoid them, it will help your vmf look tidy, but not much more than that.
As far as I know.
Re: Overlapping world brushes in Source
Posted by Orpheus on
Sat Apr 28th 2007 at 1:21am
Orpheus
member
13860 posts
2024 snarkmarks
Registered:
Aug 26th 2001
Occupation: Long Haul Trucking
Location: Long Oklahoma - USA
There have been many threads discussing this topic. Some might even be in version 4.5 of this site so search them.
The general consensus is DON'T DO IT!!!
Now mind, everyone has their own personal opinions and all might, or might not have some personal experience to back it up so you will need to just take all of it with a grain of salt.
However, it is so easy to NOT overlap solids that discussing what the issues will be if doing so is rather a moot topic TBH.
My personally opinion is DON'T DO IT!!!
My experience with it is, that some maps have issues some do not. Its rather like the weird event of one map having high R_Speeds for an unobvious reason, and another having low R_Speeds, when all common rules say it should have high ones.
In other words, sometimes the rules just don't follow.
But the basic rule of thumb is, its so easy to NOT overlap solids that doing so is just plain lazy and stupid.
\opinion
The best things in life, aren't things.
Re: Overlapping world brushes in Source
Posted by Kasperg_JM on
Sat Apr 28th 2007 at 2:08am
66 posts
1589 snarkmarks
Registered:
May 20th 2006
The way the compile tools work, any faces and sections of world brushes
located inside another world brush or in the void will be discarded.
That means that no performance issue will ever derive from overlapping
brushes. VIS and RAD don't know they were ever there.
But since we are discussing Source mapping, it might be good to point
out that the use of func_detail adds a whole new parameter. Overlapping
func_details is a different issue, since the BSP process doesn't take
them into account when discarding faces (wireframe still shows
face-splitting though...) We might have a case of faces being rendered
and calculated by the compile process but discarded because they are
not inside a vis leaf...
It might be just a myth. But pulling a brush some extra units so that it enters another one is just not useful at all :smile:
I'd say anyone who is going to distribute rmf's or vmf's should think twice before doing sloppy brushwork.
Re: Overlapping world brushes in Source
Posted by Orpheus on
Sat Apr 28th 2007 at 2:24am
Orpheus
member
13860 posts
2024 snarkmarks
Registered:
Aug 26th 2001
Occupation: Long Haul Trucking
Location: Long Oklahoma - USA
I had a conversation with Scary_1 when I was, lets just say, more of a n00b than I am now.
I was working on Thrasher, which BTW had some major input from him. Sadly, I cannot even recall now if I ever added him to my txt file. I was such a n00b.
Anyway, he was scanning my rmf and asked me why I had so many overlapped solids. In my fear I told him straight up, I overlapped them to blend them better.
He laughed and told me in no uncertain terms that I was in error. The compile dosen't blend.
Anyway, it was he who told me to not ever overlap. I just took him at his word and to my knowledge have never knowingly overlapped again.
Mind, I do not count func_walls and their kin as solids to not overlap.
I have done experiments and found that the only real problem was increased compile times. You got to understand that back then, most of us had machines that were barely big enough.
Now, my machine wouldn't care about compiling an HL1 map of any kind. Back then, I had compiles of 10 to 15 hours+
Anywho....
The best things in life, aren't things.
Re: Overlapping world brushes in Source
Posted by Gorbachev on
Sat Apr 28th 2007 at 4:38am
1569 posts
264 snarkmarks
Registered:
Dec 1st 2002
Location: Vancouver, BC, Canada
It's going to split the face anyway when you do that, it's sloppy practice.
Re: Overlapping world brushes in Source
Posted by Orpheus on
Sat Apr 28th 2007 at 11:25am
Posted
2007-04-28 11:25am
Orpheus
member
13860 posts
2024 snarkmarks
Registered:
Aug 26th 2001
Occupation: Long Haul Trucking
Location: Long Oklahoma - USA
<DIV class=quote>
<DIV class=quotetitle>? quoting Kasperg_JM</DIV>
<DIV class=quotetext>
<DIV class=quote>
<DIV class=quotetitle>? quote:</DIV>
<DIV class=quotetext>It's going to split the face anyway when you do that, it's sloppy practice.</DIV></DIV>
Well, the choice is: Do we slipt them manually (clipping or creating the brushes one by one) or do we let the compiler do the job?
</DIV></DIV>
Neither. You make a bit on the end func_wall and stop it from happening. I assume that this would be preferable anyway.
[EDIT] Found my map Thrasher. I did thank Steve in it. Guess I wasn't such a n00b after all. :heee:
The best things in life, aren't things.
Re: Overlapping world brushes in Source
Posted by Kasperg_JM on
Sat Apr 28th 2007 at 11:49am
Posted
2007-04-28 11:49am
66 posts
1589 snarkmarks
Registered:
May 20th 2006
Face splitting is a natural part of the process needed for a BSP
structure. Leaving space (even one unit) instead of making brushes meet
each other just creates new portal information for VIS, making it much
harder to decide the leafs. Compile times will be much higher having
these micro-spaces throughout the map.
The reason this func_wall method was used was not for compiling
efficiency. It was to get a much better visual result. Face-splitting
taking up more time than leafthreading is yet another myth IMO.
In the case of those brushes in the screenshots, I guess turning the
whole thing into func_detail would do the trick if the other walls are
world brushes and the void is sealed.