$vertexcolor and $vertexalpha: Difference between revisions
Jump to navigation
Jump to search
Note:For HUDs in Garry's Mod, the parameter
(Modulate shader) |
(Fix FAKE NEWS - vertex alpha DOES work in CS:GO) |
||
Line 3: | Line 3: | ||
Only [[particle]]s and [[decals]] are known to modify their vertex data, but it should be possible to implement your own scenarios too. Vertex alpha and color ''cannot'' be compiled into a [[model]] however, but they can be faked with an obscure shader named [[Modulate]]. | Only [[particle]]s and [[decals]] are known to modify their vertex data, but it should be possible to implement your own scenarios too. Vertex alpha and color ''cannot'' be compiled into a [[model]] however, but they can be faked with an obscure shader named [[Modulate]]. | ||
{{note|For HUDs in ''Garry's Mod'', the parameter '''<code>$vertexalpha</code>''' is needed in order to make the alpha parameter of [http://wiki.garrysmod.com/page/surface/SetDrawColor <code>surface.SetDrawColor()</code>] working.}} | |||
For HUDs in ''Garry's Mod'', the parameter '''<code>$vertexalpha</code>''' is needed in order to make the alpha parameter of [http://wiki.garrysmod.com/page/surface/SetDrawColor <code>surface.SetDrawColor()</code>] working. | |||
Revision as of 00:54, 14 February 2019
$vertexalpha
and $vertexcolor
are two VMT commands that make the surface derive its alpha and color values from per-vertex data provided by the engine.
Only particles and decals are known to modify their vertex data, but it should be possible to implement your own scenarios too. Vertex alpha and color cannot be compiled into a model however, but they can be faked with an obscure shader named Modulate.

$vertexalpha
is needed in order to make the alpha parameter of surface.SetDrawColor()
working.
LightmappedGeneric and UnlitGeneric materials support per vertex alpha, however a few conditions must be met.
$vertexalpha <bool>
- Must be set to 1
$vertexcolor <bool>
- Must be set to 1 (This is not necessary on UnlitGeneric)
- The surface must be a displacement.
- You can use the "paint alpha" tool to paint the alpha.
There are some caveats.
- You can define a second base texture, but it will be invisible.
- $translucent Does not function. The material will continue to use the vertex alpha of the displacement. $additive however, does function normally
- Material renders as a translucent materials, and as such, suffers from the same sorting issues and caveats as materials with $translucent
Todo: Are these commands shader-agnostic?