$detail

From Valve Developer Community
Jump to: navigation, search
Français
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.
Bug:
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.

Syntax

$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!
Bug:
Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place.

$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 = TCOMBINE_RGB_ADDITIVE_SELFILLUM_THRESHOLD_FADE 6
  • 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