# Difference between revisions of "List Of Material Proxies"

To do: There are still lots of undocumented proxies

## Calculation

srcVar1
srcVar2
resultVar

Multiply Multiplies two variables.

srcVar1
srcVar2
resultVar

Subtract Subtracts the second variable from the first.

srcVar1
srcVar2
resultVar

Divide Divides the first variable by the second.

srcVar1
srcVar2
resultVar

Equals Copies the value of a variable to another.

srcVar1
resultVar

Abs Computes the absolute (i.e. unsigned) value of a variable.

srcVar1
resultVar

Frac

Returns the fractional component of a variable.
Tip: frac(4.23) = .23
For integer values, no change occurs.
srcVar1
resultVar

Int

Returns the integer component of a variable.
Tip: int(4.23) = 4
srcVar1
resultVar

Clamp Keeps a variable within a specified range.

min
max
srcVar1
resultVar
srcVar1 and resultVar can be the same.

LessOrEqual Compares the first value to the second.

lessEqualVar
greaterVar
Variable to copy to resultVar if this condition is met.
srcVar1
srcVar2
resultVar

SelectFirstIfNonZero Selects the first value over the second if it is anything other than zero.

srcVar1
srcVar2
resultVar

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
resultVar = scale * exp( srcVar1 + offset )
Tip: exp(5) = 148.413159

## 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

LinearRamp An ever-increasing float value.

rate
Units per second.
initialValue
Value at map start.
resultVar

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

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.

Warning: Will cause a crash when used on prop_static or world brushes, which don't have an entity. Named overlays are fine.

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 The distance between the entity the material is applied to and the local player.

scale
The value is rescaled to be between 0 and the scale value.
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

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 a player's cl_crosshaircolor_x (r, g ,b) settings.

resultVar

## Texture manipulation

AnimatedTexture Increments the current frame of an animated VTF.

animatedtexturevar
Texture to increment frame for.
( i.e. \$basetexture, \$bumpmap, \$normalmap, \$envmapmask, \$detail)
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
animatedtextureframerate

AnimatedOffsetTexture Identical to AnimatedTexture, except the animation begins when the entity it's applied to spawns.

animatedtexturevar
animatedtextureframerate

AnimateSpecificTexture Identical to AnimatedTexture, except only the specified texture could be animated.

animatedtexturevar
animatedtextureframerate
onlyAnimateOnTexture
The full path for the texture that this proxy should function with.

To do: What is this used for?

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.
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)

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.

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].

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.

ToggleTexture Toggles a texture based on the frame number set by env_texturetoggle. Must be attached to an entity.

toggleTextureVar
Texture to modify based on frames.
Variable used for frame number.
toggleShouldWrap
Whether the animation should wrap over not.

## 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

PlayerHealth Identical to the Health proxy.

scale
The value is rescaled to be between 0 and the scale value.
resultVar

PlayerDamageTime The number of seconds since the attached player was last damaged.

scale
The value is rescaled to be between 0 and the scale value.
resultVar

PlayerHealTime The number of seconds since the attached player was last healed.

scale
The value is rescaled to be between 0 and the scale value.
resultVar

PlayerScore Gets the score of the attached player.

scale
The value is multiplied by the scale value.
resultVar

spy_invis Related to the \$cloakPassEnabled parameter. Typically found in player world model materials. No parameters. Cloak color will be team-colored. Incompatible with \$weapon_invis and \$vm_invis.

weapon_invis Typically found in weapon world model materials. No parameters. Incompatible with \$spy_invis and \$vm_invis.

vm_invis Typically found in player and weapon view model materials. No parameters. Incompatible with \$spy_invis and \$weapon_invis.

invis Supports both world and view models, but doesn't have team color support. Compatible with all former three.

building_invis Unused, meant for building world models being able to cloak.

CommunityWeapon Passes the value '1' when item is flagged as a 'Community Weapons'. Passes '0' otherwise.

resultVar

InvulnLevel Passes a float value to set the opacity of the invulnerability effect when a player has been 'Übered'.

resultVar

BurnLevel Passes a float value to set the opacity of the fire overlay effect when a player has been burned.

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

AnimatedWeaponSheen Performs the killstreak effect

animatedtexturevar
animatedtextureframerate

WeaponSkin To do

ShieldFalloff Pulse the Vaccinator's uber shield

StatTrakIllum To do

StatTrakDigit To do

StatTrakIcon To do

StickybombGlowColor When active passes hard coded color value to create the 'Scottish Resistance' select effect. Color is either Red or Blue.

resultVar

SniperRifleCharge To do

Heartbeat To do

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.

### Portal 1 and 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.

To do: What parameter does the portal shot flash set?

WheatlyEyeGlow Presumably controls the glow effect on Wheatley. Not actually used. To do: Does this do anything? Seems to have been replaced by Lightedmouth.

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 depending on the pressed state. Somewhat useless, since the model swaps skins at this point and it could just have hardcoded the two values.

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

survivalteammate Seen in materials\models\player\custom_player\econ\body\tm_jumpsuit\jumpsuit_body.vmt

resultVar