$phong: Difference between revisions
SirYodaJedi (talk | contribs) |
Darkness8163 (talk | contribs) m (→Colors: fixed a typo in the word latter) |
||
Line 69: | Line 69: | ||
=== Colors === | === Colors === | ||
{{MatParam|$phongalbedotint|bool|Tints the phong reflection by the color of the <code>$basetexture</code>. The amount of tint is defined by the green channel of <code>$phongexponenttexture</code>. A <code>$phongexponenttexture</code> must be specified in order for <code>$phongalbedotint</code> to work. | {{MatParam|$phongalbedotint|bool|Tints the phong reflection by the color of the <code>$basetexture</code>. The amount of tint is defined by the green channel of <code>$phongexponenttexture</code>. A <code>$phongexponenttexture</code> must be specified in order for <code>$phongalbedotint</code> to work. | ||
: {{Warning|<code>$phongalbedotint</code> cannot be used with <code>$phongtint</code>. The | : {{Warning|<code>$phongalbedotint</code> cannot be used with <code>$phongtint</code>. The latter will disable the effect.}} | ||
: {{Note|<code>$phongalbedotint</code> works by multiplying the <code>$basetexture</code> over the reflection, without darkening the albedo. The reflection will get dimmer as a result, so account for this in the phong mask or with <code>$phongboost</code>.}} | : {{Note|<code>$phongalbedotint</code> works by multiplying the <code>$basetexture</code> over the reflection, without darkening the albedo. The reflection will get dimmer as a result, so account for this in the phong mask or with <code>$phongboost</code>.}} | ||
: {{Note|<code>$phongalbedotint</code> will tint highlights by the original color of the <code>$basetexture</code> even when the material is tinted by <code>$color2</code> or <code>rendercolor.</code>}}|since={{src07}}|shaders=VertexLitGeneric}} | : {{Note|<code>$phongalbedotint</code> will tint highlights by the original color of the <code>$basetexture</code> even when the material is tinted by <code>$color2</code> or <code>rendercolor.</code>}}|since={{src07}}|shaders=VertexLitGeneric}} |
Revision as of 17:20, 9 January 2025
$phong
is a material shader parameter for the VertexLitGeneric shader available in all Source games since
Source 2006.
It is also available on the LightmappedGeneric and WorldVertexTransition shaders in all games since Counter-Strike: Global Offensive(also in
). It provides
diffuse reflections at low intensity and
specular highlights at apex intensity, masked by a texture which control per-texel its intensity. For a full explanation, see Phong materials.

LightmappedGeneric
and WorldVertexTransition
is only available in 





LightmappedGeneric
is also available in 
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

- Using $selfillumfresnel without $normalmapalphaenvmapmask will mask the $envmap using the $basetexture's alpha channel.
- Using $selfillumfresnel with $normalmapalphaenvmapmask will multiply the $envmap by
0.0f
. Effectively disabling the effect! - When not using $selfillumfresnel. The mask used for $envmap will be the $basetexture's alpha channel unless $normalmapalphaenvmapmask is also used.
- If $normalmapalphaenvmapmask is used, the $bumpmap's alpha channel will be used for Phong masking. Using either
$basemapalphaphongmask
or$basemapluminancephongmask
will override it.
$bumpmap
$basemapalphaphongmask
$basemapluminancephongmask
$phongexponent
$phongexponenttexture
$phongexponentfactor
$invertphongmask
$forcephong
$diffuseexp
$shinyblood
$shinybloodexponent
Brightness
$phongboost
$phongfresnelranges
$phongdisablehalflambert
Colors


Brush Shader Parameters
$phongmaskcontrastbrightness
$phongamount
$phongbasetint
Console Commands
- mat_phong <boolean >
- Disable or enable phong shading. Default 1.
See also
- Phong materials
- $envmap (environment map)
- $lightwarptexture
- $rimlight
External links
- $Phong on brushes*: The Hacky Way - A TF2maps.net guide on how to fake $Phong on brushes for games prior to CS:GO. Can also be used to fake phong on static props which are lit per-vertex, without falling back to lower-quality point lighting on the main prop
- SubstancePainter Source Engine Complex Phong Shader