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
m (updated language bar. also some formatting.)
Line 1: Line 1:
{{otherlang2
{{lang|$detail}}{{source topicon}}
|fr=$detail:fr
}}
[[Image:Detail.jpg|frame|right|A detail texture (noise_detail_01), and its effect when applied to a material (left).]]
[[Image:Detail.jpg|frame|right|A detail texture (noise_detail_01), and its effect when applied to a material (left).]]


{{shaderparam|$detail}} 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 <code>$detailblendmode</code>. You can also use a full color (as opposed to grayscale) image and blend it using <code>$detailblendmode 2</code>. It is very effective for increasing the apparent resolution of a texture, and was used extensively in [[Episode Two]].
{{shaderparam|$detail}} 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 <tt>$detailblendmode</tt>. You can also use a full color (as opposed to grayscale) image and blend it using <tt>$detailblendmode 2</tt>. It is very effective for increasing the apparent resolution of a texture, and was used extensively in {{hl2ep2|2}}.
 
{{bug|Detail textures do not currently work in conjunction with {{ent|$seamless_scale}}. Enabling them to work together would require a programmer to edit the used shader.}}
{{bug|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.}}
{{bug|Detail textures are not compatible with {{ent|$blendmodulatetexture}} except in {{csgo}}.}}
{{bug|Detail textures are not compatible with [[$blendmodulatetexture]] except in {{csgo}}}}


== Syntax ==
== Syntax ==
Line 16: Line 13:


== Parameters and Effects ==
== Parameters and Effects ==
 
{{MatParam|$detailtexturetransform|matrix|Rotates, scales, etc. the detail texture. {{VMT UVtransform}}|dx9=1}}{{bug|Does not currently function at all in {{csgo}}.}}
{{MatParam|$detailtexturetransform|matrix|Rotates, scales, etc. the detail texture. {{VMT UVtransform}}|dx9=1}}
:{{bug|Does not currently function at all in {{csgo}}.}}
{{MatParam|$detailscale|float|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. To independently scale the X and Y coordinates, place your values in brackets: <code>$detailscale "[ 4 8 ]"</code> }}
{{MatParam|$detailscale|float|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. To independently scale the X and Y coordinates, place your values in brackets: <code>$detailscale "[ 4 8 ]"</code> }}
{{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.}}
Line 24: Line 19:
: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>.
: {{Note|Modes 1, 2, 3, 4, 5, 6, and 8 are not supported in {{csgo}} for LightmappedGeneric.}}  
{{Note|Modes 1, 2, 3, 4, 5, 6, and 8 are not supported in {{csgo}} for LightmappedGeneric.}}  
::{{TODO|Which other shaders does this apply to?}}
:{{TODO|Which other shaders does this apply to?}}
: {{Note|Modes 1, 4, 6, 9, and 10 cause shader combo flags errors in {{l4d2}}.}}
{{Note|Modes 1, 4, 6, 9, and 10 cause shader combo flags errors in {{l4d2}}.}}


[[Image:Detail_blend_modes_l4d2.jpg||320px|thumb|right|Blend modes in L4D2, factor .8 (Left to right modes 0 to 11, base texture only and detail only. Top row detail opacity 100%, bottom 50%).]]
[[Image:Detail_blend_modes_l4d2.jpg||320px|thumb|right|Blend modes in L4D2, factor .8 (Left to right modes 0 to 11, base texture only and detail only. Top row detail opacity 100%, bottom 50%).]]
 
