$translucent
$translucent
is a material shader parameter available in all Source games.
It specifies that the material should be partially see-through. The alpha channel of the $basetexture is used to decide translucency per-pixel.
Any object that has a $translucent
material does not affect VIS, and can be seen through by NPCs from any angle. Visleaves do affect alpha sorting of translucent materials, however.
VMT Syntax Example
$translucent <bool>
LightmappedGeneric { $basetexture glass\window001a $translucent 1 }
Additional Parameters
Caveats
Flickering and Reversed Depth
Translucency can sometimes cause a material to flicker, or cause sorting issues with nearby surfaces. In both cases consider using $alphatest
instead of $translucent
when this happens. It drastically lowers quality, but will usually resolve the issue and is much faster to draw. It will also cast flashlight shadows, unlike translucents.
Unlike $translucent
, which allows for varying degrees of opacity, alpha testing does not—portions of your texture are either 'on' or 'off'. $alphatestreference
, a normal parameter, controls the filtering of the transparency masking (Using lower values like .01 will result in a more blurred edge while a value of .99 will be extremely sharp.) Since alpha-testing is cheaper than $translucent
, this can be used to achieve a similar effect to materials using the $translucent
parameter at reduced cost. Using $allowalphatocoverage
will enable antialiasing of alpha-tested textures, giving them much softer edges. When $allowAlphaToCoverage
is enabled, $alphatestreference
is ignored and will not affect the texture's appearance, though it will still affect projected texture stenciling (e.g. the flashlight).
$allowAlphaToCoverage
will only be visible if the user has MSAA enabled.Compatibility With Other Effects
Certain shader parameters[Which ones?] disable translucency. If you are having trouble getting it to work, try commenting out other parts of the material one by one to see which one causes the conflict.
Known conflicts include:
- $selfillum, as it requires the alpha mask to determine the glow effect, and takes it "away" from transparency. Even using $selfillummask as a separate texture does not fix it.
- $blendtintbybasealpha, on models. It uses the alpha mask to determine the amount of tinting, again taking it "away".
Filtering Borders
Texture filtering will blend nearby pixels together even if some of of them are entirely transparent. This can create unwanted outlining effects if sudden drop-offs in alpha coincide with drop-offs in colour, which may well happen when the alpha channel reaches zero and you stop being able to see the pixels.
To resolve this issue, simply blend the colours of your image slightly beyond where the alpha channel drops off. This can be easily achieved by duplicating the translucent layer and smudging it into the relevant areas.
(For users of older versions of GIMP, the program will automatically remove colour information for pixels with an alpha of zero whenever layers are combined. As a work-around for this, you could give those pixels an alpha value of one instead.
As of GIMP 2.8.14, pixels with an alpha value of 0 retain their color information when saved as a tga.
-transparent
flag.See also
- $alpha, for texture-wide translucency
- $distancealpha, for vector-like alpha edges
- $vertexalpha
- $alphatest, for binary opacity.