Source Filmmaker

Source Filmmaker

235 ratings
List of all VMT Shaders and Parameters
By Zappy
This is a raw list of all VMT/material parameters recognized by Source Filmmaker, organized by shader.

It doesn't always explain what each option does, only that it's recognized, and occasionally that it requires another parameter to work.
2
6
2
2
   
Award
Favorite
Favorited
Unfavorite
-- Introduction --
This guide is a list of all VMT/material parameters that Source Filmmaker recognizes by default, sorted/organized by shader.

This guide is not useful for non-experts. It's a raw, sometimes description-less, list of material shader and parameter names, which will not be useful for someone who's not looking for exactly that.
Even experts will struggle to find this useful much of the time. Only extreme "power users" may find this to be particularly helpful.





Shader Usage Terminology:
Type
Explanation
Brushes
Standard map geometry and displacements, which is/are part of the current map BSP
Decals
Bullet impacts, blood splatter, and other things that are laid on top of brushes or models
Fallback
Automatically swapped in place of another shader depending on your system's capabilities
You should probably not use a fallback shader as a material's main shader, however it's possible to make manual fallbacks in the middle of a material that may use these, though that's not particularly useful for Source Filmmaker
Internal
Automatically used by Source Filmmaker itself or by a material that Source Filmmaker uses itself
You should probably not make your own material with this shader
Models
Models, whether they be props found in maps or manually-created animation sets
Particles
Particle systems
Ropes
Cables, ropes, wires, and the like, often placed as power lines in some maps
Can also be present on models, though this is rare, and Source Filmmaker doesn't display that for animation set models
?
When appended to another usage, I'm uncertain about if this usage is correct
???
When listed on its own line, I'm uncertain about if there are other valid usages for this shader



