Func detail: Difference between revisions
SirYodaJedi (talk | contribs) m (→Caveats) |
SirYodaJedi (talk | contribs) m (→Caveats) |
||
Line 18: | Line 18: | ||
* Detail brushes cannot be used to [[seal]] a map, or areaportal areas. | * Detail brushes cannot be used to [[seal]] a map, or areaportal areas. | ||
* Because detail brushes do not [[chop]] world brushes, light can seep underneath them if the other surface's [[lightmap]] scale is larger than the detail brush is wide/tall. If you encounter this, manually slice the underlying brush in two (with {{key|Shift|X}}). | * Because detail brushes do not [[chop]] world brushes, light can seep underneath them if the other surface's [[lightmap]] scale is larger than the detail brush is wide/tall. If you encounter this, manually slice the underlying brush in two (with {{key|Shift|X}}).{{modernConfirm|Doesn't [[VBSP]] merge coplanar faces to optimize world geometry (like [[HLCSG]]), making slicing the underlying brush pointless?}} | ||
** This effect can cause detail brushes with lots of surface contact to become inefficient, because the surface beneath them is being rendered too! | ** This effect can cause detail brushes with lots of surface contact to become inefficient, because the surface beneath them is being rendered too! | ||
** Detail brushes ''do'' chop ''each other'', however. | ** Detail brushes ''do'' chop ''each other'', however. |
Revision as of 08:22, 8 August 2023
Template:Entity It creates a brush that does not affect visibility or cause other brushes to be chopped. All brushwork that does not form the 'backbone' of the world (and that is not tied to a real entity) should be detail.
Valve provides an example map at sourcesdk_content\hl2\mapsrc\sdk_func_detail.vmf. You can also load up the HL2 map sources and hide detail brushes with their auto visgroup to see where Valve used them.

Effects
The point of creating a detail brush entity is to avoid creating an unnecessary number of visleaves for a mere detail of the map, hence the name of the entity. VBSP will allow visleaves to overlay details, and thus minimize visleaves and compile time.
Above are a world brush (left cylinder) and a detail brush (right cylinder). The blue lines are visleaf boundaries. The world brush has chopped the map into nine oddly-shaped segments, leading to longer compile times and marginally lower performance, while the detail brush has not changed anything.
Caveats
- Detail brushes cannot be used to seal a map, or areaportal areas.
- Because detail brushes do not chop world brushes, light can seep underneath them if the other surface's lightmap scale is larger than the detail brush is wide/tall. If you encounter this, manually slice the underlying brush in two (with ⇧ Shift+X).
Confirm:Doesn't VBSP merge coplanar faces to optimize world geometry (like HLCSG), making slicing the underlying brush pointless?
- This effect can cause detail brushes with lots of surface contact to become inefficient, because the surface beneath them is being rendered too!
- Detail brushes do chop each other, however.
- Surfaces on very thin (about 2 units thick) detail brushes have been known to disappear at certain distances. As a workaround, use func_brush instead.
- World brushes with translucent and/or transparent materials applied, or which are displacements, will be treated as detail, and cannot seal areas.
- World brushes w/ translucent material will still chop leaves, but to no effect.
- Detail brushes will, in some cases, merge faces with other detail brushes, and on occasion, world brushes, which can cause them to create leaves.
- Under normal conditions, any time a detail brush contacts a world brush, VBSP will note the junction and optimize it. This connection is known alternately as a T-junction and a water index, and there is a limit to the number of T-Junctions VBSP will attempt to fix (65,535). Excessive use of detail brushes in contact with world geometry could cause VBSP to abort compilation with an error. Using the
-notjunc
option will skip this optimization at the price of possible visual inconsistencies.
Note:Water, for unknown reasons, causes the t-junction count to skyrocket. Removing/reshaping bodies of water can overcome this.
Good candidates

Any brush which doesn't significantly block the player's view should probably be detail. Specific examples include:
- Pillars, plinths and supports
- Free-standing walls
- Suspended walkways
- Steps (create a smooth wedge-shaped world brush underneath)
- Small buildings
- Rotated brushes
- Very small or thin brushes
Keyvalues
- Minimum / Maximum DX Level (mindxlevel / maxdxlevel) <integer choices> (removed since
)
- The entity will not exist if the engine is running outside the given range of DirectX Versions.
Choices Warning:If these are used, the object may break when the user switches their DirectX settings.[missing string]
- 0 - Default (no bounding)
- 60 - DirectX 6 (!FGD for mindxlevel)
- 70 - DirectX 7
- 80 - DirectX 8 (GeForce4 Ti & FX 5000 series)
- 81 - DirectX 8.1 (GeForce FX 5800, 5900 & Radeon 8500/9100 and 9000/9200)
- 90 - DirectX 9 Shader Model 2
- 92 - OpenGL аналогичен DirectX 9 Shader Model 2 (using ToGL;
only) !FGD
- 95 - DirectX 9 Shader Model 3 (in all games since
)
- 98 - DirectX 9 Shader Model 3 on Xbox 360 (
only) !FGD