$detail
$detail is a material shader parameter available in all
Source games. It specifies a texture which Source will use to add high-resolution detail to a material when it is viewed up close, by darkening or lightening the diffuse appropriately, depending on the $detailblendmode. You can also use a full color (as opposed to grayscale) image and blend it using $detailblendmode 2. It is very effective for increasing the apparent resolution of a texture, and was used extensively in
Half-Life 2: Episode Two, as well as
Portal 2 for the white tile textures's bumps.
$detail textures do not work in conjunction with some parameters:
- In



on LightmappedGeneric, Does not work with $seamless_scale. - In



on VertexLitGeneric. Does not work with $selfillumfresnel, if $bumpmap is used. - In


on LightmappedGeneric, Does not work with $lightwarptexture
Note:
- In
, LightmappedGeneric does not appear to even have $lightwarptexture as a parameter... So it cannot "not work". - In

on VertexLitGeneric, Does not work with $desaturatewithbasealpha - In
, Does not work with $blendmodulatetexture and $bumpmap
- In
- Todo: Document issues from other branches of source.
Bug:Using $detailwith $blendmodulatetexture will cause a graphical issue (stripes over the surface), only works correctly in
and
. (tested in:
)
Syntax
$detail <texture>
You will probably want to use at least $detailscale (see below) as well.
Parameters and Effects
{{MatParam |$detailblendmode| int | How to combine the detail material with the diffuse or albedo.
- There are 12 different detail blend methods that can be used, although not all modes are available with all shaders (see below).
- The blend modes are implemented in

stdshaders/common_ps_fxc.h.
| Mode | Effect | Description |
|---|---|---|
| 0 | DecalModulate | This functions the same as the DecalModulate shader—colors below 128 darken the image, colors above lighten the image.
|
| 1 | Additive | The color of the detail texture is added to the base texture. This is similar to $additive, except it is affected by lighting (see blend mode 5). |
| 2 | Translucent Detail | The detail texture is applied as a translucent overlay on top of the base texture. |
| 3 | Blend Factor Fade | The detail texture is applied as a translucent overlay, but ignoring its alpha channel. Instead, the blend factor is used to determine how much of the base texture shows through underneath. |
| 4 | Translucent Base | This effectively flips the normal layering of the two textures. The detail texture appears "below," with the base alpha channel controlling it as a translucent overlay. The detail alpha channel controls the overall material alpha—for translucency, masking, or other uses. $basetexture%alphatexture. |
| 5 | Unlit Additive | The color of the detail texture is added to the base texture identically to mode 1, but this color is unaffected by lighting and therefore appears to glow. |
| 6 | Unlit Additive Threshold Fade | This adds color unaffected by lighting like mode 5, but first modifies the color added in two modes, depending on if the blend factor is above or below 0.5. Clarify: Modifies how? |
| 7 | Two-Pattern DecalModulate | Only the red and alpha channels of the detail texture are used. This operates like the DecalModulate shader or blend mode 0, but the base alpha channel fades between using the red (0) or alpha (255) detail channel as the modulation source. This effectively allows two detail materials, although both are greyscale.
|
| 8 | Multiply | The color of the base channel is multiplied by that of the detail texture. Effectively makes $detail an ambient occlusion texture. |
| 9 | Base Mask via Detail Alpha | Only the detail alpha channel is used. It is multiplied with the base texture's alpha channel to produce the final alpha value. |
| 10 | Self-Shadowed Bumpmap | The detail texture is used as a (possibly additional) $ssbump bumpmap. The blend factor is ignored.
|
| 11 | SSBump Albedo | Utilises a SSBump Texture like an Ambient Occlusion Texture. This is done by calculating the above-average 'Luminance' of the SSBump.
Calculated as |
| Branch | Shader | Limitation |
|---|---|---|
| |
LightmappedGeneric | Modes 1-6 and 8 are not supported. Mode 9 does not work with $bumpmap, $envmap, $selfillum. |
| |
WorldVertexTransition | Modes 1-6, 8-9 are not supported. Mode 7 does not work with $blendmodulatetexture. |
| |
VertexLitGeneric | Modes 10+11 are not supported. 0-4 and 7 always work (with or without $bumpmap) 5+6 only work with $phong or without $bumpmap. 8+9 only work without $bumpmap. |
| |
Lightmapped_4WayBlend | Modes 1-6 are not supported. |
| |
LightmappedGeneric WorldVertexTransition |
Modes 2-9 are not supported. Modes 0+1 always work. Mode 10 does not work with $ssbump. Workarounds: For mode 2, use WorldTwoTextureBlend. For mode 8, use LightmappedTwoTexture. |
| |
VertexLitGeneric | Modes 10+11 are not supported. 0-4 always work (with or without $bumpmap) 5+6 only work with $phong or without $bumpmap. 7-9 only work without $bumpmap. |
| |
LightmappedGeneric WorldVertexTransition |
Mode 6 is not supported. Mode 7 does not work with $bumpmap2, $softedges and $blendmodulatetexture. |
| |
All shaders | Modes 1, 4, 6, 9, and 10 are not supported. |
$detailframe
$detail_alpha_mask_base_texture
WorldVertexTransition Parameters
$detailscale2
$detailblendfactor2
$detailframe2
$detailtint2

SolidEnergy Parameters
$detail has very similar parameter names, but they are not the same! $detail1
$detail1blendmode
$detail1scale
$detail1blendfactor
$detail1frame
$detail2
$detail2blendmode
$detail2scale
$detail2blendfactor
$detail2frame
Valve's Detail Textures
Valve's stock detail textures (available in OB only) are best used with the following pre-configured values:
$detail detail\noise_detail_01 // e.g. for brickwork, concrete... $detailscale 7.74 $detailblendfactor 0.8 $detailblendmode 0
$detail detail\metal_detail_01 $detailscale 4.283 $detailblendfactor .65 $detailblendmode 0
$detail detail\rock_detail_01 $detailscale 11 $detailblendfactor 1 $detailblendmode 0
$detail detail\plaster_detail_01 $detailscale 6.783 $detailblendfactor .8 $detailblendmode 0
The below parameters come from models\props_forest\LadderWood.vmt. It is the only Valve Stock texture VMT file to use this particular detail texture. Because the detail texture (detail\wood_detail_01) is a high resolution (1024×1024), the $detailscale is lower than the others, with the exception of rock_detail_01.
$detail detail\wood_detail_01 $detailscale 2.563 $detailblendfactor .8 $detailblendmode 0
Additionally, there are 2 other stock detail textures. detail\detailash001a and detail\detaildirt001a. These files were used in the "leaked" version of
Half-Life 2 and in
Half-Life 2: Episode One using the following parameters.
Concrete/concretefloor009a in Episode One materials:
$detail detail/detaildirt001a $detailscale 0.27
Metal/metalfloor005a in Episode One materials:
$detail detail/detailash001a $detailscale 0.50
See also
Hiding large-scale tiling with detail textures - How to make texture repeating less noticeable using $detail
