Tool Textures Last edited 1 month ago2024-09-02 13:38:37 UTC

Tool textures are special textures which control how the map is compiled. These are the tool textures used by Vluzacn's ZHLT v34. They are found in halflife.wad and zhlt.wad. For detailed usage of each texture, refer to its individual wiki page.

In general, tool textures can be divided into two types: The tool textures in zhlt.wad helps you differentiate between these types by an inset of the related texture type in the top left corner e.g.:

Legend

Z - Compiler & wad availability
Usually available in standard WADs for a given GoldSrc game e.g. halflife.wad
Z Used by ZHLT but only available in zhlt.wad
Z* Used by ZHLT but not included in zhlt.wad
Properties
🏢 Allowed as World
🚪 Allowed as Entity
Casts Shadow as world brush
🌓 Has LightMap
✂️ Cuts VisLeafs
Visibility
👀 Texture is Visible in game
🫥 Textured face is inVisible, but the rest of the brush is
Brush becomes inVisible
Clipnode generation
0️⃣ Point hull (bullets, weapons, projectiles)
1️⃣ Player hull
2️⃣ Large monsters hull
3️⃣ Crouching hull

Tool Textures

Image Name Z W E S LM VL V H0 H1 H2 H3 Description
N/A !cur_0 Z* 🏢 ✂️ 👀 Acts like CONTENTWATER and trigger_push with a speed of 2048 units/s in +X. [note1]
N/A !cur_180 Z* 🏢 ✂️ 👀 Acts like CONTENTWATER and trigger_push with a speed of 2048 units/s in -X. [note1]
N/A !cur_270 Z* 🏢 ✂️ 👀 Acts like CONTENTWATER and trigger_push with a speed of 2048 units/s in -Y. [note1]
N/A !cur_90 Z* 🏢 ✂️ 👀 Acts like CONTENTWATER and trigger_push with a speed of 2048 units/s in +Y. [note1]
N/A !cur_dwn Z* 🏢 ✂️ 👀 Acts like CONTENTWATER and trigger_push with a speed of 2048 units/s in -Z. [note1]
N/A !cur_up Z* 🏢 ✂️ 👀 Acts like CONTENTWATER and trigger_push with a speed of 2048 units/s in +Z. [note1]
User posted image
AAATRIGGER 🏢 🚪 ✂️ 🫥 0️⃣ 1️⃣ 2️⃣ 3️⃣ Used for differentiating entities in the editor, and shouldn't be used on world brushes as it may cause bugs. VHLT strips faces with this texture, making it visually identical to NULL.
User posted image
BEVEL Z 🏢 🚪 0️⃣ 2️⃣ Acts like NULL, but 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.
User posted image
black_HIDDEN Z 🏢 🚪 🌓 ✂️ 🫥 0️⃣ 1️⃣ 2️⃣ 3️⃣ Acts like NULL, but has a lightmap. Brushes with this texture can cast shadows.
User posted image
BOUNDINGBOX Z 🚪 Similar to ORIGIN, but 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.
User posted image
CLIP 🏢 🚪 1️⃣ 2️⃣ 3️⃣ Creates clipnodes on all three cliphulls.
User posted image
CLIPBEVEL Z 🏢 🚪 0️⃣ Acts like BEVEL but for clipnodes.
User posted image
CLIPBEVELBRUSH Z 🏢 🚪 0️⃣ Acts like CLIPBEVEL, but affects every single face.
User posted image
CLIPHULL1 Z 🏢 🚪 1️⃣ Creates clipnodes on hull 1, used by standing players.
User posted image
CLIPHULL2 Z 🏢 🚪 2️⃣ Creates clipnodes on hull 2, used by large monsters (apache, gargantua, gonarch, etc).
User posted image
CLIPHULL3 Z 🏢 🚪 3️⃣ Creates clipnodes on hull 3, used by crouching players.
User posted image
CONTENTEMPTY Z 🏢 🚪 🫥 Removes collision from a brush and marks it as an empty volume.
User posted image
CONTENTWATER Z 🏢 🚪 ✂️ 🫥 0️⃣ 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.
User posted image
HINT Z 🏢 🚪 ✂️ Faces with this texture will split visleafs, allowing you to optimize what parts of the map are visible. Other faces of the brush should be textured with SKIP.
User posted image
NOCLIP Z 🏢 🚪 ✂️ 0️⃣ Acts like NULL, but no cliphulls are generated. Similar to the zhlt_noclip keyvalue in entities.
User posted image
NULL Z 🏢 🚪 ✂️ 🫥 0️⃣ 1️⃣ 2️⃣ 3️⃣ Removes the face of a brush it's applied to, however clipnodes are still generated.
User posted image
ORIGIN 🚪 The center of brushes with this texture defines the origin point for entities.
User posted image
SKIP Z 🏢 🚪 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.
User posted image
SKY 🏢 ✂️ 0️⃣ 1️⃣ 2️⃣ 3️⃣ 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. Clipnode generation is optional with VHLT and can be turned off with CSG parameter -noskyclip.
User posted image
SOLIDHINT Z 🏢 🚪 ✂️ 🫥 0️⃣ 1️⃣ 2️⃣ 3️⃣ Used to eliminate unnecessary face subdivision, especially on complex shapes such as triangular terrain.
N/A SPLITFACE Z* 🏢 🚪 Brushes with this texture will subdivide faces they touch. It can be used to eliminate bad lighting caused by opaque entities.
User posted image
translucent - 🏢 🌓 ✂️ 👀 Removes clipnodes and mirrors the brush faces inside out. All @ prefixed textures exhibit this property.
Image Name Z W E S LM VL V H0 H1 H2 H3 Description
Notes:
  1. Rendered as water, and completely fullbright

