VERC: Detail textures in Half-Life Last edited 11 months ago2023-04-10 14:41:18 UTC

First off, what are detail textures? A detail texture is simply an extra texture that is faded in as you get closer to a surface, providing extra detail instead of the usual blur when a texture is enlarged. A picture tells a thousand words, so have a look at image one and see how much of a difference detail textures can make.
Close-up of a texture, with detail texture (right) and without (left)Close-up of a texture, with detail texture (right) and without (left)
So, how do you get detail textures into your map? Well, you'll need two things: the detail textures themselves and what I call a "detail texture list file".

The Detail Textures

The detail textures themselves are simply images, usually with 50% grey used as a base colour. Darker and lighter greys are used to make shadows and highlights. Detail textures should be a power of two in size, as 256x256 is the maximum size Half-Life will load. I found that 128x128 often works well. When you've got the detail texture looking how you want it, save it in the gfx/detail/ folder as a 24-bit uncompressed TGA. It's important you get that bit right - any other format and Half-Life won't load it properly.
The detail texture used to produce image oneThe detail texture used to produce image one

Detail Texture List File

The list file is what tells Half-Life which detail textures to use on which surfaces of your map. It is a plain text file and should be placed in the same directory as your BSP. It should have the same name as your map with "_detail.txt" appended. For example, if I was adding detail textures to ns_example.bsp, then the list file would be called ns_example_detail.txt.

The list file should contain one line for each texture you want to have a detail texture. Each line should have four items, seperated with tabs. The first item is the Half-Life texture name. The second item is the path to the detail texture, relative to the gfx directory and without the extension. The third and fourth items specify the x and y scaling for the detail texture. If that all sounded a bit confusing, here's an example: say I wanted to use the detail texture gfx/detail/ground3.tga wherever the texture out_pav3 occurs. I might use a line looking like this:
out_pav3    detail/ground3    10.0    10.0
And that's it! If you load up your map, you should see the detail texture.

Notes

This article was originally published on Valve Editing Resource Collective (VERC).
The archived page is available here.
TWHL only publishes archived articles from defunct websites, or with permission. For more information on TWHL's archiving efforts, please visit the TWHL Archiving Project page.

1 Comment

Commented 9 months ago2023-06-20 17:06:31 UTC Comment #105364
A couple things I want to note, but am not putting directly on the page (as it's an archived tutorial):
  • The TGAs used for detail textures can be RLE compressed, as long as they don't have an alpha channel (they don't use it anyway).
  • I think 512x512 detail textures are supported on modern hardware; don't quote me on that, though.
  • Users whose GPUs have blocked the GL_ARB_multitexture extension (such as for enabling overbright lighting without Xash) will not be able to enable detail texturing.
  • As of late 2019, detail textures on non-power-of-two WAD textures do not display correctly when mipmapping is enabled (unless gl_round_down is enabled, probably).

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