From Valve Developer Community
Jump to: navigation, search
A detail texture (noise_detail_01), and its effect when applied to a material (left).

$detail specifies a texture with which Source will add high-resolution detail when the material is viewed up close, by darkening or lightening the albedo 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 Episode Two. The effect is useable in all Source Engine based games.

Tip:A bump map can perform the same job as a detail texture, but is more expensive.
Detail textures do not currently work in conjunction with $seamless_scale. Enabling them to work together would require a programmer to edit the used shader.


$detail <texture>

You will probably want to use at least $detailscale (see below) as well.

Additional parameters

$detailtexturetransform <matrix>

Rotates, scales, etc. the detail texture. Requires DX9.
The default position is "center .5 .5 scale 1 1 rotate 0 translate 0 0".
  1. center defines the point of rotation. Only useful if rotate is being used.
  2. scale fits the texture into the material the given number of times. '2 1' is a 50% scale in the X axis.
  3. rotate rotates the texture anti-clockwise. Accepts any number, including negatives.
  4. translate shifts the texture by the given number of heights/widths. '.5' will shift it half-way.
Note:All values must be included!
Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place.
Rotating textures applied on brushes will rotate around the map origin (confirm: Orangebox engine only?). A fix for this is to change the center position in the VMT to the brush's origin.

$detailscale <float>

Fits the detail texture onto the material the given number of times (default = 4). Generally used instead of $detailtexturetransform with a value of around 7 or 8 for a 128px detail texture.

$detailblendfactor <normal>

Effectively an $alpha value for the detail texture. The set value will determine the visibility of the detail texture.

For example, a value of 0.1 will make your texture nearly invisible; while a value of 0.98 will be almost fully visible

$detailblendmode <int>

How to combine the detail material with the albedo.

There are 12 different detail blend methods that can be used. Taken from common_ps_fx.h

  • 0 = original mode
  • 1 = ADDITIVE base.rgb+detail.rgb*fblend
  • 2 = alpha blend detail over base
  • 3 = straight fade between base and detail.
  • 4 = use base alpha for blend over detail
  • 5 = add detail color post lighting
  • 6 = Similar to 5, but fade in an unusual way - instead of fading out color, remap an increasing band of it from 0..1
  • 7 = use alpha channel of base to select between mod2x channels in r+a of detail
  • 8 = multiply
  • 9 = use alpha channel of detail to mask base
  • 10 = use detail to modulate lighting as an ssbump
  • 11 = detail is an ssbump but use it as an albedo. shader does the magic here - no user needs to specify mode 11
  • 12 = there is no detail texture

$detailtint "<RGB matrix>"

Modifies the colour of the detail texture.

$detailframe <int>

The frame to start animated detail texture on. Requires DX9.

$detail_alpha_mask_base_texture <bool>

WorldVertexTransition only. When enabled, causes the level of detail alpha to determine "base texture blending". To do: Which base texture?

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 (1024x1024), 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 & 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