This article's documentation is for anything that uses the Source engine. Click here for more information.

$detail: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
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.|dx9=1}}
{{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!}}|removed={{csgo}}}}
{{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?}}
{{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>.}}
|only={{csgo}}|shaders=WorldVertexTransition}}
}}
 
{{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

English (en)Français (fr)中文 (zh)Translate (Translate)
A detail texture (noise_detail_01), and its effect when applied to a material (left).

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 Half-Life 2: Episode Two.

Icon-Bug.pngBug:$Detail textures do not work in conjunction with some parameters :  [todo tested in ?]
Note.pngNote: In Counter-Strike: Global Offensive, LightmappedGeneric does not appear to even have $lightwarptexture as a parameter... So it 'cannot not' work.
Todo:  Document issues from other branches of source.
Todo:  Things that don't work in Alien Swarm, usually don't work in Left 4 Dead either. And vice versa. But it'd be better if someone could confirm this.
Note.pngNote: Previously it was stated that $blendmodulatetexture would only work with $detail in Counter-Strike: Global Offensive. however. This does appear to work, in at least Source 2013Team Fortress 2Alien Swarm and Counter-Strike: Global Offensive.

Syntax

$detail <texture>

You will probably want to use at least $detailscale (see below) as well.

Parameters and Effects

$detailtexturetransform

$detailscale

$detailblendfactor

$detailblendmode

$detailtint

$detailframe $detail_alpha_mask_base_texture

Counter-Strike: Global Offensive WorldVertexTransition Parameters

Confirm:are these limited to Counter-Strike: Global Offensive, or are they in some/all CS:GO engine branch–branch games?

$detail2

$detailscale2 $detailblendfactor2 $detailframe2 $detailtint2

Counter-Strike: Global OffensivePortal 2 SolidEnergy Parameters

Todo: Confirm if all of this information is actually true for Portal 2
Confirm:Is SolidEnergy available in CS:GO engine branch–branch games?
Note.pngNote:$detail1tint and $detail2tint do not exist on this Shader, they are missing in this list intentionally!
Icon-Important.pngImportant:$detail has very similar parameter names, but they are not the same!

$detail1 $detail1blendmode

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.
Note.pngNote:When using a $detail1, $detail2 will first be multiplied by $detail2!
1 Multiply $basetexture is multiplied by $detail2.
Note.pngNote:There is no way to control the strength of the effect.

$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 Half-Life 2 and in Half-Life 2: Episode One 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