Alphatexture: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(→‎Potential usecases: actual non-niche use case)
Line 15: Line 15:


== Potential usecases ==
== Potential usecases ==
This parameter can be useful in certain niche instances:
%alphatexture is most useful for materials that are translucent enough for light to reach through, but opaque enough that they are best represented by opaque or $alphatest materials. 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 {{cmd|$halflambert}} (or {{cmd|$phong}} without {{cmd|$phongdisablehalflambert}}).
* When {{cmd|$detailblendmode|4}} is used, as the shadows would then make more sense to be cast from $detail
* When {{cmd|$detailblendmode|4}} is used, as the shadows would then make more sense to be cast from $detail
* When {{cmd|$additive}} is used, as no alpha channel will be present and neither {{ent|$translucent}} nor {{ent|$alphatest}} are used
* When {{cmd|$additive}} is used, as no alpha channel will be present and neither {{ent|$translucent}} nor {{ent|$alphatest}} are used
Line 22: Line 28:
* When {{cmd|$alpha}} is used, as [[VRAD]] doesn't account for it
* When {{cmd|$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.
* 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.
* Making the shadows for a given prop less dark by using an alpha texture with partial opacity, which can be useful if it uses {{cmd|$halflambert}} (or {{cmd|$phong}} without {{cmd|$phongdisablehalflambert}}).


== Workaround for other versions of VRAD ==
== 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: {{l4d2}} {{portal2}}), it is still possible to simulate the effect of {{code|%alphatexture}} by creating a separate {{cmd|$translucent}} material to use in VRAD only, and setting the alpha texture to that material's {{cmd|$basetexture}}. To avoid needing to swap VMTs every time the map is being compiled, the {{code|-insert_search_path}} parameter can be used with VRAD, which should take priority over the search paths declared in [[gameinfo.txt]].
If mapping for a game that does not have an SDK that includes the source code to compile your own version of [[VRAD]] (ex: {{l4d2}} {{portal2}}), it is still possible to simulate the effect of {{code|%alphatexture}} by creating a separate {{cmd|$translucent}} material to use in VRAD only, and setting the alpha texture to that material's {{cmd|$basetexture}}. To avoid needing to swap VMTs every time the map is being compiled, the {{code|-insert_search_path}} parameter can be used with VRAD, which should take priority over the search paths declared in [[gameinfo.txt]].

Revision as of 18:35, 18 April 2025

%alphatexture is an internal material shader parameter available in Garry's Mod Garry's Mod.

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.

Tip.pngTip:As this parameter is only used by VRAD, the VTF mentioned does not need to be shipped with the map if it is unused elsewhere.
Cpp.pngCode:See this GitHub PR for how to add this to a custom VRAD.

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 reach through, but opaque enough that they are best represented by opaque or $alphatest materials. 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:

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: Left 4 Dead 2 Portal 2), 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.