$detail: Difference between revisions
Line 30: | Line 30: | ||
{{MatParam|$detailblendfactor|normal|Controls the amount that the detail texture affects the base texture. The precise use of this depends on the blend factor; in most cases it acts similarly to [[$alpha]]. A value of 0 usually makes the detail texture have no effect, whilst a value of 1 applies the full effect.}} | {{MatParam|$detailblendfactor|normal|Controls the amount that the detail texture affects the base texture. The precise use of this depends on the blend factor; in most cases it acts similarly to [[$alpha]]. A value of 0 usually makes the detail texture have no effect, whilst a value of 1 applies the full effect.}} | ||
{{MatParam|$detailblendmode|int|How to combine the detail material with the albedo. | {{MatParam|$detailblendmode|int|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. | ||
:The blend modes are implemented in <code>stdshaders/common_ps_fx.h</code>. | :The blend modes are implemented in <code>stdshaders/common_ps_fx.h</code>. | ||
Line 96: | Line 96: | ||
* In {{as}}{{ent|LightmappedGeneric}} and {{ent|WorldVertexTransition}} Mode 6 is not supported. Additionally 7 does not work with {{ent|$bumpmap2}}, {{ent|$softedges}} and {{ent|$blendmodulatetexture}}. | * In {{as}}{{ent|LightmappedGeneric}} and {{ent|WorldVertexTransition}} Mode 6 is not supported. Additionally 7 does not work with {{ent|$bumpmap2}}, {{ent|$softedges}} and {{ent|$blendmodulatetexture}}. | ||
* In {{l4d2}} Modes 1, 4, 6, 9, and 10 are not supported. | * In {{l4d2}} Modes 1, 4, 6, 9, and 10 are not supported. | ||
}} | |||
{{MatParam|$detailtint|RGB matrix|Color tint of the detail texture. | {{MatParam|$detailtint|RGB matrix|Color tint of the detail texture. | ||
Line 105: | Line 106: | ||
}} | }} | ||
{{MatParam|$detailframe|int|The frame to start an animated <code>$detail</code> texture on. | {{MatParam|$detailframe|int|dx9=1|The frame to start an animated <code>$detail</code> texture on.}} | ||
{{MatParam|$detail_alpha_mask_base_texture|bool|{{ent|WorldVertexTransition}} only. When enabled, causes the level of detail alpha to determine "base texture blending."{{important|Since '''at minimum''' {{src13}} this parameter does not actually do anything! | {{MatParam|$detail_alpha_mask_base_texture|bool|removed={{csgo}}|{{ent|WorldVertexTransition}} only. When enabled, causes the level of detail alpha to determine "base texture blending."{{important|Since '''at minimum''' {{src13}} this parameter does not actually do anything!}}}} | ||
<br> | <br> | ||
=== {{csgo}} <tt>WorldVertexTransition</tt> Parameters === | === {{csgo}} <tt>WorldVertexTransition</tt> Parameters === | ||
{{ | {{Confirm|are these limited to {{csgo}}, or are they in some/all {{csgobranch}}–branch games?}} | ||
{{MatParam|$detail2|texture|Detail texture for {{ent|WorldVertexTransition}}'s second layer. | |||
{{MatParam|$detail2|texture|only={{csgo}}|shaders=WorldVertexTransition| | |||
Detail texture for {{ent|WorldVertexTransition}}'s second layer. | |||
{{Note|{{ent|LightmappedGeneric}} technically has support for these parameters and other <code>WorldVertexTransition</code> parameters, but they may not work as expected.}} | {{Note|{{ent|LightmappedGeneric}} technically has support for these parameters and other <code>WorldVertexTransition</code> parameters, but they may not work as expected.}} | ||
{{Note|There is no <code>$detailtransform2</code>, the Shader will use {{ent|$basetexturetransform2}} instead! }} | {{Note|There is no <code>$detailtransform2</code>, the Shader will use {{ent|$basetexturetransform2}} instead! }} | ||
{{important|Requires both <code>$detail</code> and <code>$basetexture2</code> to be present!}} | {{important|Requires both <code>$detail</code> and <code>$basetexture2</code> to be present!}} | ||
{{Bug|Cannot be used with <code>$detailblendmode "9"</code>.}} | {{Bug|Cannot be used with <code>$detailblendmode "9"</code>.}} | ||
}} | |||
{{MatParam|$detailscale2|float|Detail scale for <tt>$detail2</tt>.|only={{csgo}}|shaders=WorldVertexTransition}} | {{MatParam|$detailscale2|float|Detail scale for <tt>$detail2</tt>.|only={{csgo}}|shaders=WorldVertexTransition}} | ||
{{MatParam|$detailblendfactor2|normal|Detail blend factor for <tt>$detail2</tt>. {{Note|<code>$detailblendfactor</code> and <code>$detailblendfactor2</code> are blended together before combining with the basetexture.}}|only={{csgo}}|shaders=WorldVertexTransition}} | {{MatParam|$detailblendfactor2|normal|Detail blend factor for <tt>$detail2</tt>. {{Note|<code>$detailblendfactor</code> and <code>$detailblendfactor2</code> are blended together before combining with the basetexture.}}|only={{csgo}}|shaders=WorldVertexTransition}} |
Revision as of 03:05, 18 March 2023
Template:Shaderparam It specifies a texture which Source will use to add high-resolution detail to a material when it 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 Half-Life 2: Episode Two.

$Detail
textures do not work in conjunction with some parameters : [todo tested in ?]- In
on LightmappedGeneric, Does not work with $seamless_scale.
- In
on VertexLitGeneric. Does not work with $selfillumfresnel, if $bumpmap is used.
- In
on LightmappedGeneric, Does not work with $lightwarptexture
- In
on VertexLitGeneric, Does not work with $desaturatewithbasealpha
- In
, Does not work with $blendmodulatetexture and $bumpmap
- Todo: Document issues from other branches of source.
Syntax
$detail <texture>
You will probably want to use at least $detailscale
(see below) as well.
Parameters and Effects
$detailframe
$detail_alpha_mask_base_texture
WorldVertexTransition Parameters
$detailscale2
$detailblendfactor2
$detailframe2
$detailtint2

SolidEnergy Parameters




$detail
has very similar parameter names, but they are not the same! - There are 2 different detail blend methods that can be used.
Mode | Effect | Description |
---|---|---|
0 | DecalModulate | This functions the same as the DecalModulate shader—colors below 128 darken the image, colors above lighten the image. |
1 | Multiply | $basetexture is multiplied by $detail1, Alpha of the $basetexture controls the strength of the effect. Black parts have full multiplication, White parts have no multiplication. |
$detail1scale
$detail1blendfactor
$detail1frame
$detail2
$detail2blendmode
- There are 2 different detail blend methods that can be used.
Mode | Effect | Description |
---|---|---|
0 | Additive | Adds $detail2 onto the $basetexture. ![]() |
1 | Multiply | $basetexture is multiplied by $detail2. ![]() |
$detail2scale
$detail2blendfactor
$detail2frame
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 (1024×1024), 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 and 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
See Also
Hiding large-scale tiling with detail textures - How to make texture repeating less noticeable using $detail