$phong: Difference between revisions
SirYodaJedi (talk | contribs) mNo edit summary  | 
				mNo edit summary  | 
				||
| Line 3: | Line 3: | ||
[[File:Alyx phong closeup.jpg|thumb|200px|Phong shading provides Alyx's skin, hairband and lip highlights.]]  | [[File:Alyx phong closeup.jpg|thumb|200px|Phong shading provides Alyx's skin, hairband and lip highlights.]]  | ||
It is also available on the {{code|[[LightmappedGeneric]]}} and {{code|[[WorldVertexTransition]]}} shaders in all games since {{csgo|4}}{{also|{{gmod}}{{xengine}}{{mapbase}}}}. It provides {{w|diffuse reflection|icon=hide}}s at low intensity and {{w|specular highlight|icon=hide}}s at apex intensity, masked by a texture which control per-texel its intensity. For a full explanation, see [[Phong materials]].  | It is also available on the {{code|[[LightmappedGeneric]]}} and {{code|[[WorldVertexTransition]]}} shaders in all games since {{csgo|4}}{{also|{{gmod}}{{xengine}}{{mapbase}}}}. It provides {{w|diffuse reflection|icon=hide}}s at low intensity and {{w|specular highlight|icon=hide}}s at apex intensity, masked by a texture which control per-texel its intensity. For a full explanation, see [[Phong materials]].  | ||
{{Note|Phong shading for <code>LightmappedGeneric</code> and <code>WorldVertexTransition</code> is only available in {{csgobranch}}{{strata}}. 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  | {{Note|Phong shading for <code>LightmappedGeneric</code> and <code>WorldVertexTransition</code> is only available in {{csgobranch}}{{strata}}. 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}} also affects brushes with phong enabled)  | ||
{{bug*|{{gmod|4}} reads lighting direction for brush phong from {{ent|env_sun}} instead; maps with multiple suns may not get accurate phong reflections on brushes.}}}}  | {{bug*|{{gmod|4}} reads lighting direction for brush phong from {{ent|env_sun}} instead; maps with multiple suns may not get accurate phong reflections on brushes.}}}}  | ||
{{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.}}  | ||
Revision as of 21:56, 14 September 2024
$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 
$basemapalphaphongmaskor$basemapluminancephongmaskwill override it. 
$bumpmap
$basemapalphaphongmask
$basemapluminancephongmask
$phongexponent
$phongexponenttexture
$phongexponentfactor
$invertphongmask
$forcephong
$diffuseexp
$shinyblood
$shinybloodexponent
Brightness
$phongboost
$phongfresnelranges
$phongdisablehalflambert
Colors
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