Image | Name | Allowed as world | Allowed as entity | Casts shadows | Has lightmap | Cuts visleaves | Solid to cliphull 1 | Solid to cliphull 2 | Solid to cliphull 3 | Solid to bullets | Info |
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | !cur_0 * | Yes | No | Yes | No | Yes | No | No | No | No | Acts like CONTENTWATER and func_pushable with a speed of 2048 units/s in +X. This texture is always fullbright. |
![]() | !cur_180 * | Yes | No | Yes | No | Yes | No | No | No | No | Acts like CONTENTWATER and func_pushable with a speed of 2048 units/s in -X. This texture is always fullbright. |
![]() | !cur_270 * | Yes | No | Yes | No | Yes | No | No | No | No | Acts like CONTENTWATER and func_pushable with a speed of 2048 units/s in -Y. This texture is always fullbright. |
![]() | !cur_90 * | Yes | No | Yes | No | Yes | No | No | No | No | Acts like CONTENTWATER and func_pushable with a speed of 2048 units/s in +Y. This texture is always fullbright. |
![]() | !cur_dwn * | Yes | No | Yes | No | Yes | No | No | No | No | Acts like CONTENTWATER and func_pushable with a speed of 2048 units/s in -Z. This texture is always fullbright. |
![]() | !cur_up * | Yes | No | Yes | No | Yes | No | No | No | No | Acts like CONTENTWATER and func_pushable with a speed of 2048 units/s in +Z. This texture is always fullbright. |
![]() | AAATRIGGER | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Identical to NULL , but shouldn't be used on world brushes as it may cause bugs. Useful for differentiating entities in the editor. |
![]() | BEVEL | Yes | Yes | Yes | No | No | No | Yes | No | Yes | |
![]() | BEVELHINT ** | Yes | Yes | Yes | No | No | No | Yes | No | Yes | Acts like SOLIDHINT and BEVEL . Eliminates unnecessary face subdivision and bevels clipnodes at the same time. Useful on complex shapes such as terrain, spiral staircase clipping, etc. |
![]() | black_HIDDEN | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Identical to NULL , but has a lightmap. Brushes with this texture can cast shadows. This texture will not render as black except in Sven Co-op. |
![]() | BOUNDINGBOX | No | Yes | No | No | No | No | No | No | No | Acts like ORIGIN ,
but can be used to define a bounding box for an entity. Useful if you
have a lot of complex, off-grid geometry and need a bounding box which
is snapped to the grid. |
![]() | CLIP | Yes | Yes | No | No | No | Yes | Yes | Yes | No | Creates clipnodes on all three cliphulls. |
![]() | CLIPBEVEL | Yes | Yes | No | No | No | No | No | Yes | No | Acts like BEVEL but for clipnodes. |
![]() | CLIPBEVELBRUSH | Yes | Yes | No | No | No | No | No | Yes | No | Acts like CLIPBEVEL , but affects every single face. |
![]() | CLIPHULL1 | Yes | Yes | No | No | No | Yes | No | No | No | Creates clipnodes on hull 1, used by standing players. |
![]() | CLIPHULL2 | Yes | Yes | No | No | No | No | Yes | No | No | Creates clipnodes on hull 2, used by large monsters (apache, gargantua, gonarch, etc). |
![]() | CLIPHULL3 | Yes | Yes | No | No | No | No | No | Yes | No | Creates clipnodes on hull 3, used by crouching players. |
![]() | CONTENTEMPTY | Yes | Yes | No | No | No | No | No | No | No | Removes collision from a brush and marks a brush as an empty volume. |
![]() | CONTENTWATER | Yes | Yes | Yes | No | Yes | No | No | No | Yes | Marks the brush as a water volume that will not render anything outside of it. It also removes collision from a brush and mirrors the faces inside out. When an entity, it is an empty volume with mirrored faces. |
![]() | HINT | Yes | Yes | No | No | Yes | No | No | No | No | Faces with this texture will split visleaves, allowing you to optimize
what parts of the map are visible. Other faces of the brush should be
textured with SKIP . |
![]() | NOCLIP | Yes | Yes | Yes | No | Yes | No | No | No | Yes | Acts like NULL , but no cliphulls are generated. Similar to the zhlt_noclip keyvalue in entities. |
![]() | NULL | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Removes the face of a brush it's applied to, however clipnodes are still generated. |
![]() | ORIGIN | No | Yes | No | No | No | No | No | No | No | Brushes with this texture will act as the point of origin for entities. |
![]() | SKIP | Yes | Yes | No | No | No | No | No | No | No | Ignores the face of a brush it's applied to. Should not be used on world geometry except with HINT , as it may cause bugs. |
![]() | sky | Yes | No | No | No | Yes | Yes | Yes | Yes | Yes | Renders the skybox on faces with this texture, and emits light if all faces of a brush are textured with SKY and you have a light_environment or light_spot entity. |
![]() | SOLIDHINT | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Used to eliminate unnecessary face subdivision, especially on complex shapes such as terrain. |
![]() | SPLITFACE * | Yes | Yes | No | No | No | No | No | No | No | |
![]() | translucent | Yes | No | Yes | Yes | Yes | No | No | No | No | Removes clipnodes and mirrors the brush faces inside out. |
*This tool texture functions normally in Vluzacn's ZHLT v34, but is missing from zhlt.wad
**This tool texture exists only in SDHLT v0.1
1. BEVEL
This texture acts likeNULL
, however it changes the clipnode of a brush
in a way that any player approaching the brush will not be collide with
the brush until their origin reaches the plane that the BEVEL
face lies on. It can be used to eliminate exterior corner clipping
bugs, and any remaining clipping bugs that the -cliptype precise
CSG
parameter may miss.1.1. BEVEL vs NULL
ReplacingNULL
with BEVEL
in your entire map is not always a
good idea. While it reduces clipnodes, it can also cause bad collision where players fall through floors, can walk inside walls, get stuck in an edge
where two walls meet, etc.2. SPLITFACE
Brushes with this texture will subdivide faces they touch along their edges, similarly tozhlt_chopdown
. Imagine your SPLITFACE
brush as a "cookie cutter" that cuts into any walls it touches.
Here's how it looks like in-game with
gl_wireframe 1
.
SPLITFACE
is useful for fixing lighting bugs where shadows "leak" out from behind opaque entities. In the following example, the big crate is a func_breakable
entity with the Light Flags keyvalue set to Opaque (Blocks Light).
The shadows won't be calculated properly unless we split the faces behind and below the crate along the dotted line.

Since you can't use
zhlt_chopdown
on a brush entity, this will have to be done by either creating a SPLITFACE
brush along the dotted line. Any of the following methods will work. My preferred method is the second one, where I make a copy of the crate and texture it with SPLITFACE
, to make it act like zhlt_chopdown.
This is how it looks like inside of the brush.

3. TRANSLUCENT
Removes clipnodes and mirrors the brush faces inside out.4. Download
- SDHLT v1.1.0 (recommended)
- Vluzacn's ZHLT v34