$detail: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 30: Line 30:
== <code>$detailblendfactor <[[normal]]></code> ==
== <code>$detailblendfactor <[[normal]]></code> ==


: Effectively an <code>[[$alpha]]</code> 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
: Effectively an <code>[[$alpha]]</code> 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


==  <code>$detailblendmode <[[int]]></code> ==
==  <code>$detailblendmode <[[int]]></code> ==

Revision as of 19:35, 3 January 2015

Template:Otherlang2

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.pngTip:A bump map can perform the same job as a detail texture, but is more expensive.
Icon-Bug.pngBug: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.  [todo tested in ?]

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 horizontal X axis while the vertical Y axis is still at original scale.
  3. rotate rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.
  4. translate shifts the texture by the given numbers. .5 will shift it half-way. 1 will shift it once completely over, which is the same as not moving it at all.
Note.pngNote:All values must be included!
Icon-Bug.pngBug:Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place.  [todo tested in ?]
Icon-Bug.pngBug: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.  [todo tested in ?]

$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

--Redspike474 00:32, 28 May 2014 (UTC)

$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".
Todo: 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