$detail: Difference between revisions
m (→$detail_alpha_mask_base_texture: searching through code, i don't think valve ever finished making this.) |
(Overhaul formatting of parameters to be consistent) |
||
Line 17: | Line 17: | ||
You will probably want to use at least <code>$detailscale</code> (see below) as well. | You will probably want to use at least <code>$detailscale</code> (see below) as well. | ||
== | == Parameters and Effects == | ||
; <code>$detailtexturetransform <matrix></code> | |||
: Rotates, scales, etc. the detail texture. Requires DX9. {{VMT UVtransform}} | |||
; <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. | |||
; <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 | |||
; <code>$detailblendmode <[[int]]></code> | |||
: Defines 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 | |||
; <code>$detailtint "[<r [[float]]> <g [[float]]> <nowiki><b</nowiki> [[float]]>]"</code> | |||
: Modifies the colour of the detail texture. | |||
; <code>$detailframe <[[int]]></code> | |||
: The frame to start animated detail texture on. Requires DX9. | |||
; <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? Is this actually fully implemented?}} | |||
== <code>$detailtexturetransform <matrix></code> == | == <code>$detailtexturetransform <matrix></code> == | ||
Revision as of 16:01, 11 July 2018
$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.

Syntax
$detail <texture>
You will probably want to use at least $detailscale
(see below) as well.
Parameters and Effects
$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.
- center defines the point of rotation. Only useful if rotate is being used.
- 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.
- rotate rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.
- 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: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. [todo tested in ?]
Bug: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>
- Defines 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 "[<r float> <g float> <b float>]"
- 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? Is this actually fully implemented?
$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.
- center defines the point of rotation. Only useful if rotate is being used.
- 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.
- rotate rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.
- 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: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. [todo tested in ?]
Bug: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 = 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".Todo: Which base texture? Is this actually fully implemented?
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