$phong: Difference between revisions
Jump to navigation
Jump to search
Note:Phong shading for
CS:GO engine branch. It requires the material to be lit by the sunlight from a env_cascade_light entity to work properly and uses the dynamic shadows generated by it as a mask on top of the traditional phong masking. ((in all games since
) env_projectedtexture 4 also affects brushes with phong enabled)
Note:Phong shading for
Mapbase, but it is implemented differently.
Important:In
Black Mesa half-lambertian for new lights is broken. The result is that meshes with $phong or $halflambert get lit from ALL sides perpendicular to newlights, including ones with opposing normals. If you want to use $phong or $halflambert - you are able to fix this with adding in your VMT material parameter
Note:All parameters in the following example must be specified in the material, otherwise Phong shading won't show up at all, except in
Insurgency.
Warning:There are some caveats regarding $normalmapalphaenvmapmask and $selfillumfresnel when using $phong!
Brush Shader Parameters (only in
mNo edit summary |
MyGamepedia (talk | contribs) No edit summary |
||
Line 4: | Line 4: | ||
{{Note|Phong shading for <code>LightmappedGeneric</code> and <code>WorldVertexTransition</code> is only available in {{csgobranch|4}}. It requires the material to be lit by the sunlight from a {{ent|env_cascade_light}} entity to work properly and uses the dynamic shadows generated by it as a mask on top of the traditional phong masking. ({{Strata|since}} {{ent|env_projectedtexture|4}} also affects brushes with phong enabled)}} | {{Note|Phong shading for <code>LightmappedGeneric</code> and <code>WorldVertexTransition</code> is only available in {{csgobranch|4}}. It requires the material to be lit by the sunlight from a {{ent|env_cascade_light}} entity to work properly and uses the dynamic shadows generated by it as a mask on top of the traditional phong masking. ({{Strata|since}} {{ent|env_projectedtexture|4}} also affects brushes with phong enabled)}} | ||
{{Note|Phong shading for <code>LightmappedGeneric</code> is also available in {{mapbase|4}}, but it is implemented differently.}} | {{Note|Phong shading for <code>LightmappedGeneric</code> is also available in {{mapbase|4}}, but it is implemented differently.}} | ||
{{important|In {{bms|4}} half-lambertian for [[NewLight Point|new lights]] is broken. The result is that meshes with [[$phong]] or [[$halflambert]] get lit from ALL sides perpendicular to newlights, including ones with opposing normals. If you want to use [[$phong]] or [[$halflambert]] - you are able to fix this with adding in your [[VMT]] material parameter <code>"$halflambert_gbuffer_off" "1"</code>.}} | |||
==Syntax== | ==Syntax== | ||
Revision as of 01:18, 15 February 2024
It is also available on the
LightmappedGeneric
and
WorldVertexTransition
shaders in all games since Counter-Strike: Global Offensive. 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 


"$halflambert_gbuffer_off" "1"
.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
$phongalbedotint
$phongalbedoboost

Brush phong in
Counter-Strike: Global Offensive using tile/hr_t/inferno/tile_a. Note the complete absence of the reflection in the shaded area.

Brush Shader Parameters (only in
)(also in
)
$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