$phong: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m ({{lang}} -> {{Language subpage}})
(Gmod supports $phongalbedoboost and $phongdisablehalflambert since 2023.06.28)
Line 65: Line 65:
:{{note|<code>$envmap</code> is also affected by these fresnel ranges if both it and Phong are enabled in a material.}}
:{{note|<code>$envmap</code> is also affected by these fresnel ranges if both it and Phong are enabled in a material.}}
:{{note| drives the x component of a phongwarptexture if specified.}}|shaders=VertexLitGeneric, LightmappedGeneric({{mapbase|only}})}}
:{{note| drives the x component of a phongwarptexture if specified.}}|shaders=VertexLitGeneric, LightmappedGeneric({{mapbase|only}})}}
{{MatParam|$phongdisablehalflambert|bool|Disables forced [[$halflambert|half-lambertian]] shading on Phong materials. {{note|This parameter is effectively forced on in {{csgobranch|4}} due to <code>$halflambert</code> being disabled.}}|since={{as}}|also={{Mapbase}}|shaders=VertexLitGeneric}}
{{MatParam|$phongdisablehalflambert|bool|Disables forced [[$halflambert|half-lambertian]] shading on Phong materials. {{note|This parameter is effectively forced on in {{csgobranch|4}} due to <code>$halflambert</code> being disabled.}}|since={{as}}|also={{gmod}},{{Mapbase}}|shaders=VertexLitGeneric}}


=== Colors ===
=== Colors ===
Line 74: Line 74:
{{MatParam|$phongalbedoboost|float|Phong albedo overbrightening factor. Ranges 0-255.
{{MatParam|$phongalbedoboost|float|Phong albedo overbrightening factor. Ranges 0-255.
: {{note| This will multiply the tint that is being applied to phong from $phongalbedotint.}}
: {{note| This will multiply the tint that is being applied to phong from $phongalbedotint.}}
: {{bug| This does not work when using [[$detail]]. }}|since={{csgo}}|shaders=VertexLitGeneric}}
: {{bug| This does not work when using [[$detail]]. }}|since={{csgo}}|also={{gmod}}|shaders=VertexLitGeneric}}
[[File:Phongwarp example.png|thumb|200px|The Hunter without and with its <code>$phongwarptexture</code>, showing how it affects the Phong reflection.]]
[[File:Phongwarp example.png|thumb|200px|The Hunter without and with its <code>$phongwarptexture</code>, showing how it affects the Phong reflection.]]
{{MatParam|$phongtint|RGB matrix|Color tint of the phong reflection.
{{MatParam|$phongtint|RGB matrix|Color tint of the phong reflection.

Revision as of 14:43, 28 June 2023

English (en)Español (es)Русский (ru)中文 (zh)Translate (Translate)
Phong shading provides Alyx's skin, hairband and lip highlights.

Template:Shaderparam 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.

Note.pngNote:Phong shading for LightmappedGeneric and WorldVertexTransition is only available in CS:GO engine branch 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.
Note.pngNote:Phong shading for LightmappedGeneric is also available in Mapbase Mapbase, but it is implemented differently.

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 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

Warning.pngWarning:There are some caveats regarding $normalmapalphaenvmapmask and $selfillumfresnel when using $phong!


$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

Breakdown of the $phongwarptexture: computed coordinates, texture and result

$phongwarptexture

Brush phong in Counter-Strike: Global Offensive 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 CS:GO engine branch)

$phongmaskcontrastbrightness $phongamount $phongbasetint

Console Commands

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

See Also