Difference between revisions of "$color"

From Valve Developer Community
Jump to: navigation, search
(Added workaround for $selfillum usage)
(Added $tintmasktexture from CSGO)
Line 31: Line 31:
 
{{MatParam|$blendtintcoloroverbase|float|Sets the amount to replace with solid color. A value of '0' will be full tint while a value of '1.00' will replace the [[albedo]] in the mask area with the color defined with <code>$color2.</code> Default value is '0'.
 
{{MatParam|$blendtintcoloroverbase|float|Sets the amount to replace with solid color. A value of '0' will be full tint while a value of '1.00' will replace the [[albedo]] in the mask area with the color defined with <code>$color2.</code> Default value is '0'.
 
: {{Note|This parameter is not available in {{l4ds}} and {{As}}.}}|since=TF2}}
 
: {{Note|This parameter is not available in {{l4ds}} and {{As}}.}}|since=TF2}}
 +
{{MatParam|$tintmasktexture|texture|Use a seperate texture as a mask for color tinting instead of the <code>$basetexture</code>'s alpha. Only the green channel is used for tinting.|only=CSGO}}
 
{{MatParam|[[$allowdiffusemodulation]]|bool|Prevents the model's material from being tinted by <code>$color2</code> or <code>rendercolor.</code>|since=L4D}}
 
{{MatParam|[[$allowdiffusemodulation]]|bool|Prevents the model's material from being tinted by <code>$color2</code> or <code>rendercolor.</code>|since=L4D}}
{{MatParam|[[$notint]]|bool|Prevents the model's material from being tinted by <code>$color2</code> or <code>rendercolor.</code> Replaces <code>$allowdiffusemodulation</code> in {{csgo}}.|since=CSGO}}
+
{{MatParam|[[$notint]]|bool|Prevents the model's material from being tinted by <code>$color2</code> or <code>rendercolor.</code> Replaces <code>$allowdiffusemodulation</code> in {{csgo}}.|only=CSGO}}
  
 
== Caveats ==
 
== Caveats ==

Revision as of 16:01, 8 December 2019

$color is a material shader parameter available in all Source games. It independently scales the red, green and blue channels of an albedo. There are two ways of expressing a value:

$color "[ <float> <float> <float> ]"
$color "{ <int> <int> <int> }"

The default is "[1 1 1]" or "{255 255 255}".

Note.png Note: You must use quotemarks, as there are space characters within the value.

Gamma

Source uses a gamma correction of 2.2 by default. This must be taken into account when attempting to adjust the color of a texture to match some other color in a screenshot (for example, when trying to match the color of the bottom of a skybox material to the color of fog in the map). This is done by raising the initially calculated scale to the power of 2.2 before setting the $color value for your material. For example, if the sample (target) color in a screenshot is 120, the color of your texture at the point of interest is 240, and you want the two colors to match, you need to compute the albedo scale for your material as (120 / 240) ^ 2.2 = 0.218 (not 0.5, as one might expect).

Tip.png Tip: Don't try to recreate a texture through a screenshot. GCFScape is free.

Solid color

This parameter can be used without an albedo to display a solid color without the need of a texture (except a %tooltexture). As well as a small saving in performance and memory footprint, material_modify_control can be used to completely change the material's color at run-time if desired.

In this scenario, "[1 1 1]" is pure white.

Tip.png Tip: If the material is representing empty blackness, you will probably want to use the UnlitGeneric shader to prevent it from ever becoming grey.

Models

A variant of $color named $color2 is specific for use with VertexLitGeneric. It works the same way as $color but for use on models.

$color2 "[ <float> <float> <float> ]"
$color2 "{ <int> <int> <int> }"

Additional Model Parameters

$blendtintbybasealpha <boolean> (in all games since L4D)  (also in 2013)
Enables the use of an alpha mask to define areas on the model to tint. Uses the alpha channel of the $basetexture.
Bug.png Bug: Incompatible with $alphatest and $translucent.
$blendtintcoloroverbase <float> (in all games since TF2)
Sets the amount to replace with solid color. A value of '0' will be full tint while a value of '1.00' will replace the albedo in the mask area with the color defined with $color2. Default value is '0'.
Note.png Note: This parameter is not available in <Left 4 Dead><Left 4 Dead 2> and <Alien Swarm>.
$tintmasktexture <texture> (only in CSGO)
Use a seperate texture as a mask for color tinting instead of the $basetexture's alpha. Only the green channel is used for tinting.
$allowdiffusemodulation <boolean> (in all games since L4D)
Prevents the model's material from being tinted by $color2 or rendercolor.
$notint <boolean> (only in CSGO)
Prevents the model's material from being tinted by $color2 or rendercolor. Replaces $allowdiffusemodulation in <Counter-Strike: Global Offensive>.

Caveats

  • $color2 is incompatible with the use of $selfillum, as it will override the glow properties used by both $selfillum & $selfillummask. Use the $selfillumtint command to adjust the glow so it properly appears.

External Links