$detail: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 19: Line 19:
== Additional parameters ==
== Additional parameters ==


; <code>$detailtexturetransform <matrix></code>
;  
== <code>$detailtexturetransform <matrix></code> ==
 
: Rotates, scales, etc. the detail texture. Requires DX9. {{VMT UVtransform}}
: Rotates, scales, etc. the detail texture. Requires DX9. {{VMT UVtransform}}
; <code>$detailscale <[[float]]></code>
;  
== <code>$detailscale <[[float]]></code> ==
 
: Fits the detail texture onto the material the given number of times (default = 4). Generally used instead of <code>$detailtexturetransform</code> with a value of around 7 or 8 for a 128px detail texture.
: Fits the detail texture onto the material the given number of times (default = 4). Generally used instead of <code>$detailtexturetransform</code> with a value of around 7 or 8 for a 128px detail texture.
; <code>$detailblendfactor <[[normal]]></code>
;  
== <code>$detailblendfactor <[[normal]]></code> ==
 
: Effectively an <code>[[$alpha]]</code> value for the detail texture.
: Effectively an <code>[[$alpha]]</code> value for the detail texture.
; <code>$detailblendmode <[[int]]></code>
 
==  <code>$detailblendmode <[[int]]></code> ==
 
: How to combine the detail material with the albedo.
: How to combine the detail material with the albedo.
There are 12 different detail blend methods that can be used.
There are 12 different detail blend methods that can be used.
Taken from common_ps_fx.h  
Taken from common_ps_fx.h  
:*0 =  original mode
:*0 =  original mode


Line 55: Line 65:
:*12 = there is no detail texture
:*12 = there is no detail texture


;
== <code>$detailtint "<[[RGB]] matrix>"</code> ==


; <code>$detailtint "<[[RGB]] matrix>"</code>
: Modifies the colour of the detail texture.
: Modifies the colour of the detail texture.
; <code>$detailframe <int></code>
;  
== <code>$detailframe <int></code> ==
 
: The frame to start animated detail texture on. Requires DX9.
: The frame to start animated detail texture on. Requires DX9.
; <code>$detail_alpha_mask_base_texture <[[bool]]></code>
;  
== <code>$detail_alpha_mask_base_texture <[[bool]]></code> ==
 
: <code>[[WorldVertexTransition]]</code> only. When enabled, causes the level of detail alpha to determine "base texture blending". {{todo|''Which'' base texture?}}
: <code>[[WorldVertexTransition]]</code> only. When enabled, causes the level of detail alpha to determine "base texture blending". {{todo|''Which'' base texture?}}



Revision as of 17:27, 27 May 2014

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.

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