Parameter Type Terminology:
Type
Explanation
bool
A boolean value, which is either true/enabled (1) or false/disabled (0)
color
A colour, which is 4 floats, correlating to red, green, blue, and alpha respectively
Technically, a color type variable is 4 ints with values 0-255, no more or less, but Source permits you to use a vector3 or vector4 in its place, and Source will read the material as though its a vector3 or vector4, allowing you to go outside the 0%-100% range
The alpha value is usually (if not always?) unused
element_array
A pair of curly brackets that contain sub-elements
Only used in the -- Addendum -- and Patch sections
float
A floating point value, which is any number, fractional or not
When writing a value between -1.0 and 1.0, the 0 before the period is optional; .5 is equivalent to 0.5
int
An integer, which is a whole/non-fractional number
material
A path to a VMT/material, not including "materials/" at the start (unless specified otherwise), with ".vmt" at the end being optional (unless specified otherwise)
Must be wrapped in quotes (") if it contains spaces
matrix
An array of 16 floats, which makes up a display/transformation matrix
Can be written like "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in a material
Can also be written like "[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]" for more advanced transformations
string
A string, which is text
Neither a material nor a texture, a standard string is only used for a select few parameters
Must be wrapped in quotes (") if it contains spaces
texture
A path to a VTF/texture, not including "materials/" at the start, with ".vtf" at the end being optional
Must be wrapped in quotes (") if it contains spaces
vector2
An array of 2 floats
vector3
An array of 3 floats
vector4
An array of 4 floats

For colors, vector2s, vector3s, and vector4s, it's possible to specify a single float that will get applied identically to each number of the variable.
For example, setting a color parameter to 0.5 becomes 50% red, 50% green, and 50% blue, being a grey colour.

If you want to adjust each number separately, you must separate the numbers by spaces and wrap the group of numbers between { and } if you want values to be divided by 255 (so that values 0-255 become 0%-100%), or between [] if you want values to be used as is (so that values 0.0-1.0 become 0%-100%).
For example, "{255 128 0}" is (almost) the same as "[1 0.5 0]", both of them being 100% red, 50% green, and 0% blue, which is an orange colour.

(Note that due to Source using a gamma value of 2.2, using 50% in a colour parameter will result in a RGB output of 186 when rendered, not 128. This can be overcome by taking the number (in range 0.0-1.0, not 0-255) and multiplying it by itself 2.2 times.
For example, if you want a RGB output of 128, then 128 / 255 = (roughly) 0.5, and 0.5 ^ 2.2 = (roughly) 0.21763764082, so you should use 0.21763764082 in the material.)


For multi-number values, matrices, as well as paths/strings that contain spaces, the value must be wrapped in quotes ("), or Source Filmmaker will only interpret the first part of it as a value.
For values and parameter/shader names that don't have spaces, quotes are optional.



Parameter "Default" Explanation:
The parameter lists have a "Default Value / Additional Information" column. The default value for the parameter in question is shown in italics at the top of that column in each row, sometimes with additional information below that.

The default values are determined by examining a blank material (consisting of simply "_", being an unrecognized shader with no parameters set) in the built-in material editor (accessible by using "toolload vmt" and "mat_edit [material path]" in the console).
However, despite being based on a blank material, the listed "default" value is not actually always default;

Some parameters, such as the VertexLitGeneric shader's $ambientocclusion, have different defaults depending on other parts of the material.
And other parameters (notably, but not only, textures) may act one way if they're set, and another way if they're unset, in which case setting them to their "default" value can have a different outcome compared to not setting them at all.
And yet other parameters, such as the EyeRefract shader's $dilation, have one value defined as the "default", yet choose to use a different value if the parameter isn't set. I will mark this with "despite X being listed as the default, Y is used if the parameter isn't defined" where I'm aware of this happening, but this likely also happens many places where I haven't noted that.
-- List of Shaders (A-L) --
In the below list, "Shader Name" is the name of the shader, to be put at the beginning of a material, "Usage" explains what circumstances the shader can be used in, and "Additional Notes" is some extra information that might be nice to know. Not all shaders' usage is known/listed, and even the listed usage may occasionally be wrong or incomplete.

Shader Name
Usage
Additional Notes
Aftershock
Models
Aftershock_dx9
Fallback
Bik
Blob
Blob_dx9
Fallback
BufferClearObeyStencil
Cable
Ropes
Cable_DX9
Fallback
Cloak
Cloak_DX90
Fallback
CustomHero
Models
CustomHero_dx9
Fallback
DebugTangentSpace
Shows the surface's normal directions, relative to the world, in colour ranges of -100% to +100% (where anything less than 0% is just rendered as 0%)
DebugTextureView
DebugTextureView_dx9
Fallback
DecalModulate
Decals
DecalModulate_dx9
Fallback
deferred_global_light
deferred_post_process
deferred_simple_light
deferred_specular_bloom
deferred_unlit
DepthOfField
Engine_Post
Internal
Used by some post-process filters applied in game view
EyeGlint
EyeGlint_dx9
Fallback
EyeRefract
Models
Supports Source's dynamic-UV-projection QC eye system
EyeRefract_dx9
Fallback
eyes
Models
Supports Source's dynamic-UV-projection QC eye system
Eyes_dx9
Fallback
Flesh
Flesh_dx9
Fallback
floatcombine_autoexpose
GlobalLitSimple
GlobalLitSimple_DX90
Fallback
hsl_filmgrain_pass1
Internal?
Used by "HSL Grain Effect" clips added to the scene through the Clip Editor?
hsl_filmgrain_pass2
Internal?
Used by "HSL Grain Effect" clips added to the scene through the Clip Editor?
IceSurface
IceSurface_dx9
Fallback
Infected
Models
Used by Left 4 Dead 2's common infected/zombies, allowing them to have randomly coloured clothing and arbitrarily-positioned wounds
LightmappedGeneric
Brushes
This is the most commonly-used shaded shader for brushes
LightmappedReflective
Brushes
Does an extra render pass to dynamically reflect something against the surface's plane (but only one plane per frame, and the plane must be flat - Multiple polygons along the same plane is allowed)
LightmappedReflective_DX90
Fallback
LightShafts
Internal?
Related to user-placed volumetric lights in Source Filmmaker?
LightShafts_dx9
Fallback
-- List of Shaders (M-Z) --
Shader Name
Usage
Additional Notes
ManifoldSurface
ManifoldSurface_dx9
Fallback
Modulate
Brushes
Models
???
Makes this material's RGB output multiply the background instead of replacing it
Modulate_DX9
Fallback
MonitorScreen
MonitorScreen_DX9
Fallback
MorphAccumulate
MorphWeight
MotionBlur
Internal
Used by the game engine's motion blur effect? Probably not used by Source Filmmaker's render sampling?
Multiblend
Brushes
Multiblend_DX90
Fallback
Occlusion
paintblob
paintblob_dx9
Fallback
ParallaxTest
Brushes
???
Does parallax mapping(?), but is rendered full-bright(?)
An additional material using the Modulate shader can be laid on top to fake shading
ParticleLitGeneric_DX9
Based on the shader name, this is a DirectX 9 fallback for a shader called ParticleLitGeneric, however no such shader is included with Source Filmmaker
ParticleSphere
Patch
Brushes
Decals
Models
Particles
Ropes
???
Loads another material as a "parent", and can add or replace parameters in the "child" material
This is technically not an actual shader itself, and is only listed here for completeness' sake
See the -- Addendum -- section for more information
Portal
Portal_DX90
Fallback
PortalRefract
PortalRefract_dx9
Fallback
PortalStaticOverlay
Projected
Projected_DX90
Fallback
ProtoIce
ProtoIce_dx9
Fallback
Prototype
Prototype_dx9
Fallback
Refract
Brushes?
Models
Displaces/Distorts/Refracts pixels rendered behind this material
Can also be used for material overlays
Refract_DX90
Fallback
Sample4x4_Blend
screenspace_general
ShadowBuild
Internal?
Might be related to game engine shadows?
ShadowModel
Internal?
Model?
Might be related to game engine shadows?
ShatteredGlass
Sky
Brushes?
Used for 2D skyboxes
Sky_HDR_DX9
Fallback?
SplineRope
Ropes
Sprite
Sprite_DX9
Fallback
SSAO
Internal?
Used by Source Filmmaker's SSAO?
Teeth
Models
Sets its brightness depending on the value of a flex named "mouth"?
Teeth_DX9
Fallback
UI
UI_DX90
Fallback
UnlitGeneric
Brushes
Models
Particles
???
This is the most commonly-used unshaded shader
Can also be used for material overlays
UnlitTwoTexture
Brushes?
Models
Allows two base/diffuse textures/albedos that can be transformed independently
UnlitTwoTexture_DX9
Fallback
VertexLit_SOB
VertexLitGeneric
Models
This is the most commonly-used shaded shader for models
VolumeClouds
Models?
???
VolumeClouds_dx9
Fallback
VortWarp
Brushes
Models
VortWarp_DX9
Fallback
Water
Brushes
Displaces/Distorts/Refracts pixels rendered behind this material
Does an extra render pass to dynamically reflect something against the surface's plane (but only one plane per frame, and the plane must be flat - Multiple polygons along the same plane is allowed)
Water_DX90
Fallback
Water_DX9_HDR
Fallback
WindowImposter
Brushes
WindowImposter_DX90
Fallback
Wireframe
Brushes?
Decals?
Models
Particles?
Ropes?
???
Renders a one-pixel-wide line along each edge of every triangle
Wireframe_DX9
Fallback
WorldTwoTextureBlend
Brushes
WorldVertexTransition
Brushes
Has an extra set of parameters to set up a "second sub-material"
Displacements can set a per-vertex value to determine how much to use "sub-material one" and how much to use "sub-material two"
WorldVertexTransition_DX9
Fallback
WriteStencil
WriteZ
-- Global Parameters --
This is a list of material parameters that are recognized by Source Filmmaker regardless of which shader is being used. They might not all affect something in every shader, but they are technically recognized.

Parameter
Type
Default Value / Additional Information
$additive
bool
0
Makes this material's RGB output add on top of the background instead of replacing it
$allowalphatocoverage
bool
0
Makes this material mostly "on/off"-transparent, but with 3 steps of gradual translucency between fully opaque and fully transparent, to get the best of both worlds when comparing $alphatest and $translucent
Requires $alphatest
$alpha
float
1
Sets this material's opacity
$alphamodifiedbyproxy_do_not_set_in_vmt
bool
0
Probably marks a material as transparent even if no effects actually make it transparent?
$alphatest
bool
0
Makes this material "on/off"-transparent (if $basetexture isn't entirely opaque), but not gradually-translucent
For gradual translucency, use $alpha or $translucent
$basealphaenvmapmask
bool
0
Makes $envmap use the alpha channel of $basetexture as an effect mask
$basetexture
texture
"shadertest/BaseTexture"
Typically sets the diffuse texture/albedo used by this material
$basetexturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $basetexture
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$color
color
"{255 255 255 255}"
Tints the material, depending on what other effects the material's shader does
$color2
color
"{255 255 255 255}"
Stacks multiplicatively on top of $color
$debug
bool
0
$decal
bool
0
Slightly offsets the Z-buffer, to prevent Z-fighting against other triangles in the same space?
$envmapcameraspace
bool
0
$envmapmode
bool
0
$envmapsphere
bool
0
$flat
bool
0
$frame
int
0
Sets which frame of $basetexture to use
$halflambert
bool
0
Brightens the darker shading of this material
Probably only affects map lighting, not projected textures/custom lights?
$ignorez
bool
0
This material is rendered on top of things in front of it
$model
bool
0
Tells the shader that this is a model, not a brush
Despite this, not all shaders look at whether this is enabled or disabled
$no_draw
bool
0
Prevents this material from being rendered
$no_fullbright
bool
0
$nocull
bool
0
Makes this material be rendered from both sides, not only the front
This can cause issues with shading-related effects, however
$nodecal
bool
0
Prevents decals from being applied to this material
This is barely applicable outside of Game Mode recordings
$nofog
bool
0
Prevents fog from drawing on top of/changing the appearance of this material
$normalmapalphaenvmapmask
bool
0
Makes $envmap use the alpha channel of $bumpmap as an effect mask
$opaquetexture
bool
0
$selfillum
bool
0
Enables some areas of the material to be full-bright
$softwareskin
bool
0
$srgbtint
color
"{255 255 255 255}"
$surfaceprop
string
"default"
This determines what bullet impact effects to use when shooting this material, which isn't relevant for Source Filmmaker outside of Game Mode recordings.
$translucent
bool
0
Makes this material gradually-translucent (if $basetexture isn't entirely opaque)
This sometimes has bad depth sorting, compared to opaque or "on/off"-transparent (alpha-tested) materials
$use_in_fillrate_mode
bool
0
$vertexalpha
bool
0
Enables per-vertex alpha
This is not applicable for models, as they don't contain per-vertex alpha data
$vertexcolor
bool
0
Enables per-vertex colouring
This is not applicable for models, as they don't contain per-vertex colour data
$vertexfog
bool
0
$wireframe
bool
0
Renders a one-pixel-wide line along each edge of every triangle, instead of filling out the triangle
$xxxxxunusedxxxxx
bool
0
$xxxxxxunusedxxxxx
bool
0
$znearer
bool
0
-- Addendum --
This is an addendum to the above sections, with some additional information that doesn't fit well anywhere else.


Override Material Auto-Attributes
When adding override materials to a model's animation set in Source Filmmaker, there are a few attributes that will automatically be added to the override materials if certain parameters exist in the VMT files, to help you override the most commonly-overriden parameters faster.
It's worth noting that, unlike when you add a new attribute yourself, these parameters will take on their value from the material rather than being set to zero.

Here is a list of the 3 parameters that can have attributes automatically added:

Parameter
Type
Default Value / Additional Information
$cloakcolortint
color
"{255 255 255 255}"
Will be added if the material has $cloakpassenabled
Sets the colour of the refraction used for Team Fortress 2's Spy cloaking effect
$cloakfactor
float
0
Will be added if the material has $cloakpassenabled
Sets the progress of Team Fortress 2's Spy cloaking effect, where 0.0 is fully opaque, 0.5 is half-translucent, and 1.0 is fully invisible
$colortint_base
color
"{255 255 255 255}"
While technically not recognized by any shader (therefore always outputting a warning to the console when encountered), Source Filmmaker will still automatically add a color type attribute for this if it's present in a material while creating override materials, to assist in letting you change the colour of a paintable Team Fortress 2 item
You can use material proxies in the VMT to copy the value of $colortint_base to a recognized material parameter, such as $color, allowing immediate recolourability after creating override materials



Additional "Parameters"
While technically not shader parameters per se, the built-in material editor still lists these things, and so I'll include them here for completeness' sake.

Even though they're not directly shader parameters in and of themselves, they still affect how the material is rendered; Fallbacks tweak the parameters being used on lesser machines, material proxies can modify other parameters through math and the like, and the shader being used, while not a parameter of the shader, of course has a major impact on how the material is displayed.

Note that these "parameters" don't start with $, as they're not used by the shader itself.

Parameter
Type
Default Value / Additional Information
fallbacks
element_array
{ }
This is where manual parameter changes for shader fallbacks are set up
This isn't relevant for Source Filmmaker, as it's DirectX 9-exclusive
(Fallback parameters are preferred (possibly required?) to be set up in a different way than through "fallbacks". "fallbacks" is simply where they're stored internally)
proxies
element_array
{ }
This is where material proxies are set up, for things like (but far from limited to) animated textures or colours
shader
string
""
This is the shader that this material uses
Since the first thing encountered in a material is used as its main shader, there should be no point in manually setting "shader" within the material
(Since the first thing encountered is used as the shader, I don't know if you can manually set "shader" like this)



Tool Parameters
The following parameters mean almost nothing(?) for any Source game nor Source Filmmaker directly, but are used by map-editing and -compiling tools for a few special effects, such as whether a specific brush is water or should display the skybox.

Note that these parameters start with %, not $, to indicate that they're used by map tools rather than the shaders themselves.
Additionally, note that there may be additional tool parameters that are recognized by map tools that aren't shown here, due to not being in Source Filmmaker's built-in material editor. This includes %tooltexture.

Parameter
Type
Default Value / Additional Information
%compileclip
bool
0
%compiledetail
bool
0
%compilehint
bool
0
%compileinvisible
bool
0
%compileladder
bool
0
%compilenochop
bool
0
%compilenodraw
bool
0
%compilenolight
bool
0
%compilenonsolid
bool
0
%compilenpcclip
bool
0
%compileorigin
bool
0
%compileplayercontrolclip
bool
0
%compileskip
bool
0
%compilesky
bool
0
%compileslime
bool
0
%compiletrigger
bool
0
%compilewater
bool
0
%compilewet
bool
0
%detailtype
string
""
Source Filmmaker's material editor has a selection box for this, meaning that it's a special type of string, but it contains 0 items in the "Detail Type" selection box
%playerclip
bool
0
Aftershock
Parameter
Type
Default Value / Additional Information
$bluramount
float
1
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $normalmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$colortint
color
"{255 255 255 255}"
$groundmax
float
1
$groundmin
float
1
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$refractamount
float
2
$silhouettecolor
color
"{255 255 255 255}"
$silhouettethickness
float
1
$time
float
0
Intended to be the output of the CurrentTime proxy
Bik
Parameter
Type
Default Value
$cbtexture
texture
"shadertest/BaseTexture"
$crtexture
texture
"shadertest/BaseTexture"
$ytexture
texture
"shadertest/BaseTexture"
Blob
Parameter
Type
Default Value / Additional Information
$animatearmpulses
bool
1
$armature
bool
0
$armcolor
vector3
"[1 1 1]"
$armwiden
bool
0
$armwidthbias
float
0
$armwidthexp
float
1
$armwidthscale
float
1
$backsurface
bool
0
$basecolortint
vector3
"[1 1 1]"
$bbmax
vector3
"[0 0 0]"
$bbmin
vector3
"[0 0 0]"
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumpstrength
float
1
Multiplies $normalmap's normal-mapping
$contactshadows
bool
1
$diffuseboost
float
1
$fresnelbumpstrength
float
1
$fresnelwarptexture
texture
"shadertest/BaseTexture"
$glowscale
float
4
$interior
bool
1
$interiorambientscale
float
0.3
$interiorbackgroundboost
float
7
$interiorbacklightscale
float
0.3
$interiorcolor
vector3
"[0.7 0.5 0.45]"
$interiorfoglimit
float
0.8
$interiorfognormalboost
float
0
$interiorfogstrength
float
0.06
$interiorrefractblur
float
0.2
$interiorrefractstrength
float
0.015
$lightwarptexture
texture
"shadertest/BaseTexture"
Sets a custom shading ramp for non-projected lighting
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$opacitytexture
texture
"shadertest/BaseTexture"
$phongboost
float
1
$phongboost2
float
1
$phongexponent
float
1
$phongexponent2
float
1
$pulse
bool
1
$rimlightboost
float
1
$rimlightexponent
float
1
$selfillumfresnel
bool
0
$selfillumfresnelminmaxexp
vector3
"[0.7 0.5 0.45]"
$selfillumtint
vector3
"[0.7 0.5 0.45]"
$specmasktexture
texture
"shadertest/BaseTexture"
$translucentfresnelminmaxexp
vector3
"[0.8 1 1]"
$uvprojoffset
vector3
"[0 0 0]"
$uvscale
float
0.02
$volumetexturetest
bool
1
BufferClearObeyStencil
Parameter
Type
Default Value
$clearalpha
float
-1
$clearcolor
float
1
$cleardepth
float
1
Cable
Parameter
Type
Default Value
$bumpmap
texture
"cable/cablenormalmap"
Normal-mapping
$maxlight
float
0.3
$minlight
float
0.1
Cloak
Parameter
Type
Default Value
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $normalmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$cloakfactor
float
0
Sets the intensity of Team Fortress 2's Spy cloaking effect, where 0.0 is fully opaque, 0.5 is half-translucent, and 1.0 is fully invisible
$fresnelreflection
float
1
$lightwarptexture
texture
"shadertest/BaseTexture"
Sets a custom shading ramp for non-projected lighting
$masked
bool
0
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping, for $basetexture(?) and refraction(?)
$nowritez
int
0
$phongalbedotint
bool
1
Whether to tint phong highlights based on $basetexture
Requires(?) $phongexponenttexture, using its green channel as a mask for how much to tint with the diffuse texture
$phongboost
float
1
Sets the brightness of phong highlights
$phongexponent
float
5
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights
If present, overrides $phongexponenttexture
$phongexponenttexture
texture
"shadertest/BaseTexture"
Red channel: Sets the size/"tightness" of phong highlights, where more red gives smaller highlights
Green channel: $phongalbedotint mask
Alpha channel: $rimlight mask, if $rimmask is enabled
$phongfresnelranges
vector3
"[0 0.5 1]"
Multiplies phong highlight brightness by the first value when facing the mesh head-on, the third value at grazing angles, and the second value in between
$phongtint
vector3
"[0 0 0]"
Sets the colour, but not brightness, of phong highlights
$refractamount
float
2
$refracttint
color
"{255 255 255 255}"
$refracttinttexture
texture
"models/shadertest/shield"
$refracttinttextureframe
int
0
Sets which frame of $refracttinttexture to use
$rimlight
bool
0
Enables a rim light on upwards-facing mesh when seen at grazing angles
$rimlightboost
float
1
Sets the brightness of $rimlight
$rimlightexponent
float
4
Sets the size/"tightness" of $rimlight, where higher values give smaller highlights
$rimmask
bool
0
Whether to mask $rimlight per-texel
Requires $phongexponenttexture, using its alpha channel as a mask
$time
float
0
Intended to be the output of the CurrentTime proxy
CustomHero
The CustomHero shader was used for DotA 2's hero models before that game was ported from the Source 1 Engine to the Source 2 Engine.
It can be thought of as an alternative to VertexLitGeneric.

A notable difference between the two is that with the CustomHero shader, $envmap is(?) dimmed by (a lack of) non-projected lighting, making it appear less overly bright in dark areas.

Parameter
Type
Default Value / Additional Information
$allowdiffusemodulation
bool
0
$ambientscale
float
0
$bumpframe
int
0
Sets which frame of $bumpmap to use
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $bumpmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$cloakcolortint
color
"{255 255 255 255}"
Sets the colour of the refraction used for Team Fortress 2's Spy cloaking effect
Requires $cloakpassenabled
$cloakfactor
float
0
Sets the progress of Team Fortress 2's Spy cloaking effect, where 0.0 is fully opaque, 0.5 is half-translucent, and 1.0 is fully invisible
Requires $cloakpassenabled
$cloakintensity
float
1
$cloakpassenabled
bool
0
Enables Team Fortress 2's Spy cloaking effect
Controlled by $cloakcolortint, $cloakfactor, $cloakintensity, and $refractamount
$colorwarp
texture
"engine/rgbcolorspace"
$colorwarpintensity
float
0
$detail1
texture
"shader/BaseTexture"
Sets a secondary texture that blends with $basetexture
$detail1blendfactor
float
1
Sets how much $detail1 will be blended with $basetexture
$detail1blendmode
int
0
Sets how $detail1 will be blended with $basetexture
$detail1blendtofull
float
0
$detail1frame
int
0
Sets which frame of $detail1 to use
$detail1scale
float
4
Sets how many times $detail1 will tile across $basetexture
$detail1texturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $detail1
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$detail2
texture
"shader/BaseTexture"
Sets a tertiary texture that blends with $basetexture?
$detail2blendfactor
float
1
Sets how much $detail2 will be blended with $basetexture
$detail2blendmode
int
0
Sets how $detail2 will be blended with $basetexture
$detail2frame
int
0
Sets which frame of $detail2 to use
$detail2scale
float
4
Sets how many times $detail2 will tile across $basetexture
$detail2texturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $detail2
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$diffusenormalmapbias
float
0
$diffusewarp
texture
"engine/lightinggradient"
$diffusewarpblendtofull
float
0
$envmap
texture
"env_cubemap"
Specifies a cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmapintensity
float
1
$fresnelcolorwarp
texture
"engine/rgbcolorspace"
$fresnelcolorwarpblendtofull
float
0
$fresnelwarp
texture
"engine/fresnelranges"
$maskenvbymetalness
bool
0
$maskmap1
texture
"shader/BaseTexture"
$maskmap2
texture
"shader/BaseTexture"
$metalnessblendtofull
float
0
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping, for Team Fortress 2's Spy cloaking refraction?
$normalmapframe
int
0
Sets which frame of $normalmap to use
$reflectionstintbybaseblendtonone
float
0
$refractamount
float
2
Sets how much refraction distorts what's behind it
Applicable when $cloakfactor is between 0.0 and 1.0
$rimlightblendtofull
float
0
$rimlightcolor
vector3
"[1 1 1]"
$rimlightscale
float
0
$selfillumblendtofull
float
0
$specularblendtofull
float
0
$specularcolor
vector3
"[1 1 1]"
$specularexponent
float
1
$specularexponentblendtofull
float
0
$specularscale
float
1
$specularwarp
texture
"engine/lightinggradient"
DebugTangentSpace
The DebugTangentSpace shader shows the surface's normal directions, relative to the world, in colour ranges of -100% to +100% (where anything less than 0% is just rendered as 0%).

The X value is rendered as red, Y as green, and Z as blue.


This shader doesn't implement any non-global parameters.
DebugTextureView
Parameter
Type
Default Value
$showalpha
bool
0
DecalModulate
Parameter
Type
Default Value
$fogexponent
float
0.4
$fogscale
float
1
deferred_global_light
Parameter
Type
Default Value
$depth_texture
texture
"_rt_deferred_depth"
$diffuse_texture
texture
"_rt_deferred_diffuse"
$normal_texture
texture
"_rt_deferred_normal"
$specular_texture
texture
"_rt_deferred_specular"
deferred_post_process
Parameter
Type
Default Value / Additional Information
$debug_shader
int
0
$depth_texture
texture
"_rt_deferred_depth"
$diffuse_texture
texture
"_rt_deferred_diffuse"
$fow
texture
""
"FOW" stands for "fog of war", relating to what is in or out of sight in DotA 2?
$fow_color_factor
float
0.25
$fow_darkness
float
0.5
$fow_gray_factor
float
0.75
$fow_gray_hilights
float
2
$fow_height_adjustment
float
0
$fow_height_color
color
"{0 0 0 255}"
$fow_height_scale
float
0
$fow_height_scale_1
float
0
$fow_height_scale_2
float
0
$fow_height_scroll
vector4
"[0 0 0 0]"
$fow_height_texture
texture
"dev/ssao_random"
$fow_height_world_scale
float
0
$frame_texture
texture
"_rt_FullFrameFB1"
$normal_texture
texture
"_rt_deferred_normal"
$specular_texture
texture
"_rt_SmallFB1"
$ssao_intensity
float
1
$ssao_texture
texture
"_rt_SSAO_result"
$ssao_tint
color
"{0 0 0 255}"
deferred_simple_light
Parameter
Type
Default Value
$depth_texture
texture
"_rt_deferred_depth"
$diffuse_texture
texture
"_rt_deferred_diffuse"
$normal_texture
texture
"_rt_deferred_normal"
$specular_texture
texture
"_rt_deferred_specular"
$subtractive
bool
0
deferred_specular_bloom
Parameter
Type
Default Value
$debug_shader
int
0
$depth_texture
texture
"_rt_deferred_depth"
$diffuse_texture
texture
"_rt_deferred_diffuse"
$frame_texture
texture
"_rt_FullFrameFB1"
$normal_texture
texture
"_rt_deferred_normal"
$specular_bloom_scale
float
1
$specular_texture
texture
"_rt_deferred_specular"
$ssao_texture
texture
"_rt_SSAO_result"
$subtractive
bool
0
deferred_unlit
Parameter
Type
Default Value
$deferred_additive
int
0
$depth_texture
texture
"_rt_deferred_depth"
$diffuse_texture
texture
"_rt_deferred_diffuse"
$normal_texture
texture
"_rt_deferred_normal"
$specular_texture
texture
"_rt_deferred_specular"
DepthOfField
Parameter
Type
Default Value
$farblurdepth
float
0
$farblurradius
float
0
$farfocusdepth
float
0
$farplane
float
0
$nearblurdepth
float
0
$nearblurradius
float
0
$nearfocusdepth
float
0
$nearplane
float
0
$quality
int
0
$smallfb
texture
"_rt_SmallFB1"
Engine_Post
Parameter
Type
Default Value
$aaenable
bool
0
$aainternal1
vector4
"[0 0 0 0]"
$aainternal2
vector4
"[0 0 0 0]"
$aainternal3
vector4
"[0 0 0 0]"
$allowlocalcontrast
bool
0
$allownoise
bool
0
$allowvignette
bool
0
$bloomamount
float
1
$bloomenable
bool
1
$blurredvignetteenable
bool
0
$blurredvignettescale
float
0
$depthblurenable
bool
0
$depthblurfocaldistance
float
0
$depthblurstrength
float
0
$desaturateenable
int
0
$desaturation
float
0
$fade
int
0
$fadecolor
vector4
"[0 0 0 0]"
$fadetoblackscale
float
0
$fbtexture
texture
"_rt_FullFrameFB"
$internal_vignettetexture
texture
"dev/vignette"
$localcontrastedgescale
float
0
$localcontrastenable
bool
0
$localcontrastmidtonemask
float
0
$localcontrastscale
float
0
$localcontrastvignetteend
float
0
$localcontrastvignettestart
bool
0
$noiseenable
bool
0
$noisescale
float
0
$noisetexture
texture
""
$num_lookups
float
0
$screenblurstrength
float
0
$screeneffecttexture
texture
""
$toolcolorcorrection
float
1
$toolmode
bool
0
$tooltime
float
0
$tv_gamma
int
0
$vignetteenable
bool
0
$vomitcolor1
vector3
"[0 0 0]"
$vomitcolor2
vector3
"[0 0 0]"
$vomitenable
bool
0
$vomitrefractscale
float
0.15
$weight0
float
1
$weight1
float
1
$weight2
float
1
$weight3
float
1
$weight_default
float
1
EyeGlint
This shader doesn't implement any non-global parameters.
EyeRefract
The EyeRefract shader is one of the two shaders that support the Source Engine's dynamic-UV-projection QC eye system, allowing a model to look around without having to rotate bones or use flexes to move the eyes about.
The other of the two shaders is Eyes, which isn't nearly as feature-rich as EyeRefract.

Parameter
Type
Default Value / Additional Information
$ambientocclcolor
vector3
"[1 1 1]"
Sets what colour $ambientoccltexture's blackness corresponds to
Also sets what colour Source Filmmaker's SSAO tints to?
Despite "[1 1 1]" being listed as the default, "[0 0 0]" is used if the parameter isn't defined?
$ambientoccltexture
texture
"shadertest/BaseTexture"
Uses the model's original UV map
Multiplies $iris's colours, where this texture's blackness' tint is set by $ambientocclcolor
$ambientocclusion
float
1
Sets how much Source Filmmaker's SSAO should affect this material, from 0.0 to 1.0
Does not affect $ambientoccltexture?
$cloakcolortint
color
"{255 255 255 255}"
Sets the colour of the refraction used for Team Fortress 2's Spy cloaking effect
Requires $cloakpassenabled
$cloakfactor
float
0
Sets the progress of Team Fortress 2's Spy cloaking effect, where 0.0 is fully opaque, 0.5 is half-translucent, and 1.0 is fully invisible
Requires $cloakpassenabled
$cloakpassenabled
bool
0
Enables Team Fortress 2's Spy cloaking effect
Controlled by $cloakcolortint, $cloakfactor, and $refractamount
$corneabumpstrength
float
1
Multiplies $corneatexture's normal-mapping
$corneatexture
texture
"shadertest/BaseTexture"
Has half as large a UV projection as $iris
Red and Green channels: Normal-mapping
Blue channel: $parallaxstrength mask
Alpha channel: Does something, but I haven't checked what yet
$dilation
float
0
Shrinks the pupil if less than 0.5, and expands it if more than 0.5
The shape/mask is either determined by $corneatexture or hardcoded as a round circle that starts about halfway from the edge of $iris to the centre
Despite 0 being listed as the default, 0.5 is used if the parameter isn't defined
$emissiveblendenabled
bool
0
$emissiveblendflowtexture
texture
""
$emissiveblendscrollvector
vector2
"[0.11 0.124]"
$emissiveblendstrength
float
1
$emissiveblendtexture
texture
""
$emissiveblendtint
color
"{255 255 255 255}"
$entityorigin
vector3
"[0 0 0]"
The world-space position that $warpparam squishes horizontally towards
Intended to be the output of the EntityOrigin proxy
$envmap
texture
"shadertest/shadertest_env"
Specifies a cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$eyeballradius
float
0
If $raytracesphere is enabled, sets the ray-tracing length
$eyeorigin
vector3
"[0 0 0]"
Presumably the centre point that dynamic UV projection will project onto
$glossiness
float
1
Multiplier for $envmap
$intro
bool
0
Enables $warpparam
$iris
texture
"shadertest/BaseTexture"
Colour channels: The diffuse texture/albedo
Alpha channel: I don't know the specifics, but makes the output brighter or greyer than the colour channels - Often, the sclera (eye white) is opaque or noisy, while the iris and pupil is fully transparent
$irisframe
int
0
Sets which frame of $iris to use
$irisu
vector4
"[0 1 0 0]"
Related to dynamic UV projection
$irisv
vector4
"[0 0 1 0]"
Related to dynamic UV projection
$lightwarptexture
texture
""
Sets a custom shading ramp for non-projected lighting
$parallaxstrength
float
1
Sets how much to do parallax mapping, using $corneatexture's blue channel as a mask
Be wary that parallax mapping can make the iris appear to "warp" across the model when viewing it from different directions
$raytracesphere
bool
1
Does something related to ray-tracing each pixel of the eye?
Despite 1 being listed as the default, 0 is used if the parameter isn't defined
$refractamount
float
2
Sets how much refraction distorts what's behind it
Applicable when $cloakfactor is between 0.0 and 1.0
$spheretexkillcombo
bool
1
Culls/Doesn't render pixels which are more than $eyeballradius units away from $eyeorigin(?)
Despite 1 being listed as the default, 0 is used if the parameter isn't defined
Requires $raytracesphere
$warpparam
float
0
When below 1, squishes the model horizontally towards $entityorigin and vertically upwards, with 0 being most squished
Requires $intro
eyes
The eyes shader is one of the two shaders that support the Source Engine's dynamic-UV-projection QC eye system, allowing a model to look around without having to rotate bones or use flexes to move the eyes about.
The other of the two shaders is EyeRefract, which is much more feature-rich than eyes.

Parameter
Type
Default Value / Additional Information
$dilation
float
0
Might not be functional in this shader?
$entityorigin
vector3
"[0 0 0]"
The world-space position that $warpparam squishes horizontally towards
Intended to be the output of the EntityOrigin proxy
$eyeorigin
vector3
"[0 0 0]"
Presumably the centre point that dynamic UV projection will project onto
$eyeup
vector3
"[0 0 0]"
$glint
texture
"shadertest/BaseTexture"
$glintu
vector4
"[0 1 0 0]"
Related to dynamic UV projection
$glintv
vector4
"[0 0 1 0]"
Related to dynamic UV projection
$intro
bool
0
Enables $warpparam
$iris
texture
"shadertest/BaseTexture"
The diffuse texture/albedo
If an alpha channel is present, transparent areas will show $basetexture (which uses the model's original UV map)
$irisframe
int
0
Sets which frame of $iris to use
$irisu
vector4
"[0 1 0 0]"
Related to dynamic UV projection
$irisv
vector4
"[0 0 1 0]"
Related to dynamic UV projection
$warpparam
float
0
When below 1, squishes the model horizontally towards $entityorigin and vertically upwards, with 0 being most squished
Requires $intro
Flesh
Parameter
Type
Default Value / Additional Information
$ambientboost
float
0
$ambientboostmaskmode
int
0
$backscatter
float
0
$bbmax
vector3
"[0 0 0]"
$bbmin
vector3
"[0 0 0]"
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumpstrength
float
1
Multiplies $normalmap's normal-mapping
$colorwarptexture
texture
"shadertest/BaseTexture"
$detail
texture
"shader/BaseTexture"
Sets a secondary texture that blends with $basetexture
$detailblendfactor
float
1
Sets how much $detail will be blended with $basetexture
$detailblendmode
int
0
Sets how $detail will be blended with $basetexture
$detailframe
int
0
Sets which frame of $detail to use
$detailscale
float
4
Sets how many times $detail will tile across $basetexture
$detailtexturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $detail
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$diffuseexponent
float
1
$diffusesoftnormal
float
0
$effectmaskstexture
texture
"shadertest/BaseTexture"
$forwardscatter
float
0
$fresnelbumpstrength
float
1
$fresnelcolorwarptexture
texture
"shadertest/BaseTexture"
$hueshiftfresnelexponent
float
2
$hueshiftintensity
float
0.5
$interior
bool
1
$interiorambientscale
float
0.3
$interiorbackgroundboost
float
7
$interiorbacklightscale
float
0.3
$interiorcolor
vector3
"[0.7 0.5 0.45]"
$interiorfogstrength
float
0.06
$interiorrefractblur
float
0.2
$interiorrefractstrength
float
0.015
$iridescenceboost
float
1
$iridescenceexponent
float
2
$iridescentwarp
texture
"shader/BaseTexture"
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$normal2softness
float
0
$opacitytexture
texture
"shadertest/BaseTexture"
$phongcolortint
vector3
"[0 0 0]"
Sets the colour of phong highlights
$phongexponent
float
1
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights
$phongexponent2
float
1
$phongfresnel
vector3
"[0 0.5 1]"
Multiplies phong highlight brightness by the first value when facing the mesh head-on, the third value at grazing angles, and the second value in between
$phongfresnel2
vector3
"[1 1 1]"
$phongscale
float
1
Sets the brightness of phong highlights?
$phongscale2
float
1
$phong2softness
float
1
$rimlightexponent
float
1
Sets the size/"tightness" of rim-lighting, where higher values give smaller highlights
$rimlightscale
float
1
Sets the brightness of rim-lighting?
$selfillumtint
vector3
"[0.7 0.5 0.45]"
Sets the colour of $selfillum
$ssbentnormalintensity
float
0.2
$sscolortint
vector3
"[0 0 0]"
$ssdepth
float
0.1
$sstintbyalbedo
float
0
$translucentfresnelminmaxexp
vector3
"[0.8 1 1]"
$transmatmaskstexture
texture
"shadertest/BaseTexture"
$uvprojoffset
vector3
"[0 0 0]"
$uvscale
float
1
floatcombine_autoexpose
Parameter
Type
Default Value
$alphasharpenfactor
float
0
$autoexpose_max
float
2
$autoexpose_min
float
0.5
$bloomamount
float
1
$bloomexponent
float
2
$bloomtexture
texture
""
$edge_softness
float
0
$exposure_texture
texture
""
$sharpness
float
1
$vignette_min_bright
float
1
$vignette_power
float
4
$woodcut
float
0
GlobalLitSimple
Parameter
Type
Default Value / Additional Information
$fow
texture
""
"FOW" stands for "fog of war", relating to what is in or out of sight in DotA 2?
$mod2x
bool
0
$scroll_uv_direction
vector2
"[0 0]"
$scroll_uv_scale
float
0
$spectexture
texture
""
$specular_bloom
float
1
hsl_filmgrain_pass1
Parameter
Type
Default Value
$grain
texture
""
$hslnoisescale
vector4
"[0 0 0 0]"
$input
texture
""
$scalebias
vector4
"[0 0 0 0]"
hsl_filmgrain_pass2
Parameter
Type
Default Value
$input
texture
""
IceSurface
Parameter
Type
Default Value
$backsurface
bool
0
$basecolortint
vector3
"[1 1 1]"
$bbmax
vector3
"[0 0 0]"
$bbmin
vector3
"[0 0 0]"
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumpstrength
float
1
Multiplies $normalmap's normal-mapping
$contactshadows
bool
1
$diffusescale
float
1
$envmap
texture
""
Specifies a cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmaptinttint
vector3
"[1 1 1]"
Sets the colour of $envmap
$fresnelbumpstrength
float
1
$fresnelwarptexture
texture
"shadertest/BaseTexture"
$interior
bool
1
$interiorambientscale
float
0.3
$interiorbackgroundboost
float
7
$interiorbacklightscale
float
0.3
$interiorcolor
vector3
"[0.7 0.5 0.45]"
$interiorfoglimit
float
0.8
$interiorfognormalboost
float
0
$interiorfogstrength
float
0.06
$interiorrefractblur
float
0.2
$interiorrefractstrength
float
0.015
$lightwarptexture
texture
"shadertest/BaseTexture"
Sets a custom shading ramp for non-projected lighting
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$opacitytexture
texture
"shadertest/BaseTexture"
$phongboost
float
1
Sets the brightness of phong highlights
$phongboost2
float
1
$phongexponent
float
1
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights
$phongexponent2
float
1
$rimlightboost
float
1
Sets the brightness of rim-lighting
$rimlightexponent
float
1
Sets the size/"tightness" of rim-lighting, where higher values give smaller highlights
$specmasktexture
texture
"shadertest/BaseTexture"
$translucentfresnelminmaxexp
vector3
"[0.8 1 1]"
$uvprojoffset
vector3
"[0 0 0]"
$uvscale
float
0.02
Infected
The Infected shader is used by Left 4 Dead 2's common infected/zombies, allowing them to have randomly coloured clothing and other minor randomness, plus allowing two(?) ellipsoids to be cut away, for stuff like arbitrarily-positioned axe cuts.

This shader uses $basetexture as a series of masks, rather than a diffuse texture/albedo.

Parameter
Type
Default Value
$allowdiffusemodulation
bool
1
If disabled, prevents $color and $color2 from affecting this material
$ambientocclusion
float
0
Sets how much Source Filmmaker's SSAO should affect this material, from 0.0 to 1.0?
$blendtintbybasealpha
bool
0
Makes $color and $color2 use $basetexture's alpha channel as a mask
$bloodcolor
vector3
"[1 0 0]"
$bloodmaskrange
vector2
"[0 1]"
$bloodphongexponent
float
5
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights, for $bloodmaskrange?
$bloodspecboost
float
1
$burndetailtexture
texture
"shadertest/detail"
Sets a tertiary texture that blends with $basetexture?
Requires $burning?
$burning
bool
0
Enables $burndetailtexture?
$burnstrength
float
0
Sets how much $burndetailtexture will be blended with $basetexture?
$colortintgradient
int
0
Related to $gradienttexture?
$cutoutdecalmappingscale
float
1
$cutouttexturebias
float
0
$debugellipsoids
bool
0
Related to $ellipsoid*
$defaultphongexponent
float
5
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights, for things governed by neither $bloodphongexponent, $detailphongexponent, nor $skinphongexponent?
$detail
texture
"shadertest/detail"
Sets a secondary texture that blends with $basetexture
$detailblendfactor
float
1
Sets how much $detail will be blended with $basetexture
$detailframe
int
0
Sets which frame of $detail to use
$detailphongexponent
float
5
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights, for $detail?
$detailscale
float
4
Sets how many times $detail will tile across $basetexture
$ellipsoidcenter
vector3
"[0 0 0]"
$ellipsoidcenter2
vector3
"[0 0 0]"
$ellipsoidlookat
vector3
"[1 0 0]"
$ellipsoidlookat2
vector3
"[1 0 0]"
$ellipsoidscale
vector3
"[10 10 10]"
$ellipsoidscale2
vector3
"[10 10 10]"
$ellipsoidup
vector3
"[0 0 1]"
$ellipsoidup2
vector3
"[0 0 1]"
$ellipsoid2culltype
int
0
$eyeglow
bool
0
$eyeglowcolor
vector3
"[1 1 0.5]"
$eyeglowflashlightboost
float
100
$gradienttexture
texture
""
$phongboost
float
1
Sets the brightness of phong highlights
$phongfresnelranges
vector3
"[0 0.5 1]"
Multiplies phong highlight brightness by the first value when facing the mesh head-on, the third value at grazing angles, and the second value in between
$phongtint
vector3
"[0 0 0]"
Sets the colour of phong highlights
$rttshadowbuild
bool
0
Related to game engine shadows?
$sheetindex
int
0
$shinybloodexponent
float
17
$skinphongexponent
float
5
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights, for skin?
$skintintgradient
int
0
Related to $gradienttexture?
$staticprop
bool
0
$translucent_material
material
""
$woundcutouttexture
texture
""
$wounded
bool
0
Enables $ellipsoid* and/or related to $woundcutouttexture?
LightmappedGeneric
The LightmappedGeneric shader is the shader most commonly used for map brushes and displacements (map geometry). Lighting can be pre-calculated and baked into lightmaps, which this shader supports, allowing realistic lighting and shadows on materials using this shader. This shader supports many different effects.

Parameter
Type
Default Value / Additional Information
$albedo
texture
"shadertest/BaseTexture"
$alphatestreference
float
0
Sets the alpha cutoff value between opaque and transparent for $alphatest
Despite 0 being listed as the default, 0.5 is used if the parameter isn't defined?
$alpha2
float
1
Sets the opacity, for alpha-painted displacements
$basetexturenoenvmap
bool
0
Disables $envmap, for non-alpha-painted displacements
$basetexture2
texture
"shadertest/lightmappedtexture"
Sets the diffuse texture/albedo used, for alpha-painted displacements
$basetexture2noenvmap
bool
0
Disables $envmap, for alpha-painted displacements
$blendmasktransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $blendmodulatetexture
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$blendmodulatetexture
texture
""
Red channel: How much alpha-paint is needed to pass through the mask?
Green channel: Alpha-paint mask
$bumpframe
int
0
Sets which frame of $bumpmap to use
$bumpframe2
int
0
Sets which frame of $bumpmap2 to use
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping, for non-alpha-painted displacements
$bumpmap2
texture
"models/shadertest/shader3_normal"
Normal-mapping, for alpha-painted displacements
$bumpmask
texture
"models/shadertest/shader3_normal"
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $bumpmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$bumptransform2
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $bumpmap2
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$detail
texture
"shadertest/detail"
Sets a secondary texture that blends with $basetexture
$detailblendfactor
float
1
Sets how much $detail will be blended with $basetexture
$detail1blendmode
int
0
Sets how $detail will be blended with $basetexture
$detailframe
int
0
Sets which frame of $detail to use
$detailscale
float
4
Sets how many times $detail will tile across $basetexture
$detailtint
color
"{255 255 255 255}"
Sets the colour of $detail
$detail_alpha_mask_base_texture
bool
0
$edgesoftnessend
bool
0.5
Requires $softedges?
$edgesoftnessstart
bool
0.6
Requires $softedges?
$envmap
texture
"shadertest/shadertest_env"
Specifies a cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmapcontrast
float
0
Sets how much to square $envmap
Incompatible with $phong?
$envmapframe
int
0
Sets which frame of $envmap to use
$envmaplightscale
float
0
Sets how much $envmap is affected by lightmapping (pre-baked shadows)
$envmapmask
texture
"shadertest/shadertest_envmask"
Sets a mask for $envmap
$envmapmaskframe
int
0
Sets which frame of $envmapmask to use
$envmapmasktransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $envmapmask
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmapsaturation
float
1
Sets $envmap's saturation
Incompatible with $phong?
$envmaptint
color
"{255 255 255 255}"
Sets the colour of $envmap
$fow
texture
""
"FOW" stands for "fog of war", relating to what is in or out of sight in DotA 2?
$frame2
int
0
Sets which frame of $basetexture2 to use
$fresnelreflection
float
1
$height_scale
float
0.1
$lightwarptexture
texture
""
Sets a custom shading ramp for non-projected lighting
$maskedblending
int
0
Related to $blendmodulatetexture
$nodiffusebumplighting
int
0
Disables $bumpmap's effects on $basetexture?
$outline
bool
0
$outlinealpha
float
0
$outlinecolor
color
"{255 255 255 255}"
$outlineend0
float
0
$outlineend1
float
0
$outlinestart0
float
0
$outlinestart1
float
0
$paintsplatenvmap
texture
"env_cubemap"
$paintsplatnormalmap
texture
"paint/splatnormal_default"
$parallaxmap
int
0
$seamless_scale
float
0
If set, automatically tiles the texture across map geometry, by the set scale, in a way that tries to appear seamless without requiring manual UV-mapping
$selfillumtint
color
"{255 255 255 255}"
Sets the colour tint of $selfillum
$shadersrgbread360
bool
0
Related to Xbox 360, which isn't relevant for Source Filmmaker
$softedges
bool
0
$ssbump
int
0
Uses $bumpmap as a self-shadowing bump-map instead of as normal-mapping
LightmappedReflective
The LightmappedReflective shader can use an extra render pass to create mirror-like reflections on a flat plane (which can span multiple different surfaces/triangles if needed, as long as it's a single plane).
These reflections unfortunately don't support Source Filmmaker's SSAO on models within them.

Parameter
Type
Default Value / Additional Information
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $normalmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmapmask
texture
"shadertest/shadertest_envmask"
Sets a mask for $reflecttexture
$envmapmaskframe
int
0
Sets which frame of $envmapmask to use
$normalmap
texture
"dev/water_normal"
Normal-mapping, for $basetexture(?), reflection(?), and refraction(?)
$reflectance
float
0.25
Sets how much $reflecttexture is shown
$reflectamount
float
0.8
Sets how much $reflecttexture is affected by $normalmap?
$reflecttexture
texture
"_rt_WaterReflection"
The texture containing the mirror/reflection of what's in front of this material
$reflecttint
color
"{255 255 255 255}"
Sets the colour tint of $reflecttexture
$refractamount
float
0
Sets how much refraction distorts $refracttexture
$refracttexture
texture
"_rt_WaterRefraction"
The texture containing what's behind this material, to be refracted/distorted
$refracttint
color
"{255 255 255 255}"
Sets the colour tint of $refracttexture
LightShafts
Parameter
Type
Default Value / Additional Information
$attenfactors
vector4
"[0 0 0 0]"
$cookieframenum
int
0
Sets which frame of $cookietexture to use
$cookietexture
texture
""
$enableshadows
int
1
$flashlightcolor
vector4
"[0 0 0 0]"
$flashlighttime
float
0
$noisestrength
float
1
$noisetexture
texture
""
$numplanes
float
0
$originfarz
vector4
"[0 0 0 0]"
$quatorientation
vector4
"[0 0 0 0]"
$shadowatten
float
1
$shadowdepthtexture
texture
""
$shadowfiltersize
float
3
$shadowjitterseed
float
1
$uberheightwidth
vector4
"[0 0 0 0]"
Requires $uberlight
$uberlight
int
1
$ubernearfar
vector4
"[0 0 0 0]"
Requires $uberlight
$uberroundness
float
1
Determines how circular the light cutout should be
Requires $uberlight
$volumetricintensity
float
1
$worldtotexture
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
ManifoldSurface
Parameter
Type
Default Value / Additional Information
$basecolortint
vector3
"[1 1 1]"
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$bumpstrength
float
1
Multiplies $bumpmap's normal-mapping
$diffusescale
float
1
$envmap
texture
""
Specifies a cubemap that will be used for specular reflections?
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmaptint
vector3
"[1 1 1]"
Sets the colour of $envmap
$lightluttexture
texture
"shadertest/BaseTexture"
$lightluttype
int
0
$opacitytexture
texture
"shadertest/BaseTexture"
$phongboost
float
1
Sets the brightness of phong highlights
$phongboost2
float
1
Sets the brightness of phong highlights?
$phongexponent
float
1
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights
$phongexponent2
float
1
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights?
$rimlightboost
float
1
Sets the brightness of rim-lighting
$rimlightexponent
float
4
Sets the size/"tightness" of rim-lighting, where higher values give smaller highlights
$specmasktexture
texture
"shadertest/BaseTexture"
$uvprojoffset
vector3
"[0 0 0]"
$uvscale
float
0.02
$vertexalphabias
bool
0
Modulate
The Modulate shader is special in that, instead of replacing the existing background with its output, it multiplies the background by its output.
It can be used on brushes (accepting lightmaps), models, and maybe more?

Parameter
Type
Default Value / Additional Information
$cloakcolortint
color
"{255 255 255 255}"
Sets the colour of the refraction used for Team Fortress 2's Spy cloaking effect
Requires $cloakpassenabled
$cloakfactor
float
0
Sets the progress of Team Fortress 2's Spy cloaking effect, where 0.0 is fully opaque, 0.5 is half-translucent, and 1.0 is fully invisible
Requires $cloakpassenabled
$cloakpassenabled
bool
0
Enables Team Fortress 2's Spy cloaking effect
Controlled by $cloakcolortint, $cloakfactor, and $refractamount
$mod2x
bool
0
If disabled, white multiplies the background by 100%
If enabled, white multiplies the background by 200%
$refractamount
float
2
Sets how much refraction distorts what's behind it
Applicable when $cloakfactor is between 0.0 and 1.0
$writez
bool
0
Whether or not this material writes to the Z-buffer?
MonitorScreen
Parameter
Type
Default Value / Additional Information
$contrast
float
0
Sets how much to multiply the output by itself
$frame2
int
0
Sets which frame of $texture2 to use
$saturation
float
1
Sets how saturated the output is
$texture2
texture
"shadertest/lightmappedtexture"
Sets a secondary texture that blends multiplicatively with $basetexture
$texture2transform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $texture2
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$tint
color
"{255 255 255 255}"
Stacks multiplicatively with $color and $color2?
MorphAccumulate
Parameter
Type
Default Value
$delta
texture
""
$deltascale
float
0
$dimensions
vector3
"[0 0 0]"
$sidespeed
texture
""
MorphWeight
This shader doesn't implement any non-global parameters.
MotionBlur
Parameter
Type
Default Value
$motionblurinternal
vector4
"[0 0 0 0]"
$motionblurviewportinternal
vector4
"[0 0 0 0]"
MultiBlend
Parameter
Type
Default Value / Additional Information
$basetexture2
texture
""
Sets the second diffuse texture/albedo used, for alpha-painted displacements
$basetexture3
texture
""
Sets the third diffuse texture/albedo used, for alpha-painted displacements
$basetexture4
texture
""
Sets the fourth diffuse texture/albedo used, for alpha-painted displacements
$fow
texture
""
"FOW" stands for "fog of war", relating to what is in or out of sight in DotA 2?
$rotation
float
0
Sets the rotation of $basetexture and $spectexture
$rotation2
float
0
Sets the rotation of $basetexture2 and $spectexture2
$rotation3
float
0
Sets the rotation of $basetexture3 and $spectexture3
$rotation4
float
0
Sets the rotation of $basetexture4 and $spectexture4
$scale
float
1
Sets the scale of $basetexture and $spectexture
$scale2
float
1
Sets the scale of $basetexture2 and $spectexture2
$scale3
float
1
Sets the scale of $basetexture3 and $spectexture3
$scale4
float
1
Sets the scale of $basetexture4 and $spectexture4
$spectexture
texture
""
$spectexture2
texture
""
Sets the second $spectexture used, for alpha-painted displacements
$spectexture3
texture
""
Sets the second $spectexture used, for alpha-painted displacements
$spectexture4
texture
""
Sets the second $spectexture used, for alpha-painted displacements
Occlusion
This shader doesn't implement any non-global parameters.
paintblob
The paintblob shader is very volatile. Even using the default parameter values will result in Source Filmmaker crashing when trying to render it (although this might depend on where the material is used?). However, its parameters and their defaults are still listed here for completeness' sake, even if the shader is unusable.

Parameter
Type
Default Value / Additional Information
$backsurface
bool
0
$basecolortint
vector3
"[1 1 1]"
$bbmax
vector3
"[0 0 0]"
$bbmin
vector3
"[0 0 0]"
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumpstrength
float
1
Multiplies $normalmap's normal-mapping
$contactshadows
bool
1
$diffusescale
float
1
$envmap
texture
""
Specifies a cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$fresnelbumpstrength
float
1
$fresnelwarptexture
texture
"shadertest/BaseTexture"
$interior
bool
1
$interiorambientscale
float
0.3
$interiorbackgroundboost
float
7
$interiorbacklightscale
float
0.3
$interiorfogstrength
float
0.06
$interiorrefractstrength
float
0.015
$lightwarptexture
texture
"shadertest/BaseTexture"
Sets a custom shading ramp for non-projected lighting
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping?
$opacitytexture
texture
"shadertest/BaseTexture"
$phongboost
float
1
Sets the brightness of phong highlights
$phongboost2
float
1
Sets the brightness of phong highlights?
$phongexponent
float
1
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights
$phongexponent2
float
1
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights?
$rimlightboost
float
1
Sets the brightness of rim-lighting
$rimlightexponent
float
1
Sets the size/"tightness" of rim-lighting, where higher values give smaller highlights
$specmasktexture
texture
"shadertest/BaseTexture"
$translucentfresnelminmaxexp
vector3
"[0.8 1 1]"
$uvprojoffset
vector3
"[0 0 0]"
$uvscale
float
0.02
ParallaxTest
The ParallaxTest shader does parallax-mapping, allowing a flat surface to appear to have depth. However, as it's rendered full-bright(?), an additional material using the Modulate shader should be laid on top to fake shading.

This shader uses $basetexture's alpha channel as a height-map, where opaque parts are at the surface and transparency sets how deep the parallax effect is.

Parameter
Type
Default Value / Additional Information
$bumpframe
int
0
Sets which frame of $bumpmap to use
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping?
Is this relevant if the shader renders full-bright anyway (if it does)?
ParticleLitGeneric_DX9
Based on the shader name, the ParticleLitGeneric_DX9 shader is a DirectX 9 fallback for a shader called ParticleLitGeneric, however no such shader is included with Source Filmmaker by default.
This guide doesn't cover other fallback shaders' parameters, but I will make an exception here as there's no "main" shader in this case.

Parameter
Type
Default Value / Additional Information
$bumpframe
int
0
Sets which frame of $bumpmap to use
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $bumpmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
ParticleSphere
Parameter
Type
Default Value / Additional Information
$depthblend
int
0
$depthblendscale
float
50
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$light_color
vector3
"[1 1 1]"
$light_position
vector3
"[0 0 0]"
$usingpixelshader
bool
0
Patch
The Patch "shader" is not actually a valid or recognized shader, however it can still be used at the start of a material. This is because that Patch is defined in the engine code rather than being compiled as a shader.
It can be used to load/inherit a different material as a base, optionally letting you add/replace parameters of the "child" material while not affecting the "parent" material.

To use the Patch "shader", start off with "Patch" at the beginning of the material, followed by a pair of curly brackets below (as usual with all materials). Then use these "parameters" (which notably don't start with $):

Parameter
Type
Default Value / Additional Information
include
material
""
The "parent" material that this Patch material inherits from
Note that you must include "materials/" at the start and ".vmt" at the end of this path
insert
element_array
{ }
Sets up additional or changes existing parameters of the "parent" material
(Anything here will only affect the "child" material, not the "parent" material)
replace
element_array
{ }
Replaces existing parameters of the "parent" material
However, as insert also lets you insert parameters that take priority over the "parent" material, I'm unsure why insert and replace are separate things
(Semantically, it might be most correct to use insert to add new parameters and replace to change existing parameters. In practice, there doesn't seem to be any difference between the two, unless it acts differently for the Proxies group?)
(Anything here will only affect the "child" material, not the "parent" material)



Since the Patch "shader" is special, it might be nice to see an example of how it's used.
In the below example, only $basetexture is different between the red and blue materials, so the blue one can easily inherit the other settings from the red one and simply change $basetexture, like so:
Patch { //Use the models/player/scout/scout_red material as a base include "materials/models/player/scout/scout_red.vmt" //Point at the blue $basetexture instead of the red one replace { $basetexture "models/player/scout/scout_blue" } }
Portal
Parameter
Type
Default Value / Additional Information
$alphamasktexture
texture
""
$alphamasktextureframe
int
0
Sets which frame of $alphamasktexture to use
$alternateviewmatrix
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Requires $usealternateviewmatrix
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$renderfixz
int
0
$staticamount
float
0
$staticblendtexture
texture
""
$staticblendtextureframe
int
0
Sets which frame of $staticblendtexture to use
$usealternateviewmatrix
int
1
Enables $alternateviewmatrix
PortalRefract
Parameter
Type
Default Value / Additional Information
$portalcolorgradientdark
color
"{0 0 0 255}"
$portalcolorgradientlight
color
"{255 255 255 255}"
$portalcolorscale
float
0
$portalcolortexture
texture
""
$portalmasktexture
texture
""
$portalopenamount
float
0
$portalstatic
float
0
$stage
int
0
$texturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$time
float
0
Intended to be the output of the CurrentTime proxy
PortalStaticOverlay
Parameter
Type
Default Value / Additional Information
$alphamasktexture
texture
""
$alphamasktextureframe
int
0
Sets which frame of $alphamasktexture to use
$nocolorwrite
int
0
$staticamount
float
0
Set's $staticblendtexture's intensity?
$staticblendtexture
texture
""
$staticblendtextureframe
int
0
Sets which frame of $staticblendtexture to use
Projected
Parameter
Type
Default Value / Additional Information
$alpha_range
float
0
$depth_texture
texture
"_rt_deferred_depth"
$diffuse_texture
texture
"_rt_deferred_diffuse"
$falloff_final
float
0
$falloff_range
float
0
$fow
texture
""
"FOW" stands for "fog of war", relating to what is in or out of sight in DotA 2?
$normal_texture
texture
"_rt_deferred_normal"
$solid_range
float
0
$spectexture
texture
""
$specular_texture
texture
"_rt_deferred_specular"
ProtoIce
Parameter
Type
Default Value / Additional Information
$bumpframe
int
0
Sets which frame of $bumpmap to use
$bumpmap
texture
""
Normal-mapping
$ssbump
int
0
Uses $bumpmap as a self-shadowing bump-map instead of as normal-mapping
Prototype
Parameter
Type
Default Value / Additional Information
$bumpframe
int
0
Sets which frame of $bumpmap to use
$bumpmap
texture
""
Normal-mapping
Refract
The Refract shader displaces/distorts/refracts pixels rendered behind this material, in a similar way to water, but doesn't have dynamic reflections, and so can be used on non-flat geometry without consequences.

It requires(?) $model to be set to 1 when used on models. It does not support models compiled with $subd.
If $basetexture is present, that sets which texture to refract, instead of using the existing rendered background.

Parameter
Type
Default Value / Additional Information
$bluramount
int
1
Blurs the refraction?
Can be 0, 1, or 2?
$bumpframe
int
0
Sets which frame of $normalmap to use
$bumpframe2
int
0
Sets which frame of $normalmap2 to use
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $normalmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$bumptransform2
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $normalmap2
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmap
texture
"shadertest/shadertest_env"
Specifies a cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmapcontrast
float
0
Sets how much to square $envmap
$envmapframe
int
0
Sets which frame of $envmap to use
$envmapsaturation
float
1
Sets $envmap's saturation
$envmaptint
color
"{255 255 255 255}"
Sets the colour of $envmap
$fadeoutonsilhouette
bool
1
$fresnelreflection
float
1
$magnifycenter
vector2
"[0 0]"
Requires $magnifyenable
$magnifyenable
bool
0
$magnifyscale
float
0
Requires $magnifyenable
$masked
bool
0
$mirroraboutviewportedges
int
0
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping, for $envmap(?) and refraction
$normalmap2
texture
"models/shadertest/shader1_normal"
Stacks on top of $normalmap
$noviewportfixup
int
0
$nowritez
int
0
$refractamount
float
2
Sets how much refraction distorts what's behind it
$refracttint
color
"{255 255 255 255}"
Sets the colour of refraction
$refracttinttexture
texture
"models/shadertest/shield"
Sets the colour of refraction
$refracttinttextureframe
int
0
Sets which frame of $refracttinttexture to use
$time
float
0
Intended to be the output of the CurrentTime proxy
$vertexcolormodulate
bool
0
Sample4x4_Blend
Parameter
Type
Default Value / Additional Information
$pixshader
string
"sample4x4_ps20"
This is a pixel shader name
screenspace_general
Parameter
Type
Default Value / Additional Information
$alphatested
float
0
$alphablend
int
0
$alpha_blend
int
0
$alpha_blend_color_overlay
int
0
$copyalpha
int
0
$cull
float
0
$c0_w
float
0
$c0_x
float
0
$c0_y
float
0
$c0_z
float
0
$c1_w
float
0
$c1_x
float
0
$c1_y
float
0
$c1_z
float
0
$c2_w
float
0
$c2_x
float
0
$c2_y
float
0
$c2_z
float
0
$c3_w
float
0
$c3_x
float
0
$c3_y
float
0
$c3_z
float
0
$c4_w
float
0
$c4_x
float
0
$c4_y
float
0
$c4_z
float
0
$depthtest
int
0
$disable_color_writes
int
0
$linearread_basetexture
int
0
$linearread_texture1
int
0
$linearread_texture2
int
0
$linearread_texture3
int
0
$linearwrite
int
0
$multiplycolor
int
0
$pixshader
string
""
This is a pixel shader name
$pointsample_basetexture
int
0
$pointsample_texture1
int
0
$pointsample_texture2
int
0
$pointsample_texture3
int
0
$tcsize0
int
2
$tcsize1
int
0
$tcsize2
int
0
$tcsize3
int
0
$tcsize4
int
0
$tcsize5
int
0
$tcsize6
int
0
$tcsize7
int
0
$texture1
texture
""
$texture2
texture
""
$texture3
texture
""
$vertexshader
string
""
This is a vertex shader name
$vertextransform
int
0
$writealpha
int
0
$writedepth
int
0
ShadowBuild
Parameter
Type
Default Value / Additional Information
$cutoutdecalmappingscale
float
1
Related to $cutouttexture
$cutouttexture
texture
""
$cutouttexturebias
float
0.95
Related to $cutouttexture
$damaged
bool
0
$debugellipsoids
bool
0
Related to $ellipsoid*
$ellipsoidcenter
vector3
"[0 0 0]"
$ellipsoidcenter2
vector3
"[0 0 0]"
$ellipsoidlookat
vector3
"[1 0 0]"
$ellipsoidlookat2
vector3
"[1 0 0]"
$ellipsoidscale
vector3
"[10 10 10]"
$ellipsoidscale2
vector3
"[10 10 10]"
$ellipsoidup
vector3
"[0 0 1]"
$ellipsoidup2
vector3
"[0 0 1]"
$ellipsoid2culltype
int
0
$translucent_material
material
""
ShadowModel
Parameter
Type
Default Value / Additional Information
$basetextureoffset
vector2
"[0 0]"
Offsets $basetexture
$basetexturescale
vector2
"[1 1]"
Scales $basetexture
$falloffamount
float
0.9
$falloffdistance
float
100
$falloffoffset
float
0
ShatteredGlass
Parameter
Type
Default Value / Additional Information
$detail
texture
"Glass/glasswindowbreak070b"
Sets a secondary texture that blends with $basetexture
$detailscale
float
1
Sets how many times $detail will tile across $basetexture
$envmap
texture
"shadertest/shadertest_env"
Specifies a cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmapcontrast
float
0
Sets how much to square $envmap
$envmapframe
int
0
Sets which frame of $envmap to use
$envmapmask
texture
"glass/glasswindowbreak070b_mask"
Sets a mask for $envmap
$envmapmaskframe
int
0
Sets which frame of $envmapmask to use
$envmapmasktransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
Sets the UV transformation matrix of $envmapmask
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmapsaturation
float
1
Sets $envmap's saturation
$envmaptint
color
"{255 255 255 255}"
Sets the colour of $envmap
$fresnelreflection
float
1
$unlitfactor
float
0.7
Sets how much this material should ignore lighting/be full-bright
Sky
The Sky shader is used for 2D skybox backgrounds, supporting HDR textures to allow a sun to appear bright with a low tone-map yet other areas to still appear detailed with a high tone-map.

$basetexture is used for LDR textures, while the below is for HDR textures.

Parameter
Type
Default Value / Additional Information
$hdrbasetexture
texture
""
A RGBA16161616F-format "nocompress" HDR sky texture
Should not be used if $hdrcompressedtexture is present
$hdrcompressedtexture
texture
""
A RGBA8888-format HDR sky texture
Should not be used if $hdrbasetexture is present
$hdrcompressedtexture0
texture
""
$hdrcompressedtexture1
texture
""
$hdrcompressedtexture2
texture
""
SplineRope
Parameter
Type
Default Value / Additional Information
$bumpmap
texture
"cable/cablenormalmap"
Normal-mapping
$shadersrgbread360
bool
0
Related to Xbox 360, which isn't relevant for Source Filmmaker
$shadowdepth
int
0
Sprite
Parameter
Type
Default Value / Additional Information
$hdrcolorscale
float
1
$ignorevertexcolors
bool
1
Disables per-vertex colouring
$nosrgb
bool
0
$spriteorientation
int
0
$spriteorigin
vector3
"[0 0 0]"
$spriterendermode
int
0
SSAO
Parameter
Type
Default Value / Additional Information
$bias
float
0.003
$depth_texture
texture
"_rt_SSAO_depth"
$final
int
0
$fog_factor
float
1.5
$fow
texture
""
"FOW" stands for "fog of war", relating to what is in or out of sight in DotA 2?
$intensity
float
1
$normal_texture
texture
"_rt_deferred_normal"
$radius
float
105
$random_texture
texture
"dev/ssao_random"
$specular_texture
texture
"_rt_deferred_specular"
$strength
float
0.45
$tint
color
"{0 0 0 255}"
Teeth
Parameter
Type
Default Value / Additional Information
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$entityorigin
vector3
"[0 0 0]"
The world-space position that $warpparam squishes horizontally towards
Intended to be the output of the EntityOrigin proxy
$forward
vector3
"[1 0 0]"
$illumfactor
float
1
$intro
bool
0
Enables $warpparam
$phongexponent
float
100
Sets the size/"tightness" of phong highlights, where higher values give smaller highlights
$warpparam
float
0
When below 1, squishes the model horizontally towards $entityorigin and vertically upwards, with 0 being most squished
Requires $intro
UI
Parameter
Type
Default Value / Additional Information
$colorwarp
texture
"engine/rgbcolorspace"
$colorwarpblendfactor
float
1
Sets the intensity of $colorwarp
$grayscale
float
0
UnlitGeneric
The UnlitGeneric shader is the most commonly-used unshaded shader, intended for use by things that are meant to appear equally bright in all cases.
It can be used by brushes, material overlays, models, particles, and likely much more than that.

Parameter
Type
Default Value / Additional Information
$albedo
texture
"shadertest/BaseTexture"
$alphatestreference
float
0.7
The alpha cutoff value between opaque and transparent for $alphatest
Despite 0.7 being listed as the default, 0.5 is used if the parameter isn't defined?
$detail
texture
"shadertest/detail"
A secondary texture that blends with the albedo
$detailblendfactor
float
1
How much $detail blends with the albedo
$detailblendmode
int
0
The manner in which $detail blends with the albedo
$detailframe
int
0
Which frame to use for $detail
$detailscale
float
4
How many times $detail tiles across the UV map
$detailtexturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $detail
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$displacementmap
texture
"shadertest/BaseTexture"
Height-mapping, displacing the 3D mesh itself
Applies per vertex (which pairs well with the $subd QC command)
$distancealpha
bool
0
Required by $distancealphafromdetail(?), $glow, $outline, and $softedges
$distancealphafromdetail
bool
0
Requires $detail and $distancealpha(?)
$edgesoftnessend
float
0.5
Requires $softedges
$edgesoftnessstart
float
0.6
Requires $softedges
$envmap
texture
"shadertest/shadertest_env"
A cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmapcontrast
float
0
How much to square $envmap
Incompatible with $phong?
$envmapframe
int
0
Which frame to use for $envmap
$envmapmask
texture
"glass/glasswindowbreak070b_mask"
$envmap mask
$envmapmaskframe
int
0
Which frame to use for $envmapmask
$envmapmasktransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $envmapmask
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmapsaturation
float
1
The saturation of $envmap
Incompatible with $phong?
$envmaptint
color
"{255 255 255 255}"
The colour of $envmap
$gammacolorread
int
0
$glow
bool
0
Enables $glow*
Requires $distancealpha
$glowalpha
float
1
Requires $glow
$glowcolor
color
"{255 255 255 255}"
Requires $glow
$glowend
float
0.5
Requires $glow
$glowstart
float
0.7
Requires $glow
$glowx
float
0
Requires $glow
$glowy
float
0
Requires $glow
$hdrcolorscale
float
1
$linearwrite
int
0
$lightwarptexture
texture
"shadertest/BaseTexture"
A custom shading ramp for non-projected lighting
Not relevant for this shader, as it's unshaded?
$outline
bool
0
Enables $outline* and $scaleoutlinesoftnessbasedonscreenres
Requires $distancealpha
$outlinealpha
float
0
Requires $outline
$outlinecolor
color
"{255 255 255 255}"
Requires $outline
$outlineend0
float
0
Requires $outline
$outlineend1
float
0
Requires $outline
$outlinestart0
float
0
Requires $outline
$outlinestart1
float
0
Requires $outline
$phong
bool
0
Enables phong highlights, controlled by $phong*
$phongalbedotint
bool
1
Tints $phong highlights based on the albedo
Requires(?) $phongexponenttexture, using its green channel as a mask
$phongboost
bool
1
The brightness of $phong highlights
$phongexponent
float
5
The size/"tightness" of $phong highlights, where higher values give smaller highlights
If present, overrides $phongexponenttexture
$phongexponenttexture
texture
5
Red channel: The size/"tightness" of phong highlights, where more red gives smaller highlights
Green channel: $phongalbedotint mask
Alpha channel: $rimlight mask, if $rimmask is enabled
$phongfresnelranges
vector3
"[0 0.5 1]"
Multiplies phong highlight brightness by the first value when facing the mesh head-on, the third value at grazing angles, and the second value in between
$phongtint
vector3
"[0 0 0]"
The colour of $phong highlights
$phongwarptexture
texture
"shadertest/BaseTexture"
Related to $phong
$receiveflashlight
int
0
Allows this material to be over-brightened by flashlights
May or may not apply to projected lights in general?
Enables $singlepassflashlight?
$scaleedgesoftnessbasedonscreenres
bool
0
Requires $softedges
$scaleoutlinesoftnessbasedonscreenres
bool
0
Requires $outline
$separatedetailuvs
bool
0
Requires $detail
$shadersrgbread360
bool
0
Related to Xbox 360, which isn't relevant for Source Filmmaker
$singlepassflashlight
bool
0
Requires $receiveflashlight?
$softedges
bool
0
Enables $edgesoftnessend, $edgesoftnessstart, and $scaleedgesoftnessbasedonscreenres
Requires $distancealpha
$vertexalphatest
int
0
UnlitTwoTexture
The UnlitTwoTexture shader is an unshaded brush(?) and model shader, with support for a second texture that can be transformed independently and blends multiplicatively with $basetexture.

This effect can also be achieved with the UnlitGeneric shader, using $detail for the second texture, $detailblendmode set to 8 (or to 0 along with $color 0.5), $detailscale set to 1, and $detailtexturetransform to transform the second texture.
However, UnlitGeneric doesn't support Team Fortress 2's Spy cloaking effect, which UnlitTwoTexture does.

$model must(?) be set to 1 when using this shader on a model.

Parameter
Type
Default Value / Additional Information
$cloakcolortint
color
"{255 255 255 255}"
The colour of cloaking refraction
Applicable when $cloakfactor is between 0 and 1
$cloakfactor
float
0
How cloaked the material is, where 0.0 is opaque, 0.5 is translucent, and 1.0 is invisible
Requires $cloakpassenabled
$cloakpassenabled
bool
0
Enables Team Fortress 2's Spy cloaking effect
Controlled by $cloakcolortint, $cloakfactor, and $refractamount
$frame2
int
0
Which frame to use for $texture2
$refractamount
float
2
How much to distort the background
Applicable when $cloakfactor is between 0 and 1
$texture2
string
"shadertest/BaseTexture"
A secondary texture that blends multiplicatively with the albedo
$texture2transform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $texture2
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
VertexLit_SOB (A-E)
Parameter
Type
Default Value / Additional Information
$albedo
texture
"shadertest/BaseTexture"
$allowdiffusemodulation
bool
1
Enables $color and $color2
$alphatestreference
float
0
The alpha cutoff value between opaque and transparent for $alphatest
Despite 0 being listed as the default, 0.5 is used if the parameter isn't defined?
$basechroma
bool
0
Controlled by $basechroma*
$basechroma_premul_postmul_alphamul
vector3
"[1 1 1]"
Requires $basechroma
$basechroma_rgbgamma
vector3
"[1 1 1]"
Requires $basechroma
$basemapalphaphongmask
int
0
Uses the albedo's alpha channel as a mask for $phong
$basemapluminancephongmask
int
0
Uses the albedo's brightness as a mask for $phong
For a tinted mask, use $phongalbedotint
$blendtintbybasealpha
bool
0
Uses the albedo's alpha channel as a mask for $color and $color2
$bumpframe
int
0
Which frame to use for $bumpmap
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $bumpmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$cloakcolortint
color
"{255 255 255 255}"
The colour of cloaking refraction
Applicable when $cloakfactor is between 0 and 1
$cloakfactor
float
0
How cloaked the material is, where 0.0 is opaque, 0.5 is translucent, and 1.0 is invisible
Requires $cloakpassenabled
$cloakpassenabled
bool
0
Enables Team Fortress 2's Spy cloaking effect
Controlled by $cloakcolortint, $cloakfactor, and $refractamount
$color_flow_lerpexp
float
0
Requires $flowmap
$color_flow_offset
float
0
Requires $flowmap
$color_flow_timeintervalinseconds
float
0
Requires $flowmap
$color_flow_timescale
float
0
Requires $flowmap
$color_flow_uvscale
float
0
Requires $flowmap
$color_flow_uvscrolldistance
float
0
Requires $flowmap
$cutoutdecalmappingscale
float
1
Requires $cutouttexture
$cutouttexture
texture
""
Controlled by $cutoutdecalmappingscale and $cutouttexturebias
$cutouttexturebias
float
0.95
Requires $cutouttexture
$damaged
bool
0
$debugellipsoids
bool
0
Related to $ellipsoid*
$desaturatewithbasealpha
float
0
Uses the albedo's alpha channel as a mask for desaturating the albedo
$detail
texture
"shadertest/detail"
A secondary texture that blends with the albedo
Controlled by $detail*
$detailblendfactor
float
1
How much $detail blends with the albedo
$detailblendmode
int
0
The manner in which $detail blends with the albedo
$detailframe
int
0
Which frame to use for $detail
$detailscale
float
4
How many times $detail tiles across the UV map
$detailtexturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $detail
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$detailtint
color
"{255 255 255 255}"
The colour of $detail
$displacementmap
texture
"shadertest/BaseTexture"
Height-mapping, displacing the 3D mesh itself
Applies per vertex (which pairs well with the $subd QC command)
$ellipsoidcenter
vector3
"[0 0 0]"
Related to $debugellipsoids
$ellipsoidcenter2
vector3
"[0 0 0]"
Related to $debugellipsoids
$ellipsoidlookat
vector3
"[1 0 0]"
Related to $debugellipsoids
$ellipsoidlookat2
vector3
"[1 0 0]"
Related to $debugellipsoids
$ellipsoidscale
vector3
"[10 10 10]"
Related to $debugellipsoids
$ellipsoidscale2
vector3
"[10 10 10]"
Related to $debugellipsoids
$ellipsoidup
vector3
"[0 0 1]"
Related to $debugellipsoids
$ellipsoidup2
vector3
"[0 0 1]"
Related to $debugellipsoids
$ellipsoid2culltype
int
0
Related to $debugellipsoids
$emissiveblendbasetexture
texture
""
Requires $emissiveblendenabled
$emissiveblendenabled
bool
0
Controlled by $emissiveblend*
$emissiveblendflowtexture
texture
""
Requires $emissiveblendenabled
$emissiveblendscrollvector
vector2
"[0.11 0.124]"
Requires $emissiveblendenabled
$emissiveblendstrength
float
1
Requires $emissiveblendenabled
$emissiveblendtexture
texture
""
Requires $emissiveblendenabled
$emissiveblendtint
color
"{255 255 255 255}"
The colour of $emissiveblend*
$envmap
texture
"shadertest/shadertest_env"
A cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
$envmapcontrast
float
0
How much to square $envmap
Incompatible with $phong?
$envmapframe
int
0
Which frame to use for $envmap
$envmapmask
texture
"glass/glasswindowbreak070b_mask"
$envmap mask
$envmapmaskframe
int
0
Which frame to use for $envmapmask
$envmapsaturation
float
1
The saturation of $envmap
Incompatible with $phong?
$envmaptint
color
"{255 255 255 255}"
The colour of $envmap
VertexLit_SOB (F-M)
Parameter
Type
Default Value / Additional Information
$flashlightnolambert
bool
0
$fleshbordernoisescale
float
1.5
Multiplies $fleshinteriornoisetexture
$fleshbordersoftness
float
0.42
Related to $fleshbordertexture1d
$fleshbordertexture1d
texture
""
A one-dimensional border texture between $fleshinteriorenabled and non-flesh
Controlled by $fleshborder* and $fleshinteriornoisetexture
$fleshbordertint
color
"{255 255 255 255}"
The colour of $fleshbordertexture1d
$fleshborderwidth
float
0.3
The size of $fleshbordertexture1d
$fleshcubetexture
texture
""
A cubemap that will be used for specular reflections, for $fleshinteriorenabled
Controlled by $fleshglossbrightness
$fleshdebugforcefleshon
bool
0
Displays $fleshinteriorenabled on the whole material
$flesheffectcenterradius1
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$flesheffectcenterradius2
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$flesheffectcenterradius3
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$flesheffectcenterradius4
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$fleshglobalopacity
float
1
How much $fleshinteriorenabled blends with the albedo
$fleshglossbrightness
float
0.66
The brightness of $fleshcubetexture
$fleshinteriorenabled
bool
0
Enables a "flesh" effect that lets a separate albedo be blended onto certain parts of the material
Controlled by $flesh*
$fleshinteriornoisetexture
texture
""
Related to $fleshbordertexture1d
Controlled by $fleshbordernoisescale and $fleshscrollspeed
$fleshinteriortexture
texture
""
The albedo, for $fleshinteriorenabled
$fleshnormaltexture
texture
""
Normal-mapping, for $fleshinteriorenabled
$fleshscrollspeed
float
1
The scroll speed of $fleshinteriornoisetexture
$fleshsubsurfacetexture
texture
""
A secondary texture that blends multiplicatively with $fleshinteriortexture?
Controlled by $fleshsubsurfacetint
$fleshsubsurfacetint
color
"{255 255 255 255}"
The colour of $fleshsubsurfacetexture
$flowmap
texture
""
Red and green channels: Flow-mapping
Alpha channel: Albedo mask?
Controlled by $color_flow* and $flow*
$flow_bumpstrength
float
0
Requires $flowmap
$flow_debug
bool
0
Displays $flowmap as an unshaded albedo
$flow_noise_scale
float
0
Requires $flowmap_noise_texture
$flow_noise_texture
texture
""
Controlled by $flowmap_noise_scale
Requires $flowmap
$flow_normaluvscale
float
0
Requires $flowmap
$flow_offset
float
0
Requires $flowmap
$flow_timeintervalinseconds
float
0
Requires $flowmap
$flow_timescale
float
0
Requires $flowmap
$flow_uvscrolldistance
float
0
Requires $flowmap
$flow_worlduvscale
float
0
Requires $flowmap
$lightwarptexture
texture
"shadertest/BaseTexture"
A custom shading ramp for non-projected lighting
$linearwrite
int
0
VertexLit_SOB (N-Z)
Parameter
Type
Default Value / Additional Information
$nebula
bool
0
Controlled by $nebula*
$nebula_light1_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light1_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light1_rgb
vector3
"[0 0 0]"
Requires $nebula
$nebula_light2_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light2_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light2_rgb
vector3
"[0 0 0]"
Requires $nebula
$nebula_light3_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light3_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light3_rgb
vector3
"[0 0 0]"
Requires $nebula
$nebula_light4_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light4_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light4_rgb
vector3
"[0 0 0]"
Requires $nebula
$nebula_light5_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light5_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light5_rgb
vector3
"[0 0 0]"
Requires $nebula
$nebula_light6_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light6_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light6_rgb
vector3
"[0 0 0]"
Requires $nebula
$nebula_light7_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light7_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light7_rgb
vector3
"[0 0 0]"
Requires $nebula
$nebula_light8_minmaxexp
vector3
"[10 20 2]"
Requires $nebula
$nebula_light8_pos
vector3
"[0 0 0]"
Requires $nebula
$nebula_light8_rgb
vector3
"[0 0 0]"
Requires $nebula
$phong
bool
0
Enables phong highlights
Controlled by $basemapalphaphongmask, $basemapluminancephongmask, and $phong*
$phongalbedotint
bool
1
Tints $phong highlights based on the albedo
Requires(?) $phongexponenttexture, using its green channel as a mask
$phongboost
float
1
The brightness of $phong highlights
$phongexponent
float
5
The size/"tightness" of $phong highlights, where higher values give smaller highlights
If present, overrides $phongexponenttexture
$phongexponenttexture
texture
"shadertest/BaseTexture"
Red channel: The size/"tightness" of $phong highlights, where more red gives smaller highlights
Green channel: $phongalbedotint mask
Alpha channel: $rimlight mask, if $rimmask is enabled
$phongfresnelranges
vector3
"[0 0.5 1]"
Multiplies $phong highlight brightness by the first value when facing the mesh head-on, the third value at grazing angles, and the second value in between
$phongtint
vector3
"[0 0 0]"
The colour of $phong highlights
$phongwarptexture
texture
"shadertest/BaseTexture"
Related to $phong
$refractamount
float
2
How much to distort the background
Applicable when $cloakfactor is between 0 and 1
$refractfog
bool
0
$rimlight
bool
0
Enables rim-lighting
Controlled by $rim*
Requires $phong
$rimlightboost
float
1
The brightness of $rimlight
$rimlightexponent
float
4
The size/"tightness" of $rimlight, where higher values give smaller highlights
$rimmask
bool
0
Uses $phongexponenttexture's alpha channel as a mask for $rimlight
$selfillumfresnel
bool
0
Enables $selfillumfresnelminmaxexp
Requires $selfillum
$selfillumfresnelminmaxexp
vector4
"[0 0 0 0]"
Requires $selfillumfresnel
$selfillumtint
color
"{255 255 255 255}"
The colour of $selfillum
$shadersrgbread360
bool
0
Related to Xbox 360, which isn't relevant for Source Filmmaker
$time
float
0
Intended to be the output of the CurrentTime proxy
VertexLitGeneric (A-D)
The VertexLitGeneric shader is the most commonly used shaded shader for models. It supports a wide variety of effects, yet it can also be used for something as simple as just a shaded albedo, making it a good choice for a majority of models that don't need certain special effects.

Parameter
Type
Default Value / Additional Information
$albedo
texture
"shadertest/BaseTexture"
$allowdiffusemodulation
bool
1
Enables $color and $color2
$alphatestreference
float
0
The alpha cutoff value between opaque and transparent for $alphatest
Despite 0 being listed as the default, 0.5 is used if the parameter isn't defined?
$ambientocclusion
float
0
Sets how much Source Filmmaker's SSAO should affect this material, from 0.0 to 1.0
Despite 0 being listed as the default, either 0 or 1 is used if the parameter isn't defined
Controlled by $ambientocclusiontint
Requires $phong
$ambientocclusiontint
vector3
"[1 1 1]"
The colour that $ambientocclusion darkens/multiplies to
Despite "[1 1 1]" being listed as the default, "[0 0 0]" is used if the parameter isn't defined
$ambientonly
int
0
$basealphaenvmapmaskminmaxexp
vector3
"[1 0 1]"
Related to $basealphaenvmapmask
$basemapalphaphongmask
int
0
Uses the albedo's alpha channel as a mask for $phong
$basemapluminancephongmask
int
0
Uses the albedo's brightness as a mask for $phong
For a tinted mask, use $phongalbedotint
$blendtintbybasealpha
bool
0
Uses the albedo's alpha channel as a mask for $color and $color2
$bumpcompress
texture
"models/shadertest/shader3_normal"
Normal-mapping, for positive wrinkle-mapping
$bumpframe
int
0
Which frame to use for $bumpcompress(?), $bumpmap, and $bumpstretch(?)
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$bumpstretch
texture
"models/shadertest/shader1_normal"
Normal-mapping, for negative wrinkle-mapping
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $bumpcompress(?), $bumpmap, and $bumpstretch(?)
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$cloakcolortint
color
"{255 255 255 255}"
The colour of cloaking refraction
Applicable when $cloakfactor is between 0 and 1
$cloakfactor
float
0
How cloaked the material is, where 0.0 is opaque, 0.5 is translucent, and 1.0 is invisible
Requires $cloakpassenabled
$cloakpassenabled
bool
0
Enables Team Fortress 2's Spy cloaking effect
Controlled by $cloakcolortint, $cloakfactor, and $refractamount
$compress
texture
"shadertest/BaseTexture"
The albedo, for positive wrinkle-mapping
$desaturatewithbasealpha
float
0
Uses the albedo's alpha channel as a mask for desaturating the albedo
$detail
texture
"shadertest/detail"
A secondary texture that blends with the albedo
Controlled by $detail* and $separatedetailuvs
$detailblendfactor
float
1
How much $detail blends with the albedo
$detailblendmode
int
0
The manner in which $detail blends with the albedo
$detailframe
int
0
Which frame to use for $detail
$detailscale
float
4
How many times $detail tiles across the UV map
$detailtexturetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $detail
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$detailtint
color
"{255 255 255 255}"
The colour of $detail
$displacementmap
texture
"shadertest/BaseTexture"
Height-mapping, displacing the 3D mesh itself
Applies per vertex (which pairs well with the $subd QC command)
Controlled by $displacementwrinkle
$displacementwrinkle
bool
0
Requires $displacementmap
VertexLitGeneric (E-O)
Parameter
Type
Default Value / Additional Information
$emissiveblendbasetexture
texture
""
Requires $emissiveblendenabled
$emissiveblendenabled
bool
0
Controlled by $emissiveblend*
$emissiveblendflowtexture
texture
""
Requires $emissiveblendenabled
$emissiveblendscrollvector
vector2
"[0.11 0.124]"
Requires $emissiveblendenabled
$emissiveblendstrength
float
1
Requires $emissiveblendenabled
$emissiveblendtexture
texture
""
Requires $emissiveblendenabled
$emissiveblendtint
color
"{255 255 255 255}"
The colour of $emissiveblend*
$envmap
texture
"shadertest/shadertest_env"
A cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
Controlled by $basealphaenvmapmask* and $envmap*
$envmapcontrast
float
0
How much to square $envmap
Incompatible with $phong?
$envmapframe
int
0
Which frame to use for $envmap
$envmapfresnel
float
0
Enables $envmapfresnelminmaxexp?
Requires $envmap
$envmapfresnelminmaxexp
vector3
"[0 1 2]"
Requires $envmapfresnel?
$envmapmask
texture
"shadertest/shadertest_envmask"
Brightness: $envmap mask
Alpha channel: $selfillum mask, if $selfillum_envmapmask_alpha is enabled
$envmapmaskframe
int
0
Which frame to use for $envmapmask
$envmapmasktransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $envmapmask
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmapsaturation
float
1
The saturation of $envmap
Incompatible with $phong?
$envmaptint
color
"{255 255 255 255}"
The colour of $envmap
$flashlightnolambert
bool
0
$fleshbordernoisescale
float
1.5
Multiplies $fleshinteriornoisetexture
$fleshbordersoftness
float
0.42
Related to $fleshbordertexture1d
$fleshbordertexture1d
texture
""
A one-dimensional border texture between $fleshinteriorenabled and non-flesh
Controlled by $fleshborder* and $fleshinteriornoisetexture
$fleshbordertint
color
"{255 255 255 255}"
The colour of $fleshbordertexture1d
$fleshborderwidth
float
0.3
The size of $fleshbordertexture1d
$fleshcubetexture
texture
""
A cubemap that will be used for specular reflections, for $fleshinteriorenabled
Controlled by $fleshglossbrightness
$fleshdebugforcefleshon
bool
0
Displays $fleshinteriorenabled on the whole material
$flesheffectcenterradius1
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$flesheffectcenterradius2
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$flesheffectcenterradius3
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$flesheffectcenterradius4
vector4
"[0 0 0 0.001]"
The world-space position followed by the radius of a sphere that shows $fleshinteriorenabled within it
Intended to be the output of the FleshInterior proxy
$fleshglobalopacity
float
1
How much $fleshinteriorenabled blends with the albedo
$fleshglossbrightness
float
0.66
The brightness of $fleshcubetexture
$fleshinteriorenabled
bool
0
Enables a "flesh" effect that lets a separate albedo be blended onto certain parts of the material
Controlled by $flesh*
$fleshinteriornoisetexture
texture
""
Related to $fleshbordertexture1d
Controlled by $fleshbordernoisescale and $fleshscrollspeed
$fleshinteriortexture
texture
""
The albedo, for $fleshinteriorenabled
$fleshnormaltexture
texture
""
Normal-mapping, for $fleshinteriorenabled
$fleshscrollspeed
float
1
The scroll speed of $fleshinteriornoisetexture
$fleshsubsurfacetexture
texture
""
A secondary texture that blends multiplicatively with $fleshinteriortexture?
Controlled by $fleshsubsurfacetint
$fleshsubsurfacetint
color
"{255 255 255 255}"
The colour of $fleshsubsurfacetexture
$invertphongmask
int
0
Inverts $phong's mask
$lightwarptexture
texture
"shadertest/BaseTexture"
A custom shading ramp for non-projected lighting
$linearwrite
int
0
VertexLitGeneric (P-Z)
Parameter
Type
Default Value / Additional Information
$phong
bool
0
Enables $ambientocclusion and phong highlights
Controlled by $basemapalphaphongmask, $basemapluminancephongmask, $invertphongmask, and $phong*
$phongalbedotint
bool
1
Tints $phong highlights based on the albedo
Requires(?) $phongexponenttexture, using its green channel as a mask
$phongboost
float
1
The brightness of $phong highlights
$phongdisablehalflambert
bool
0
Related to $phong
$phongexponent
float
5
The size/"tightness" of $phong highlights, where higher values give smaller highlights
If present, overrides $phongexponenttexture
$phongexponenttexture
texture
"shadertest/BaseTexture"
Red channel: The size/"tightness" of $phong highlights, where more red gives smaller highlights
Green channel: $phongalbedotint mask
Alpha channel: $rimlight mask, if $rimmask is enabled
$phongfresnelranges
vector3
"[0 0.5 1]"
Multiplies $phong highlight brightness by the first value when facing the mesh head-on, the third value at grazing angles, and the second value in between
$phongtint
vector3
"[0 0 0]"
The colour of $phong highlights
$phongwarptexture
texture
"shadertest/BaseTexture"
Related to $phong
$refractamount
float
2
How much to distort the background
Applicable when $cloakfactor is between 0 and 1
$rimlight
bool
0
Enables rim-lighting
Controlled by $rim*
Requires $phong
$rimlightboost
float
1
The brightness of $rimlight
$rimlightexponent
float
4
The size/"tightness" of $rimlight, where higher values give smaller highlights
$rimmask
bool
0
Uses $phongexponenttexture's alpha channel as a mask for $rimlight
$seamless_base
bool
0
Enables $seamless_scale for the albedo?
$seamless_detail
bool
0
Enables $seamless_scale for $detail
$seamless_scale
float
1
If set, automatically tiles the texture across mesh geometry, by the set scale, in a way that tries to appear seamless without requiring manual UV-mapping
Requires $seamless_base(?) and/or $seamless_detail
$selfillumfresnel
bool
0
Enables $selfillumfresnelminmaxexp
Requires $selfillum
$selfillumfresnelminmaxexp
vector4
"[0 0 0 0]"
Requires $selfillumfresnel
$selfillummask
texture
"shadertest/BaseTexture"
$selfillum mask
$selfillummaskscale
float
0
The brightness of $selfillum
Despite 0 being listed as the default, 1 is used if the parameter isn't defined?
$selfillumtint
color
"{255 255 255 255}"
The colour of $selfillum
$selfillum_envmapmask_alpha
float
0
Uses $envmapmask's alpha channel as a mask for $selfillum
$separatedetailuvs
bool
0
Related to $detail
$shadersrgbread360
bool
0
Related to Xbox 360, which isn't relevant for Source Filmmaker
$stretch
texture
"shadertest/BaseTexture"
The albedo, for negative wrinkle-mapping
$time
float
0
Intended to be the output of the CurrentTime proxy
$treesway
int
0
Controlled by $treesway*
$treeswayfalloffexp
float
1.5
Requires $treesway
$treeswayheight
float
1000
Requires $treesway
$treeswayradius
float
300
Requires $treesway
$treeswayscrumblefalloffexp
float
1
Requires $treesway
$treeswayscrumblefrequency
float
0.1
Requires $treesway
$treeswayscrumblespeed
float
0.1
Requires $treesway
$treeswayscrumblestrength
float
0.1
Requires $treesway
$treeswayspeed
float
1
Requires $treesway
$treeswayspeedhighwindmultiplier
float
2
Requires $treesway
$treeswaystartheight
float
0.2
Requires $treesway
$treeswaystartlerpend
float
6
Requires $treesway
$treeswaystartlerpstart
float
3
Requires $treesway
$treeswaystartradius
float
0.1
Requires $treesway
$treeswaystrength
float
10
Requires $treesway
VolumeClouds
Parameter
Type
Default Value / Additional Information
$basetexture2
texture
""
A secondary texture that blends additively with the albedo
Controlled by $time
$basetexture3
texture
""
A tertiary texture that blends additively with the albedo
Controlled by $time
$refractamount
float
2
How much to distort the background?
$time
float
0
Rotates $basetexture at a set speed, $basetexture2 slower than that, and $basetexture3 slower still
Intended to be the output of the CurrentTime proxy
VortWarp
Parameter
Type
Default Value / Additional Information
$albedo
texture
"shadertest/BaseTexture"
$ambientonly
int
0
$bumpframe
int
0
Which frame to use for $bumpmap
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $bumpcompress(?), $bumpmap, and $bumpstretch(?)
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$detail
texture
"shadertest/detail"
A secondary texture that blends with the albedo
Controlled by $detail*
$detailframe
int
0
Which frame to use for $detail
$detailscale
float
4
How many times $detail tiles across the UV map
$entityorigin
vector3
"[0 0 0]"
The world-space position that $warpparam squishes horizontally towards
Intended to be the output of the EntityOrigin proxy
$envmap
texture
"shadertest/shadertest_env"
A cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
Controlled by $basealphaenvmapmask and $envmap*
$envmapcontrast
float
0
How much to square $envmap
Incompatible with $phong?
$envmapframe
int
0
Which frame to use for $envmap
$envmapmask
texture
"shadertest/shadertest_envmask"
Brightness: $envmap mask
Alpha channel: $selfillum mask, if $selfillum_envmapmask_alpha is enabled
$envmapmaskframe
int
0
Which frame to use for $envmapmask
$envmapmasktransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $envmapmask
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmapsaturation
float
1
The saturation of $envmap
Incompatible with $phong?
$envmaptint
color
"{255 255 255 255}"
The colour of $envmap
$flowmap
texture
""
Red and green channels: Flow-mapping
Alpha channel: Albedo mask?
$lightwarptexture
texture
"shadertest/BaseTexture"
A custom shading ramp for non-projected lighting
$phong
bool
0
Enables phong highlights
Controlled by $basemapalphaphongmask, $basemapluminancephongmask, and $phong*
$phongalbedotint
bool
1
Tints $phong highlights based on the albedo
Requires(?) $phongexponenttexture, using its green channel as a mask
$phongboost
float
1
The brightness of $phong highlights
$phongexponent
float
5
The size/"tightness" of $phong highlights, where higher values give smaller highlights
If present, overrides $phongexponenttexture
$phongexponenttexture
texture
"shadertest/BaseTexture"
Red channel: The size/"tightness" of $phong highlights, where more red gives smaller highlights
Green channel: $phongalbedotint mask
Alpha channel: $rimlight mask, if $rimmask is enabled
$phongfresnelranges
vector3
"[0 0.5 1]"
Multiplies $phong highlight brightness by the first value when facing the mesh head-on, the third value at grazing angles, and the second value in between
$phongtint
vector3
"[0 0 0]"
The colour of $phong highlights
$phongwarptexture
texture
"shadertest/BaseTexture"
Related to $phong
$selfillummap
texture
""
$selfillum mask
$selfillumtint
color
"{255 255 255 255}"
The colour of $selfillum
$selfillum_envmapmask_alpha
float
0
Uses $envmapmask's alpha channel as a mask for $selfillum
$unlit
bool
0
Make the material full-bright?
$warpparam
float
0
When below 1, squishes the model horizontally towards $entityorigin and vertically upwards, with 0 being most squished
Water
The Water shader can use an extra render pass to create mirror-like reflections on a flat brush plane (which can span multiple different surfaces/triangles if needed, as long as it's a single plane).
These reflections unfortunately don't support Source Filmmaker's SSAO on models within them.

Parameter
Type
Default Value / Additional Information
$abovewater
bool
0
Whether or not this material is the outside of the water
$bumpframe
int
0
Which frame to use for $normalmap
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $normalmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$cheapwaterenddistance
float
0
How far away this material ends transitioning from high quality to low quality
Related to $cheapwaterstartdistance
$cheapwaterstartdistance
float
0
How far away this material starts blending from high quality to low quality
Related to $cheapwaterenddistance
$color_flow_lerpexp
float
0
Requires $flowmap
$color_flow_offset
float
0
Requires $flowmap
$color_flow_timeintervalinseconds
float
0
Requires $flowmap
$color_flow_timescale
float
0
Requires $flowmap
$color_flow_uvscale
float
0
Requires $flowmap
$color_flow_uvscrolldistance
float
0
Requires $flowmap
$envmap
texture
"shadertest/shadertest_env"
A cubemap that will be used for low quality reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
Controlled by $basealphaenvmapmask* and $envmapframe
$envmapframe
int
0
Which frame to use for $envmap
$flashlighttint
float
0
$flowmap
texture
""
Red and green channels: Flow-mapping
Alpha channel: Albedo mask?
Controlled by $color_flow* and $flow*
$flowmapframe
int
0
Which frame to use for $flowmap
$flow_bumpstrength
float
0
Requires $flowmap
$flow_debug
bool
0
Displays $flowmap as an unshaded albedo
$flow_noise_scale
float
0
Requires $flowmap_noise_texture
$flow_noise_texture
texture
""
Controlled by $flowmap_noise_scale
Requires $flowmap
$flow_normaluvscale
float
0
Requires $flowmap
$flow_offset
float
0
Requires $flowmap
$flow_timeintervalinseconds
float
0
Requires $flowmap
$flow_timescale
float
0
Requires $flowmap
$flow_uvscrolldistance
float
0
Requires $flowmap
$flow_worlduvscale
float
0
Requires $flowmap
$fogcolor
color
"{0 0 0 255}"
The colour of water fog
Related to $fog* and $lightmapwaterfog
$fogend
float
0
How far away water fog is fully opaque
Related to $fog* and $lightmapwaterfog
$fogstart
float
0
How far away water fog starts
Related to $fog* and $lightmapwaterfog
$forcecheap
bool
0
Render this material as low quality, regardless of $cheapwater*
$forcefresnel
float
0
$lightmapwaterfog
bool
0
Tints water fog based on the surface's lightmap?
Related to $fog*
$nofresnel
bool
0
$nolowendlightmap
bool
0
$normalmap
texture
"models/shadertest/shader1_normal"
Normal-mapping, for $basetexture(?), $reflecttexture(?), and $refracttexture(?)
Controlled by $bump* and $scroll*
$reflectamount
float
0
How much $reflecttexture is affected by $normalmap?
$reflectblendfactor
float
1
$reflectentities
bool
0
Render entities in $reflecttexture
$reflecttexture
texture
"_rt_WaterReflection"
The texture containing the mirror/reflection of what's in front of this material
Controlled by $normalmap(?) and $reflect*
$reflecttint
color
"{255 255 255 255}"
The colour of $reflecttexture
$refractamount
float
0
How much to distort $refracttexture
$refracttexture
texture
"_rt_WaterRefraction"
The texture containing what's behind this material, to be refracted/distorted
Controlled by $normalmap and $refract*
$refracttint
color
"{255 255 255 255}"
The colour of $refracttexture
$scroll1
vector2
"[0 0]"
The scroll speed that a 700%-size, 45-degree-rotated copy of $normalmap moves at
Controlled by $time
$scroll2
vector2
"[0 0]"
The scroll speed that a 200%-size, 90-degree-rotated copy of $normalmap moves at
Controlled by $time
$time
float
0
How much time has passed for $scroll*
Intended to be the output of the CurrentTime proxy
$waterdepth
float
0
WindowImposter
The WindowImposter shader seems to render $envmap in an unshaded manner, making the mesh appear like a silhouette into a pre-baked cubemap area.

Parameter
Type
Default Value / Additional Information
$envmap
texture
"shadertest/shadertest_env"
A cubemap that will be rendered in place of this material
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
Wireframe
The Wireframe shader renders a one-pixel-wide line along the edge of each triangle, of the colour specified by $color*. It can presumably be used on everything that lets you use a material, as it's more or less a fallback for when a material specifies a nonexistent or context-invalid shader.

Parameter
Type
Default Value / Additional Information
$displacementmap
texture
"shadertest/BaseTexture"
Height-mapping, displacing the 3D mesh itself
Applies per vertex (which pairs well with the $subd QC command)
Controlled by $displacementwrinkle
$displacementwrinkle
bool
0
Requires $displacementmap
WorldTwoTextureBlend
Parameter
Type
Default Value / Additional Information
$albedo
texture
"shadertest/BaseTexture"
$bumpframe
int
0
Which frame to use for $bumpmap
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping, for $basetexture
Controlled by $bump* and $nodiffusebumplighting
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $bumpmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$detail
texture
"shadertest/detail"
A secondary texture that blends with the albedo
Controlled by $detail*
$detailframe
int
0
Which frame to use for $detail
$detailscale
float
1
How many times $detail tiles across the UV map
$detail_alpha_mask_base_texture
bool
0
If disabled, uses $detail's alpha channel as a mask for $detail?
If enabled, uses $detail's alpha channel as a mask for $basetexture?
$nodiffusebumplighting
int
0
Disables $bumpmap?
$seamless_scale
float
1
If set, automatically tiles the texture across mesh geometry, by the set scale, in a way that tries to appear seamless without requiring manual UV-mapping
$selfillumtint
color
"{255 255 255 255}"
The colour of $selfillum
$shadersrgbread360
bool
0
Related to Xbox 360, which isn't relevant for Source Filmmaker
WorldVertexTransition
The WorldVertexTransition shader is a displacement-exclusive shader that works much like the LightmappedGeneric shader, but is specialized in alpha-painting for mixing two "sub-materials" on a per-vertex basis. However, given that LightmappedGeneric supports that as well, I'm unsure what the point of this shader is.

Parameter
Type
Default Value / Additional Information
$albedo
texture
"shadertest/BaseTexture"
$basetexturenoenvmap
bool
0
Disables $envmap, for non-alpha-painted displacements
$basetexture2
texture
"shadertest/detail"
The albedo, for alpha-painted displacements
Controlled by $frame2
$basetexture2noenvmap
bool
0
Disables $envmap, for alpha-painted displacements
$blendmodulatetexture
texture
""
Red channel: How much alpha-paint is needed to pass through the mask?
Green channel: Alpha-paint mask
Controlled by $blendmodulatetransform and $maskedblending
$blendmodulatetransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $blendmodulatetexture
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$bumpframe
int
0
Which frame to use for $bumpmap
$bumpframe2
int
0
Which frame to use for $bumpmap2
$bumpmap
texture
"models/shadertest/shader1_normal"
Normal-mapping, for non-alpha-painted displacements
Controlled by $bump*, $nodiffusebumplighting, and $ssbump
$bumpmap2
texture
"models/shadertest/shader3_normal"
Normal-mapping, for alpha-painted displacements
Controlled by $bump*2, $bumpmask, $nodiffusebumplighting, and $ssbump
$bumpmask
texture
"models/shadertest/shader1_normal"
Related to $bumpmap and $bumpmap2
$bumptransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $bumpmap
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$bumptransform2
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $bumpmap2
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$detail
texture
"shadertest/detail"
A secondary texture that blends with the albedo
Controlled by $detail*
$detailblendfactor
float
1
How much $detail blends with the albedo
$detailblendmode
int
0
The manner in which $detail blends with the albedo
$detailframe
int
0
Which frame to use for $detail
$detailscale
float
4
How many times $detail tiles across the UV map
$detailtint
color
"{255 255 255 255}"
The colour of $detail
$detail_alpha_mask_base_texture
bool
0
Related to $detail and alpha-painting(?)
$envmap
texture
"shadertest/shadertest_env"
A cubemap that will be used for specular reflections
If set to "env_cubemap", will automatically swap to the nearest environment cubemap built into the map
Controlled by $basealphaenvmapmask*, $basetexture*noenvmap, and $envmap*
$envmapcontrast
float
0
How much to square $envmap
Incompatible with $phong?
$envmapframe
int
0
Which frame to use for $envmap
$envmapmask
texture
"shadertest/shadertest_envmask"
Brightness: $envmap mask
Alpha channel: $selfillum mask, if $selfillum_envmapmask_alpha is enabled
$envmapmaskframe
int
0
Which frame to use for $envmapmask
$envmapmasktransform
matrix
"[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]"
The UV transformation matrix of $envmapmask
The default matrix can also be written as "center 0.5 0.5 scale 1 1 rotate 0 translate 0 0" in materials
$envmapsaturation
float
1
The saturation of $envmap
Incompatible with $phong?
$envmaptint
color
"{255 255 255 255}"
The colour of $envmap
$fow
texture
""
"FOW" stands for "fog of war", relating to what is in or out of sight in DotA 2?
$frame2
int
0
Which frame to use for $basetexture2
$fresnelreflection
float
1
$lightwarptexture
texture
""
A custom shading ramp for non-projected lighting
$maskedblending
int
0
Related to $blendmodulatetexture
$nodiffusebumplighting
int
0
Disables $bumpmap* for the albedo
$seamless_scale
float
1
If set, automatically tiles the texture across mesh geometry, by the set scale, in a way that tries to appear seamless without requiring manual UV-mapping
$selfillumtint
color
"{255 255 255 255}"
The colour of $selfillum
$ssbump
int
0
Uses $bumpmap* as self-shadowing bump-maps instead of as normal-mapping
WriteStencil
This shader doesn't implement any non-global parameters.
WriteZ
This shader doesn't implement any non-global parameters.
12 Comments
Deception 24 Apr @ 6:30pm 
what do u know bout the gore shader coordinates for L4D infected? that'd be an great thing for SFM.
8BEATER (no more toxicity now) 14 Jun, 2022 @ 7:56am 
You're a Shader God. If I manage to write my own guide on override materials, I'll 100% credit you in it for all the documentation. Thanks for the help.
sDARNs 27 May, 2022 @ 3:51pm 
Thank you for covering this! very useful
NvC_DmN_CH 31 Oct, 2021 @ 5:45am 
you could add to the WindowImposter's description that its useful for making multiple skyboxes
The asdfghjkl 26 Jan, 2021 @ 9:52am 
@Zappy after many weeks of experimenting I did It! I got the wounds to work! Thank you!
Zappy  [author] 3 Jan, 2021 @ 9:59am 
@The asdfghjkl
I don't know. You may be able to do something with the $debugellipsoids and $ellipsoid* parameters, but I don't know if there's a way to do a more "in-world" approach to the wounds, nor if those debug parameters will even work.
The asdfghjkl 3 Jan, 2021 @ 9:45am 
Question? How would I actually use the wound system for the Infected shader in SFM? I have a common infected model (common_female_tanktop_jeans) using the shader with the wounded skin enabled, but I don't know how to actually get the wounds to work.
MARK2580 8 Nov, 2020 @ 6:05am 
It would not hurt to also point out that some shaders are very specific and are used, for example, only in SFM or the old Dota 2 ... I honestly did not understand at all where, for example, a shader - VertexLit_SOB
explosive pumpkin 10 Aug, 2020 @ 9:22pm 
thank you for this gem
Prof. Purble 4 Aug, 2020 @ 2:11am 
Dang, that's dedication. I'm sure some people will find this super handy, including myself. Cheers, mate.