%alphatexture
%alphatexture
is an internal material shader parameter available in Garry's Mod and
Mapbase.
Used on static props when the prop is flagged for texture shadows and compiling VRAD with -textureshadows
. The alpha channel of the specified VTF will be used instead of $basetexture, even if $alphatest and $translucent are absent.


The source code for

Syntax
"VertexLitGeneric"
{
$basetexture "models/props_custom/myprop_base"
%alphatexture "models/props_custom/myprop_alpha"
}
Potential usecases
%alphatexture
is most useful for materials that are translucent enough for light to pass through, but are opaque to the human eye. Common materials that would exhibit this behavior are:
- Foliage such as leaves and grass
- Curtains, awnings, and umbrellas
- Paper
This parameter can be useful in certain other niche instances:
- Making the shadows for a given prop less dark, which can be useful if it uses
$halflambert
(or$phong
without$phongdisablehalflambert
). - When
$detailblendmode 4
is used, as the shadows would then make more sense to be cast from $detail - When
$additive
is used, as no alpha channel will be present and neither $translucent nor $alphatest are used - When a shader such as
Refract
is used, as no alpha channel will be present and neither $translucent nor $alphatest are used, and $basetexture won't be used as the diffuse - If a shader such as
Wireframe
is used, as $basetexture will not be present - When
$alpha
is used, as VRAD doesn't account for it - For creating a sharp high-resolution texture shadow without bloating the map's filesize, as the shadow-casting texture does not need to be shipped with the map.
Workaround for other versions of VRAD
If mapping for a game that does not have an SDK that includes the source code to compile your own version of VRAD (ex:
), it is still possible to simulate the effect of
%alphatexture
by creating a separate $translucent
material to use in VRAD only, and setting the alpha texture to that material's $basetexture
. To avoid needing to swap VMTs every time the map is being compiled, the -insert_search_path
parameter can be used with VRAD, which should take priority over the search paths declared in gameinfo.txt.