$phong
Jump to navigation
Jump to search
The $phong VMT command provides diffuse reflections. In most engine branches it is only available with VertexLitGeneric;
Counter-Strike: Global Offensive (as of early 2015) allows it to a limited extent on LightmappedGeneric. For a full explanation, see Phong materials.
VMT syntax
$phong <bool>
- Todo: Other games that don't require all phong parameters present (likely Portal 2 and up)
VertexLitGeneric
{
$phong 1
$bumpmap [texture]
$phongexponent 5 // either/or
$phongexponenttexture [texture] // either/or
$phongboost 1.0
$phongfresnelranges "[0 0.5 1]"
}
Parameters
Masking
$bumpmap <texture>- There must be a Phong mask. The alpha channel of a bump map acts as a Phong mask by default.
$BasemapAlphaPhongMask <bool>- Uses
$basetexture's alpha channel as the Phong mask instead of$bumpmap's. The phong will not be influenced by the bumpmap, however. - Template:L4D add
- Phong intensity is based on the brightness of
$basetexture. $PhongExponent <int>- The numeric value overrides an exponent mask if present.
$PhongExponentTexture <texture>- A global exponent value, or a per-texel exponent texture map. In an exponent map:
- Red channel: Exponent (size of highlight, 0-255, where a value of 0 is a large highlight, 255 small.)
- Green channel: Albedo tint (if
$phongalbedotint 1, higher is more tint) - Blue channel: Nothing
- Alpha channel:
$rimlightmask
$InvertPhongMask <bool>- Appears to invert the value of the phong mask, as the name suggests. Todo: What types of mask does this work on?
$PhongExponentFactor <int>- This number will be used to multiply the exponent texture.
- Template:L4D add
- Template:L4D add
$allowdiffusemodulation <int>- [Todo]
$DiffuseExp- Todo: Does this have something to do with the $phongexponent, $phongexponenttexture or both?
Brightness
$phongboost <float>- Phong brightness factor. Larger values create a more intense highlight, useful for surfaces like metal and glass.
$PhongFresnelRanges <matrix>- See Phong Fresnel ranges. Default is
"[0 0.5 1]". $PhongDisableHalfLambert <bool>Template:P2 add- Used in Portal 2 on the Personality Cores such as Wheatley, disables functionality of $halflambert. MAY need
$halflambert 0! $AmbientOcclusionTexture <texture>- A "dirtmap". Mentioned in the SDK samples and seen in the VMT for Alyx's face. Ambient Occlusion is generally used for the eyes and face.
Colours
$PhongAlbedoTint <bool>- Allows the
$basetextureto affect the colour of the Phong highlight. The amount of tint is defined by the green channel of$phongexponenttexture(see above). $phongtint "[<red float> <green float> <blue float>]"- Modifies the colour of the phong reflection. The channels are interpreted relative to each other (so "[0 0 0]" and "[1 1 1]" are the same).
Bug:This does not work with $basemapalphaphongmask. [todo tested in ?]$PhongWarpTexture <texture>Template:EP2 add- Todo: Used to create an iridescence effect, as seen on npc_hunters.
Phong shading on brush faces
A May 2015 update to
Counter-Strike: Global Offensive added limited support for Phong-based highlights on LightmappedGeneric materials. Currently it only works when the material is directly lit by an env_cascade_lighting, using the dynamic shadows as a mask (although traditional Phong masking is supported on top of this). It is known to work on displacements as well as WorldVertexTransition materials, but not water or Lightmapped_4WayBlend.
New Parameters
$phongMaskContrastBrightness "[<float> <float>]"- Defines the contrast level between light and dark areas in the mask, and the overall brightness, respectively. Added along with support for phong-shaded lightmapped textures. Todo: Find out the range of both values, and whether or not it can be used on models.
$phongAmount "[<red float> <green float> <blue float> <brightness> float]"- Controls the tint and brightness. The fourth value can go beyond 1, but affects the brightness of the whole texture, not just the highlight.
See also
- Phong materials
- $envmap (environment map)
- $lightwarptexture
- $rimlight