$phong: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Attempt to clean up $phongalbedoboost note)
(Updated $forcephong with correct information, updated Left 4 Dead parameters with shader strings)
Line 40: Line 40:
{{MatParam|$phongexponentfactor|int|Multiply the exponent texture by this amount.|only={{src13mp}}|shaders=VertexLitGeneric}}
{{MatParam|$phongexponentfactor|int|Multiply the exponent texture by this amount.|only={{src13mp}}|shaders=VertexLitGeneric}}
{{MatParam|$invertphongmask|bool|Invert the value of the phong mask. {{todo|What types of mask does this work on?}}|since={{src07}}|shaders=VertexLitGeneric}}
{{MatParam|$invertphongmask|bool|Invert the value of the phong mask. {{todo|What types of mask does this work on?}}|since={{src07}}|shaders=VertexLitGeneric}}
{{MatParam|$forcephong|bool|Force phong shading on phong materials even at low GPU levels. This requires the convar <code>mat_phong</code> to be set to 1, otherwise it won't work.{{confirm}}|since={{l4d}}|shaders=VertexLitGeneric}}
{{MatParam|$forcephong|bool|Force phong shading on phong-using materials even at low GPU levels when <code>mat_phong</code> is disabled.|since={{portal2}}|shaders=VertexLitGeneric}}
{{MatParam|$diffuseexp|float|{{todo|Does this have something to do with the $phongexponent, $phongexponenttexture or both?}}|only={{L4ds}}}}
{{MatParam|$diffuseexp|float|Diffuse exponent used for dynamic lights only.|only={{L4ds}}}}
{{MatParam|$shinyblood|int|only={{L4ds}}}}
{{MatParam|$shinyblood|int|Derive phong mask from areas that are more red than others. Only when variation is disabled.|only={{L4ds}}}}
{{MatParam|$shinybloodexponent|int|{{todo|1=See ''[https://steamcdn-a.akamaihd.net/apps/valve/2010/GDC10_ShaderTechniquesL4D2.pdf#page=33 Shading a Bigger, Better Sequel: Techniques in Left 4 Dead 2]''.}}|only={{L4ds}}}}
{{MatParam|$shinybloodexponent|int|Exponent for the above.|only={{L4ds}}}}


=== Brightness ===
=== Brightness ===

Revision as of 14:28, 28 April 2021

Phong shading provides Alyx's skin, hairband and lip highlights.

Template:Shaderparam It provides diffuse reflections, masked by a texture to control its intensity per-texel. For a full explanation, see Phong materials.

Note.pngNote:Phong shading for LightmappedGeneric and WorldVertexTransition is only available in Counter-Strike: Global Offensive. It requires the material to be lit by 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.
Note.pngNote:Phong shading for LightmappedGeneric is also available in Mapbase.

Syntax

$phong <bool>
Note.pngNote:All parameters in the following example must be specified in the material, otherwise Phong shading won't show up at all, except in Insurgency.
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 $basemapalphaphongmask $basemapluminancephongmask $phongexponent $phongexponenttexture $phongexponentfactor $invertphongmask $forcephong $diffuseexp $shinyblood $shinybloodexponent

Brightness

$phongboost $phongfresnelranges $phongdisablehalflambert

Colors

$phongalbedotint $phongalbedoboost

The Hunter without and with its $phongwarptexture, showing how it affects the Phong reflection.

$phongtint $phongwarptexture

Brush Shader Parameters

$phongmaskcontrastbrightness $phongamount $phongbasetint

Console Commands

mat_phong <booleanRedirectInput/boolean>
Disable or enable phong shading. Default 1.

See also