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

Modulate: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
No edit summary
 
(22 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{stub}}
{{Source topicon}} {{lang}}
'''<code>Modulate</code>''' is a shader that modulates the colors of any pixels behind it. This can be effectively used to fake various features that [[Source]] may not support, such as vertex coloring or [[lightmap]]ping on models (already possible for [[prop_static]] in {{tf2}}), by creating a surface above the first one to modulate it.
[[File:Modulate img.gif|thumb|300px|GIF Animation showing "Modulate" shader in action.]]
{{this is a|pixel shader|name=Modulate}} It modulates the colors of any pixels behind it.


[[File:Modulate img.gif|thumb|512px|GIF Animation showing "Modulate" shader in action. (Animation hidden in thumbnail, see full size.)]]
By default, it acts like the "multiply" layer mode in image editors, where full white (#FFFFFF) means no modulation, and darker values will darken what's underneath. If {{code|$mod2x}} is used, it acts like the "overlay" layer mode instead, where 50% grey (#7F7F7F or #808080) means no modulation, and lighter or darker values will lighten or darken what's underneath respectively.


A practical application of this shader is to create [[env_tonemap_controller|bloom-boosting]] textures, to create fake eye adaptation inside interiors.
Other uses include faking various features that [[Source]] may not support, such as vertex coloring or [[lightmap]]ping on models, by creating a surface above the first one to modulate it.
==Description==
==Description==
Accepts only a <code>$basetexture</code>, and this texture will be used to modulate pixels. Multiplies the color behind it with this surface's texture.
[[File:Mod2x bloom.jpg|thumb|300px|Comparison of bloom boosting with $mod2x 1 + white basetexture and without]]
[[File:Mod2x_comparison.png|thumb|300px|Picture showing the difference between $mod2x 0 and 1.]]
Accepts only the following parameters:


{{todo|Test performance more. Probably expensive when many layers are in use.}}
{{MatParamDef|$basetexture|texture|Modulates the color behind it with this surface's texture.}}
{{MatParamDef|$mod2x|boolean|Use [[DecalModulate]] blending instead of multiplication.
:{{codenote|Standard multiplication is equivalent to a BlendFunc of [DestinationColor,Zero], and Mod2x is equivalent to a BlendFunc of [DestinationColor, SourceColor]}} }}
{{MatParamDef|$nocull|boolean|Apply effect from through both sides of the polygon, instead of only through the front.}}
 
{{note|Does not accept any translucency parameters, including [[$alpha]], [[$alphatest]], [[$additive]] and [[$translucent]].}}


==See also==
==See also==
*{{ent|Refract}}
*{{ent|Refract}}
*<code>[[Water (shader)|Water]]</code>
*<code>[[Water (shader)|Water]]</code>
[[Category:Shaders]]

Latest revision as of 11:47, 23 August 2025

English (en)Translate (Translate)
GIF Animation showing "Modulate" shader in action.

Modulate is a Pixel shader available in all Source Source games. It modulates the colors of any pixels behind it.

By default, it acts like the "multiply" layer mode in image editors, where full white (#FFFFFF) means no modulation, and darker values will darken what's underneath. If $mod2x is used, it acts like the "overlay" layer mode instead, where 50% grey (#7F7F7F or #808080) means no modulation, and lighter or darker values will lighten or darken what's underneath respectively.

A practical application of this shader is to create bloom-boosting textures, to create fake eye adaptation inside interiors. Other uses include faking various features that Source may not support, such as vertex coloring or lightmapping on models, by creating a surface above the first one to modulate it.

Description

Comparison of bloom boosting with $mod2x 1 + white basetexture and without
Picture showing the difference between $mod2x 0 and 1.

Accepts only the following parameters:

Modulates the color behind it with this surface's texture.
Use DecalModulate blending instead of multiplication.
Cpp.pngCode:Standard multiplication is equivalent to a BlendFunc of [DestinationColor,Zero], and Mod2x is equivalent to a BlendFunc of [DestinationColor, SourceColor]
Apply effect from through both sides of the polygon, instead of only through the front.
Note.pngNote:Does not accept any translucency parameters, including $alpha, $alphatest, $additive and $translucent.

See also