$blendmodulatetexture
$blendmodulatetexture
is a material shader parameter for the LightmappedGeneric and WorldVertexTransition shader available in all Source games since Source 2006. It changes the transition between the textures from a smooth, linear gradient to one "stamped" with a pattern.
Tip:You should use
$blendmodulatetexture
wherever possible, as the improvement in visual quality is immense!Caveats
- Incompatible with
$normalmapalphaenvmapmask
in . Works in . (use$envmapmask
instead).
- Todo: Only in later games? If so, which?
- Incompatible with
$selfillum
in . - Incompatible with
$bumpmap
and$detail
being used at the same time, in Alien Swarm. - Using
$blendmodulatetexture
with$detail
will cause a major graphical issue ( stripes over the texture ), except in and . - Incompatible with $detailblendmode 7 in and 9 in
- In Source 2006, Source 2007, and Team Fortress 2, incompatible with
$basetexturetransform
and$detail
. - In Source 2006, also incompatible with
$envmaptint
and$envmapmask
. - In Alien Swarm, modulation textures are not aligned correctly. Use
$blendmasktransform "center .5 .5 scale 1 -1 rotate 90 translate 0 0"
to fix them up. - In Alien Swarm, not compatible with
$bumptransform
.
In some additional cases, textures will blend as if $blendmodulatetexture
were not used:
- Does not display when viewed through water. Todo: Only in earlier games?
- Does not display when illuminated with player's flashlight in Half-Life 2. This is fixed in Mapbase.
- Does not display in the Hammer Editor in most games. Known exceptions include Counter-Strike: Global Offensive, Portal 2, Garry's Mod, Left 4 Dead 2, and Mapbase.
Parameters
The modulation texture for the blending. See below for more details.
Transforms the modulation texture before use in the material.
Note:Requires $MaskedBlending and a $BumpTransform that is not an identity matrix (It needs to have Non-Default Values).
- The default position is
center .5 .5 scale 1 1 rotate 0 translate 0 0
.center
defines the point of rotation. Only useful ifrotate
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?]
Makes the shader use the modulation texture for the blend factor instead of using the vertex alpha from the displacement.
Bug:The surface must still be a displacement in order to blend properly. [todo tested in?]
Blend Modulation Textures
Tip:The best way to create a modulation texture is to import the two albedos to an image editor as layers and create an alpha channel there by hand.
Only two color channels are read from the texture:
- Red
- Sharpens. 0 makes the transition binary, 255 effectively disables modulation.
- The red channel of Valve's snow modulation texture is a constant 99, which produces a fairly sharp falloff. Using different values in different places has the potential to produce a more complex effect.
- Green
- Biases in favor of
$basetexture
; high-value areas will be the most resistant to modulation. 128 is normal. - The idea is to paint noise and patterns into this channel, so that the edge between the two textures becomes irregular. Valve's snow texture (see right) has lots of ragged edges in the green channel, and even some bootprints. There are also lines painted along the edges of the albedo's bricks that give them a tendency to have snow along their edges.
There is not always a need for the texture to be high resolution—high-frequency blends can be produced from low-res textures.