*0 {{=}} DecalModulate
;*0 {{=}} DecalModulate
:This functions the same as the {{ent|DecalModulate}} shader—colors below 128 darken the image, colors above lighten the image.
: This functions the same as the [[DecalModulate]] shader - colors below 128 darken the image, colors above lighten the image.
*1 {{=}} Additive
;*1 {{=}} Additive
:The color of the detail texture is added to the base texture. This is the same as {{ent|$additive}}.
: The color of the detail texture is added to the base texture. This is the same as [[$additive]].
*2 {{=}} Translucent Detail
;*2 {{=}} Translucent Detail
:The detail texture is applied as a translucent overlay on top of the base texture.
: The detail texture is applied as a translucent overlay on top of the base texture.
*3 {{=}} Blend Factor Fade
;*3 {{=}} Blend Factor Fade
:The detail texture is applied as a translucent overlay, but ignoring its alpha channel. Instead, the blend factor is used to determine how much of the base texture shows through underneath.
: The detail texture is applied as a translucent overlay, but ignoring its alpha channel. Instead the blend factor is used to determine how much of the base texture shows through underneath.
*4 {{=}} Translucent Base
;*4 {{=}} Translucent Base
:This effectively flips the normal layering of the two textures. The detail texture appears "below," with the base alpha channel controlling it as a translucent overlay. The detail alpha channel controls the overall material alpha—for translucency, masking, or other uses.
: This effectively flips the normal layering of the two textures. The detail texture appears "below", with the base alpha channel controlling it as a translucent overlay. The detail alpha channel controls the overall material alpha - for translucency, masking or other uses.
*5 {{=}} Unlit Additive
;*5 {{=}} Unlit Additive
:The color of the detail texture is added to the base texture identically to mode 1, but this color is unaffected by lighting and therefore appears to glow.
: The color of the detail texture is added to the base texture identically to mode 1, but this color is unaffected by lighting and therefore appears to glow.
*6 {{=}} Unlit Additive Threshold Fade
;*6 {{=}} Unlit Additive Threshold Fade
:This adds color unaffected by lighting like mode 5, but first modifies the color added in two modes, depending on if the blend factor is above or below 0.5.
: This adds color unnaffected by lighting like mode 5, but first modifies the colour added in two modes, depending on if the blend factor is above or below 0.5.
*7 {{=}} Two-Pattern DecalModulate
;*7 {{=}} Two-Pattern DecalModulate
:Only the red and alpha channels of the detail texture are used. This operates like the {{ent|DecalModulate}} shader or blend mode 0, but the base alpha channel fades between using the red (0) or alpha (255) detail channel as the modulation source. This effectively allows two detail materials, although both are greyscale.
: Only the red and alpha channels of the detail texture are used. This operates like the [[DecalModulate]] shader or blend mode 0, but the base alpha channel fades between using the red (0) or alpha (255) detail channel as the modulation source. This effectively allows two detail materials, although both are greyscale.
*8 {{=}} Multiply
;*8 {{=}} Multiply
:The color of the base channel is multiplied by that of the detail texture.{{bug|Not compatible with {{ent|$phong}} due to missing shader combinations.}}
: The color of the base channel is multiplied by that of the detail texture.
*9 {{=}} Base Mask via Detail Alpha
:{{bug|Not compatible with [[$phong]] due to missing shader combinations.}}
:Only the detail alpha channel is used. It is multiplied with the base texture's alpha channel to produce the final alpha value.
;*9 {{=}} Base Mask via Detail Alpha
*10 {{=}} Self-Shadowed Bumpmap
: Only the detail alpha channel is used. It is multiplied with the base texture's alpha channel to produce the final alpha value.
:The detail texture is used as a (possibly additional) {{ent|$ssbump}} bumpmap. The blend factor is ignored.{{Note|You can use this to get a standard bumpmap and a self-shadowing bumpmap on the same material. However, this is expensive and should be used very sparingly.}}
;*10 {{=}} Self-Shadowed Bumpmap
*11 {{=}} SSBump Albedo
: The detail texture is used as a (possibly additional) [[$ssbump]] bumpmap. The blend factor is ignored.
:Unknown function, used internally. The comment says, "shader does the magic here - no user needs to specify mode 11."
: {{Note|You can use this to get a standard bumpmap and a self-shadowing bumpmap on the same material. However, this is expensive and should be used very sparingly.}}
*12+
;*11 {{=}} SSBump Albedo
:Any other values will disable the detail effect.}}
: Unknown function, used internally. The comment says, "shader does the magic here - no user needs to specify mode 11".
{{MatParam|$detailtint|RGB matrix|Color tint of the detail texture.{{bug|Does not work with {{ent|$blendtintbybasealpha}}.}}
;*12+
: Any other values will disable the detail effect.}}
{{MatParam|$detailtint|RGB matrix|Color tint of the detail texture.
:{{bug|Does not work with [[$blendtintbybasealpha]].}}
::{{todo|Verify which games this is broken in (tested in L4D2, TF2 and Portal 2).}}}}
::{{todo|Verify which games this is broken in (tested in L4D2, TF2 and Portal 2).}}}}
{{MatParam|$detailframe|int|The frame to start an animated <code>$detail</code> texture on.|dx9=1}}
{{MatParam|$detailframe|int|The frame to start an animated <code>$detail</code> texture on.|dx9=1}}
{{MatParam|$detail_alpha_mask_base_texture|bool|{{ent|WorldVertexTransition}} only. When enabled, causes the level of detail alpha to determine "base texture blending". {{todo|''Which'' base texture? Is this actually fully implemented?}}|removed={{csgo}}}}
{{MatParam|$detail_alpha_mask_base_texture|bool|{{ent|WorldVertexTransition}} only. When enabled, causes the level of detail alpha to determine "base texture blending."{{todo|''Which'' base texture? Is this actually fully implemented?}}|removed={{csgo}}}}