Legend

Z - Compiler & wad availability
Usually available in standard WADs for a given GoldSrc game e.g. halflife.wad
Z Used by ZHLT but only available in zhlt.wad
Z* Used by ZHLT but not included in zhlt.wad
Properties
🏢 Allowed as World
🚪 Allowed as Entity
Casts Shadow as world brush
🌓 Has LightMap
✂️ Cuts VisLeafs
Visibility
👀 Texture is Visible in game
🫥 Textured face is inVisible, but the rest of the brush is
Brush becomes inVisible
Clipnode generation
0️⃣ Point hull (bullets, weapons, projectiles)
1️⃣ Player hull
2️⃣ Large monsters hull
3️⃣ Crouching hull

1 Comment

Commented 9 months ago2023-12-16 09:30:25 UTC Comment #105738
I made a version with legends and emojis. The aim is threefold:
  1. trim the wasted space the table headers are using, and give more space for the description column
  2. Immediately infer the properties with emojis without constantly having to look up the yes/no columns back to the header way up the page
  3. hopefully get this to display better on mobile
For now it's in this comment for my personal use. If feedback is favourable then we can merge this version into the main page.
merged to main page 2024-05-03
2024-06-09
  • for the !cur textures, you can make them invisible by using the _HIDDEN suffix, so !cur_0 becomes !cur_0_HIDDEN

2024-08-29
  • _HIDDEN suffixes doesn't work in entities for some reason. since models don't take lighting from brush entities anyway there's no use case for it, so probably just use NULL instead.
  • Found a way to use tool textures in a way which imparts its properties, but without having it be part of any resulting face of the brush, but it only works on MAP files. You just insert an additional line defining a plane of the brush using the tool texture of interest, but the plane is way, way out towards the extremities of the map that it never intersects with any other planes of the brush:
{
( 80 144 96 ) ( 80 144 32 ) ( 80 208 96 ) NULL [ 0 -1 0 0 ] [ 0 0 -1 16 ] 0 1 1
( 144 144 96 ) ( 144 144 32 ) ( 80 144 96 ) NULL [ 1 0 0 0 ] [ 0 0 -1 16 ] 0 1 1
( 80 208 32 ) ( 80 144 32 ) ( 144 208 32 ) NULL [ -1 0 0 -0 ] [ 0 -1 0 0 ] 0 1 1
( 144 144 96 ) ( 80 144 96 ) ( 80 208 96 ) NULL [ 1 0 -0 0 ] [ 0 -1 0 0 ] 0 1 1
( 144 144 96 ) ( 144 208 32 ) ( 144 144 32 ) NULL [ 0 1 0 -0 ] [ 0 0 -1 16 ] 0 1 1
( 144 208 32 ) ( 144 144 96 ) ( 80 208 96 ) NULL [ 1 0 -0 0 ] [ 0 -1 0 0 ] 0 1 1
( 80 208 96 ) ( 80 208 32 ) ( 144 208 32 ) NULL [ -1 0 0 -0 ] [ 0 0 -1 16 ] 0 1 1
( 32767 32768 32768 ) ( 32768 32768 32767 ) ( 32768 32767 32768 ) !CUR_0 [ -0.707107 0.707107 0 0 ] [ 0.408248 0.408248 -0.816497 0 ] 0 1 1
}
  • The above spawns a NULL brush but with cur_0 contents. I figure a map pre-processor like MESS could implement this featur, inserting tool texture faces into the resulting brush defs in the output .map.

You must log in to post a comment. You can login or register a new account.