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) 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 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
- Detail textures only appear if the cvar
r_detailtextures
is set to 1
- The contrast of the detail texture determines how far away it appears. Light values appear when you are close to the texture; dark values appear when you are further away.
- Detail textures don't appear correctly when additive rendermodes are used, but do appear properly when solid rendermodes are used.
- Be careful with random-tiling textures (
-0texture, -1texture
) - you need an entry in the list file for each texture in the set. - You can use colour in your detail textures - the texture will be drawn in colour but the contrast still determines opacity
GL_ARB_multitexture
extension (such as for enabling overbright lighting without Xash) will not be able to enable detail texturing.gl_round_down
is enabled, probably).