===CS:GO WorldVertexTransition 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|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.}}|only={{csgo}}|shaders=WorldVertexTransition}}
{{note|{{ent|LightmappedGeneric}} technically has support for these parameters and other <code>WorldVertexTransition</code> parameters, but they may not work as expected.}}|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailscale2|float|Detail scale for <code>$detail2</code>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailscale2|float|Detail scale for <tt>$detail2</tt>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailblendfactor2|normal|Detail blend factor for <code>$detail2</code>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailblendfactor2|normal|Detail blend factor for <tt>$detail2</tt>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailframe2|int|The frame to start an animated <code>$detail2</code> texture on.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailframe2|int|The frame to start an animated <code>$detail2</code> texture on.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailtint2|RGB matrix|Color tint for <code>$detail2</code>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$detailtint2|RGB matrix|Color tint for <tt>$detail2</tt>.|only={{csgo}}|shaders=WorldVertexTransition}}
 
== Valve's detail textures ==


== Valve's Detail Textures ==
Valve's stock detail textures (available in OB only) are best used with the following pre-configured values:
Valve's stock detail textures (available in OB only) are best used with the following pre-configured values:


Line 96: Line 87:
  $detailblendmode 0
  $detailblendmode 0


The below parameters come from <code>models\props_forest\LadderWood.vmt</code>
The below parameters come from <tt>models\props_forest\LadderWood.vmt</tt>. It is the '''only''' Valve Stock texture VMT file to use this particular detail texture. Because the detail texture (<tt>detail\wood_detail_01</tt>) is a high resolution (1024×1024), the <code>$detailscale</code> is lower than the others, with the exception of <tt>rock_detail_01</tt>.
It is the <b>only</b> Valve Stock texture VMT file to use this particular detail texture.  
Because the detail texture (<code>detail\wood_detail_01</code>) is a high resolution (<code>1024x1024</code>), the <code>$detailscale</code> is lower than the others. With the exception of '''<code>rock_detail_01</code>'''.


  $detail detail\'''wood_detail_01'''
  $detail detail\'''wood_detail_01'''
Line 105: Line 94:
  $detailblendmode 0
  $detailblendmode 0


Additionally, there are 2 other stock detail textures. <code>detail\detailash001a</code> and <code>detail\detaildirt001a</code>.
Additionally, there are 2 other stock detail textures. <code>detail\detailash001a</code> and <code>detail\detaildirt001a</code>. These files were used in the "leaked" version of {{hl2|2}} and in {{hl2ep1|2}} using the following parameters.
 
These files were used in the "leaked" version of Half-Life 2 & in Half-Life 2: Episode One using the following parameters;


(<code>Concrete/concretefloor009a</code> in Episode One materials)
<code>Concrete/concretefloor009a</code> in ''Episode One'' materials:


  $detail detail/'''detaildirt001a'''
  $detail detail/'''detaildirt001a'''
  $detailscale 0.27
  $detailscale 0.27


(<code>Metal/metalfloor005a</code> in Episode One materials)
<code>Metal/metalfloor005a</code> in ''Episode One'' materials:


  $detail detail/'''detailash001a'''
  $detail detail/'''detailash001a'''

Revision as of 12:39, 28 June 2022

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 currently work in conjunction with $seamless_scale. Enabling them to work together would require a programmer to edit the used shader.  [todo tested in ?]
Icon-Bug.pngBug:Detail textures are not compatible with $blendmodulatetexture except in Counter-Strike: Global Offensive.  [todo tested in ?]

Syntax

$detail <texture>

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

Parameters and Effects

$detailtexturetransform

Icon-Bug.pngBug:Does not currently function at all in Counter-Strike: Global Offensive.  [todo tested in ?]

$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

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