List of material proxies
All Material Proxies usable in materials at all games can be found here, along with proxies only present in specific games. (Mostly other Valve titles)
Calculation
Equals
and Clamp
.Add Adds two variables.
srcVar1
srcVar2
resultVar
- Returns
srcVar1 + srcVar2
.
Multiply Multiplies two variables.
srcVar1
srcVar2
resultVar
- Returns
srcVar1 * srcVar2
.
Subtract Subtracts the second variable from the first.
srcVar1
srcVar2
resultVar
- Returns
srcVar1 - srcVar2
.
Divide Divides the first variable by the second.
srcVar1
srcVar2
resultVar
- Returns
srcVar1 / srcVar2
.
Equals Copies the value of a variable to another.
srcVar1
resultVar
- Returns
srcVar1
.
Abs Computes the absolute (i.e. unsigned) value of a variable.
srcVar1
resultVar
- Returns
abs(srcVar1)
.
Frac
Returns the fractional component of a variable. For integer values, no change occurs.srcVar1
resultVar
Int
Returns the integer component of a variable.srcVar1
resultVar
Clamp
Keeps a variable within a specified range. srcVar1
and resultVar
can be the same.
min
max
srcVar1
resultVar
- Returns the value in the range
[min, max]
that is the closest tosrcVar1
.
LessOrEqual Compares the first value to the second.
lessEqualVar
greaterVar
srcVar1
srcVar2
resultVar
- If
srcVar1 ≤ srcVar2
, returnslessEqualVar
, otherwisegreaterVar
.
SelectFirstIfNonZero Selects the first value over the second if it is anything other than zero.
srcVar1
srcVar2
resultVar
- If
srcVar1 == 0
, returnssrcVar1
, otherwisesrcVar2
.
WrapMinMax Constrains a value into a range, wrapping around if it exceeds it.
srcVar1
- The value to constrain.
minVal
maxVal
- Range to constrain the value to. If min is less than max, min is always returned.
resultVar
- The variable to write the results to.
Exponential A value that changes at a faster and faster rate.
minVal
maxVal
- Upper and lower value clamps.
srcVar1
offset
scale
resultVar
- Returns
scale * exp( srcVar1 + offset )
Tip:exp(n) = en
Number generation
Sine A sine wave.
sineperiod
- Period between wave peaks, in seconds.
sinemin
sinemax
- Values at the top and bottom of the wave
timeoffset
- Used to offset the starting position of the wave
resultVar
- Returns
sinemin + (sinemax-sinemin)/2 * (1 + sin( 2*pi/sineperiod * (time + timeoffset) ))
.
LinearRamp An ever-increasing float value.
rate
- Units per second.
initialValue
- Value at map start.
resultVar
- Returns
rate * time + initialValue
.
CurrentTime The number of seconds the current map has been running on the server for.
resultVar
- This is intended to set the
$time
shader variable, used by several shaders to adjust their effects over time.
UniformNoise A noisy signal where each value is equally likely to occur.
minVal
maxVal
resultVar
- Returns an random value in the range
[minVal, maxVal]
with equal probability.
GaussianNoise A noisy signal where values are biased towards the average.
mean
- The average value around which the noise will centre
halfWidth
- The distance from the average at which it's only 30% likely to occur.
minVal
maxVal
resultVar
MatrixRotate A rotation matrix from the provided axis and angle.
axisVar
- Axis of rotation, in the format
[x y z]
angle
- Degrees of rotation around axis.
resultVar
- The result of this is a transformation matrix, suitable to set
$basetexturetransform
and other similar variables.
Entity Data Access
These proxies read values from the entity the proxy is applied to.
Alpha
Copies the entity's Render Alpha value to the $alpha
material parameter.
$alpha
- The alpha material variable is set to the Render Alpha value.
Cycle Outputs the progress through the current animation of the entity.
start
- The value to output at the start of the animation. This can't be a variable reference.
end
- The value to output at the end of the animation. This can't be a variable reference.
easein
- Apply easing to the beginning of the output. This can't be a variable reference.
easeout
- Apply easing to the beginning of the output. This can't be a variable reference.
resultVar
- The variable to store the result in.
PlayerProximity Outputs the distance in units between the local player and the origin of the entity that the material is applied to.
scale
- A factor by which the result is multiplied.
resultVar
PlayerTeamMatch Returns 1 if the team of the entity the material is applied to matches that of the local player. Used in TF2 for func_respawnroomvisualizer.
resultVar
- This value is 1 if the local player is on the same team and 0 if the local player is not.
PlayerView The dot product of the player's view angle and the relative origin of the material's entity.
scale
- The value is rescaled to be between 0 and the scale value.
resultVar
PlayerSpeed Speed of the local player.
scale
- The value is multiplied by this value. This factor defaults to
0.005
. resultVar
PlayerPosition The local player's position.
scale
- The value is multiplied by this value. This factor defaults to
0.005
. resultVar
- Set to the vector position.
EntitySpeed The material's entity's speed.
resultVar
- The current speed of this entity, in units per second.
EntityOrigin The material's entity's origin. The variable set cannot be changed.
$entityorigin
- Set to the origin of the entity.
EntityRandom A static random number associated with the entity the material is applied to. Helpful for staggering effects that appear on multiple objects.
scale
- The value is rescaled to be between 0 and the scale value.
resultVar
Health The material's entity's health (0-1).
scale
- The value is rescaled to be between 0 and the scale value.
resultVar
health
key defined is parsed (e.g. propdata.txt) before the material. This can be workarounded by adding an uppercase Health
key into gameinfo.txt or defining the material proxy lowercase in the client code. [todo tested in?]IsNPC Returns whether the material is applied to a NPC. Used in HL2 for npc_hunter's eye glow, which is supposed to stay off on ragdolls.
scale
- The value to return when the material is applied to a NPC. Despite the name, nothing in this process is actually multiplied. (although this must be a float)
resultVar
- If the material is applied to a NPC, this value is equal to
scale
. Otherwise, this value stays at 0.
WorldDims The dimensions of the world entity. The variables set cannot be changed.
$world_mins
- Set to the minimum X/Y/Z coordinates.
$world_maxs
- Set to the maximum X/Y/Z coodinates.
CrosshairColor The color of the local player's crosshair. cl_crosshaircolor_(r, g, b)
resultVar
- Returns [r g b] with values from 0 to 1.
Texture manipulation
AnimatedTexture Increments the current frame of an animated VTF.
animatedtexturevar
- Texture to increment frame for.
- ( i.e.
$basetexture
,$bumpmap
,$normalmap
,$envmapmask
,$detail
) animatedtextureframenumvar
- Frame variable to increment.
- ( i.e.
$frame
,$bumpframe
,$envmapmaskframe
,$detailframe
) animatedtextureframerate
- Framerate in frames per second. Fixed; cannot be changed once set.
AnimatedEntityTexture Identical to AnimatedTexture, except the entity controls when the animation starts and is "notified" when the animation is wrapped.
animatedtexturevar
animatedtextureframenumvar
animatedtextureframerate
AnimatedOffsetTexture Identical to AnimatedTexture, except the animation begins when the entity it's applied to spawns.
animatedtexturevar
animatedtextureframenumvar
animatedtextureframerate
AnimateSpecificTexture Identical to AnimatedTexture, except only the specified texture could be animated.
animatedtexturevar
animatedtextureframenumvar
animatedtextureframerate
onlyAnimateOnTexture
- The full path for the texture that this proxy should function with.
Pupil Used for character's eyes, computes the light brightness at the material's position and reacts to bright lights by incrementing the texture's frame.
TextureVar
- Texture to increment frame for.
TextureFrameNumVar
- Frame variable to increment.
PupilCloseRate
- The maximum speed the pupil can close, in fractions/second. The default is 0.1.
PupilOpenRate
- The maximum speed the pupil can open, in fractions/second. The default is 0.03.
$lighting
- This material variable is used to store the previous frame, and should be set to 0.5 in the material. It will be set to the average light value, from 0-1.
TextureTransform Generates a texture transform matrix for use with $basetexturetransform etc.
centerVar
scaleVar
rotateVar
translateVar
- Optional input variables for the matrix. Each one can be a float or a 2D vector.
resultVar
TextureScroll Returns a transform matrix or vector that will translate a texture at a given angle at a given rate.
textureScrollVar
- Destination for the resulting transformation.
textureScrollRate
- Rate of scroll in units per second.
textureScrollAngle
- Angle of rotation to move along. (90 = up, 180 = left, etc)
textureScale
- Scale of the texture; defaults to 1.0 if unspecified. Works similarly to the TextureTransform proxy's scaleVar and $basetexturetransform's scale component (e.g., 2.0 is a 50% scale). Unlike those, however, textureScale only accepts a single float—not a 2D vector—so this proxy can't scale a texture's X and Y axes individually.
LampBeam Modulates the material's alpha value based on angle between the beam's direction and the viewer's eye point. This is used to make the beams of volumetric light on lights fade as you look at them dead on. Must be attached to entity for angle use.
LampHalo Modulates the material's alpha value based on angle between the beam's direction and the viewer's eye point. Like the LampBeam proxy, but used for the halo at the beam's base. Must be attached to entity for angle use.
CustomSteamImageOnModel Replaces the $baseTexture with a custom texture. No parameters.
Entity integration
MaterialModify / MaterialModifyAnimated Used in conjunction with the material_modify_control entity to configure arbitrary parameters from map I/O. Only works when the material is applied to an entity. MaterialModify takes no parameters. MaterialModifyAnimated takes the same parameters as AnimatedTexture.
WaterLOD
Coordinates water LOD values between the map's water_lod_control entity and the material's internal values.$CHEAPWATERSTARTDISTANCE
- Start distance for cheap water Note:must be set outside of proxy block.
$CHEAPWATERENDDISTANCE
- End distance for cheap water Note:must be set outside of proxy block.
BreakableSurface
Sets the base texture to a material name held by the entity (used for switching surface material on shatter). Must be attached to a func_breakable_surf
entity.
ConveyorScroll
Returns the scroll parameters for a texture used as a conveyor, so it matches the entity's settings. Must be attached to func_conveyor
entity.
textureScrollVar
- Name of variable to place result in. Must be a matrix or vector type variable (i.e.
$baseTextureOffset
).
Camo
Only used by material Dev\dev_camo.vmt
. This generates a texture matching the surroundings, which appears to be intended to be used for Combine Elite at some point. Much of the code is disabled, so this is not usable.
$camopatterntexture
- The source texture for the camo effect. Should be I8 format.
$camoboundingboxmin
$camoboundingboxmax
- Random points within this bounding box will be sampled to determine the camo coloring.
FleshInterior Outputs the locations of nearby point_flesh_effect_targets for use by the $flesh effect.
$FleshEffectCenterRadius1
$FleshEffectCenterRadius2
$FleshEffectCenterRadius3
$FleshEffectCenterRadius4
- Set to the world locations of four flesh targets, with the fourth axis set to the radius. If a target is not present, all four axes are set to zero.
$FleshGlobalOpacity
- This material variable has to exist for the proxy to function, but it's not actually set at any point.
$FleshSubsurfaceTint
- This is just set to
[0 0 0 0]
.
HeliBlade Controls transition on npc_helicopter's blades. This fades in or out the blades to convert from a set of physical blades into a spinning blurred circle.
$fadeout
- If the variable is set to 1, fade out the blades as it starts up. If 0, fade in.
$alpha
- This proxy sets the value of the alpha variable.
ParticleSphereProxy
Only used by material particle\SmokeStack.vmt
. Seems to be defined in particle_proxies.cpp
. Valve remark: "FIXME: Is this even needed any more?"
PlayerLogo Internal proxy for "decals/playerlogo##" decals. Generates and assigns a texture for a specific player index.
Shadow Only used by Shadow. No known parameters. This sets lots of material parameters to render projected texture shadows.
ShadowModel Only used by ShadowModel. No known parameters. This sets lots of material parameters for rendering projected texture shadows.
Thermal
Uses $color
vectors and work around $ThermalPeriod
, $ThermalMin
, and $ThermalMax
to generate a Hue scaled Sine and applies back to $color
.
ToggleTexture Toggles a texture based on the frame number set by game code (in most games, only via env_texturetoggle). Must be attached to an entity.
toggleTextureVar
- Texture to modify based on frames.
toggleTextureFrameNumVar
- Variable used for frame number.
toggleShouldWrap
- Whether the animation should wrap over not. Enabled by default.
Utility
Empty Used to comment out proxies. Surround a bunch of proxies with the empty proxy to cause those proxies to not operate.
Dummy Prints developer messages in response to the proxy being created, the proxy being initialized, the proxy being bound to an entity, and the proxy being removed.
Miscellaneous
ConVar (in all games since ) Allows you to link a specific variable to a ConVar a client has set.
convar
- The ConVar name to link to, e.g.
mat_specular
.Note:Strings will not be parsed through, the value of the ConVar must be a number. resultVar
- Returns the value of the ConVar. If this is a vector type, all axes will be set individually to the ConVar's value.
Game Specific
Half-Life 2
EntityOriginAlyx Identical to EntityOrigin with an x offset of 15. Created as a last-minute hack before The Orange Box shipped.
Ep1IntroVortRefract
Uses $refractamount
to generate a ratio and sends it to the same variable, not using resultVar
. Created as a last-minute hack before The Orange Box shipped.
VortEmissive
Sets $emissiveblendstrength
and $detailblendfactor
to apply the Vortigaunt's blue-purple glow effects in Episode 1's opening.
Shield Likely intended to be used for one of the Combine shield types. This is equivalent to a combination of the TextureScroll and Alpha proxies.
$translucency
- This variable is set to the Render Alpha value of the attached entity, similar to the Alpha proxy.
textureScrollVar
textureScrollRate
textureScrollAngle
- Has identical functionality to the TextureScroll proxy.
Team Fortress 2
invis Works if $cloakPassEnabled is true. Supports both world models and view models, but doesn't have team color support.
spy_invis Works if $cloakPassEnabled is true. Used in player world model materials. No parameters. Cloak color will be team-colored on players by default. Incompatible with $weapon_invis and $vm_invis.
weapon_invis Works if $cloakPassEnabled is true. Used in weapon world model materials. No parameters. Incompatible with $spy_invis and $vm_invis.
vm_invis Works if $cloakPassEnabled is true. Used in player and weapon view model materials. No parameters. Incompatible with $spy_invis and $weapon_invis.
building_invis Unused, intended to be used in building model materials to support cloaking.
CommunityWeapon Passes the value 1 when item is flagged as a Community quality item. Passes 0 otherwise.
resultVar
InvulnLevel Passes a float value to set the opacity of the invulnerability effect when a player has been ÜberCharged.
resultVar
BurnLevel Passes a float value to set the opacity of the fire overlay effect when a player is on fire.
resultVar
YellowLevel Passes an RGB value when Jarate has been used on a player.
resultVar
ModelGlowColor When active, passes hard coded color value to create the crit glow effect. Color is either red or blue. When inactive value is pure white (255 255 255).
resultVar
ItemTintColor Passes an RGB value when a Paint Can is used. Value is specific to Paint color. Passes 0 when no Paint is used.
resultVar
BuildingRescueLevel Passes a transform matrix to set the amplitude of the Rescue Ranger display.
resultVar
TeamTexture Changes the animation frame of the texture depending on the current team.
resultVar
- Only writes to$frame
AnimatedWeaponSheen Performs the killstreak sheen effect.
animatedtexturevar
animatedtextureframenumvar
animatedtextureframerate
WeaponSkin Sets basetexture for Decorated items.
ShieldFalloff Pulses the Vaccinator's Über shield.
StatTrakIllum Returns 0.75 on viewmodels.
resultVar
StatTrakDigit Returns one digit of the item's Strange counter. If trimZeros is positive, leading zeroes will return 10 instead.
resultVar
displayDigit
trimZeros
StatTrakIcon Non-functional. Returns a constant matrix.
resultVar
StickybombGlowColor When active, passes hard coded color value to create the 'Scottish Resistance' selection effect. Color is either red or blue.
resultVar
SniperRifleCharge Returns a transform matrix for the Sniper Rifle charge up. Other weapons can affect the return value such as melee weapons and the Medi Gun
resultVar
Heartbeat Returns a time-varying value between 0.48 and 0.6 (mostly 0.6) to simulate a heartbeat.
resultVar
WheatlyEyeGlow Pulsates a color with Gaussian Distribution. Used for the Ap-Sap item.
resultVar
BenefactorLevel Used for scaling the beating heart based on the number of gifts the player has given. Returns a texture scale factor where 1 is max size (big benefactor) and factor gets larger the fewer gifts you've given.
resultVar
Left 4 Dead 2
PlayerTeam Returns a value depending on the team the player is currently in.
team
- Unknown
resultVar
- 0 = survivor / 1 = infected / 2 = spectator
BloodyHands Returns a value between 0 and 1 depending on the number of hits with a melee weapon.
resultVar
- number of hits / 5
- doesn't go over 1 after 5 hits
- value is shared between world and view model
IT Returns a value between 0 and 1 depending on the fact that the survivor is covered in Boomer bile.
resultVar
- 1 = fully covered / 0 = not covered
BurnLevel Passes a float value to set the opacity of the fire overlay effect when an infected has been burned.
resultVar
- 1 = on fire / 0 = not on fire
BBQLevel
Seen in materials\models\infected\hulk\hulk_01.vmt
resultVar
Alien Swarm
NightVisionSelfIllum When the player has a night vision effect or sniper scope active, outputs a strength to modulate selfillumination on objects.
resultVar
- The value to change. Generally set to
$selfillumtint
. asw_night_vision_self_illum_multiplier
- This ConVar specifies the value output when night vision is on at full strength.
asw_sniper_scope_self_illum_multiplier
- This ConVar specifies the value output when the sniper scope is active.
AlienSurfaceFX Sets the $detail texture and parameters to display fire, freezing and electrical shock effects.
texturescrollvar
- Set to the name of the matrix or transform variable that shifts the detail texture, usually
$detailtexturetransform
.
LanguagePreference (only in ) Sets a value based on the client's language setting.
resultVar
- The variable to change. (eg.
$basetexture
) default
- The default value for the variable if no listed language matches.
english
,french
,schinese
, etc.- Specific values for specific languages.
Portal and Portal 2
PortalOpenAmount On portals, transitions from 0 to 1 as the portal opens.
resultVar
PortalStatic On portals, specifies how much the opaque static effect should render. 1 is a unpaired portal, 0 is an open portal.
resultVar
Portal 2 only
FizzlerVortex Sets various parameters used by the SolidEnergy shader for fizzler effects - the location of nearby objects, flashing from portal shots, and power transition times. Doesn't take any arguments.
$powerup
- Transitions to 0 when the fizzler is turned off, 1 when turned on.
$FLOW_VORTEX1
- Set to 1 when an object is brought near the field, otherwise set to 0.
$FLOW_VORTEX_POS1
- Set to the position of the first object.
$FLOW_VORTEX2
- Set to 1 when a second object is brought near the field, otherwise set to 0.
$FLOW_VORTEX_POS2
- Set to the position of the second object.
WheatlyEyeGlow
Presumably controls the glow effect on Wheatley. Not actually used.Lightedmouth Used on the various Personality Cores and PoTaTOS to blink their eye-light in sync with their choreo scenes. When idle, the tint is still partially lit. On the viewmodel, it can also be manually controlled via VScript to make GLaDOS appear to shut down.
resultVar
- A tint to pass to
$selfillumtint
.
LightedFloorButton Used on the clean Super Button materials, sets $selfillumtint to 1 if the material is being used on a prop_floor_button, otherwise sets it to 0. This has no real benefit and just causes the model to appear incorrectly when used on other entities, it was presumably a beta leftover.
resultVar
- The tint to use, or
[0 0 0]
if not on a button.
TractorBeam Used on the Excursion Funnel effect materials, outputs the scroll rate and does other unknown operations.
resultVar
- Passed to the
textureScrollRate
parameter of various TextureScroll proxies.
Black Mesa
TauCharge
Seen in materials/models/weapons/v_gauss/v_taucannon_core.vmt
.
resultVar
Counter-Strike: Global Offensive
Select Picks a result value depending on the input value, like a switch statement.
srcVar1
resultVar
default
- The default return value if the value of
srcVar1
does not match any case. <case>
- The return value if the value of
srcVar1
has the value<case>
. There can be multiple cases.
Example from materials/models/inventory_items/dogtags/dogtags_lightray.vmt
:
"srcVar1" "$localTeamNumber" "resultVar" "$color" "default" "[0.680 0.680 0.680]" "2" "[0.680 0.544 0.136]" "3" "[0.269 0.474 0.680]"
GetTeamNumber
Gets the team of an entity. Seen in materials/models/inventory_items/dogtags/dogtags_lightray.vmt
.
resultVar
-
- 0: Unassigned
- 1: Spectator
- 2: Terrorist
- 3: Counter-Terrorist
survivalteammate
Used to paint the teammate in Danger Zone. Seen in materials/models/player/custom_player/econ/body/tm_jumpsuit/jumpsuit_body.vmt
.
resultVar
- Returns 1 if the local player is the teammate of the player that the material is applied to and 0 if not.Note:Always returns 0 outside of Danger Zone — use GetTeamNumber instead!
RemapValClamp Remaps a variable within the specified ranges.
range_in_min
range_in_max
range_out_min
range_out_max
srcVar1
resultVar
Modulo Divides the first variable by the second and writes the remainder value to the resultvar.
srcVar1
srcVar2
resultVar
MoneyProxy Reads from the players money value. Only works on viewmodel materials.
resultVar
WeaponLabelText Calculates where to offset the $basetexture based on the displaydigit value. Only works on the viewmodel.
displaydigit
C4CompassArrow [Todo]
IronSightAmount Returns 1 when the player is scoped in, 0 when scoped out.
invert
resultvar
ApproachValue Performs a smooth transition from the current value of srcVar1 to the targetvalue of srcVar2.
srcVar1
srcVar2
speed
- specifies how quickly the transition happens, with a higher value leading to a faster transition.
resultVar
- the result of the transition is stored in the resultvar.