SurfaceGGX

From Valve Developer Community
Jump to: navigation, search

SurfaceGGX is a material shader available in the following Source engine games: <Day of Infamy> Day of Infamy, <Insurgency> Insurgency. It was first introduced in Day of Infamy and back ported to Insurgency. It supports PBR.

Bug.png Bug: This shader won't receive light properly from env_projectedtextures like the player's flashlight, instead making the material appear pure black. If the player is allowed to use a flashlight, the best case scenario is to only use this shader on props in lit up areas. This shader applied to weapon view models is safe from this however.

Supported Parameters

$basetexture
Diffuse texture.
$bumpmap
Normal mapping.
Bug.png Bug: Animated bump maps aren't possible as the shader lacks the $bumpframe parameter.
$color2
Color tinting.
$detail
Detail texturing.
$envmap
Specular reflections.
$alphatest
Alpha testing.

Metalness Parameters

$metal <boolean>
Enables use of the green channel of $phongexponenttexture.
$phongexponenttexture <texture>
Despite the name, this is a mask that defines the metalness of the material.

Specular/Gloss Parameters

$pbr <boolean>
Enables PBR reflections.
$masks <texture>
A mask for specular and glossiness. $pbr must be enabled to work.

Misc. Parameters

$fuzz <boolean>
Enables a asperity/fuzz scattering pass on the material.
$fuzzmultiplier <float>
Multiplier for the fuzz effect, default is 1.0.
$roughnessmultiplier <float>
Multiplier for roughness. To do: More detail, what is roughness?
$subsurfacescattering <boolean>
Enables subsurface scattering on the material. To do: More detail.
$disableenvmap <boolean>
Enabling disables $envmap reflections. The shader will use $envmap by default even if it isn't specified, unless this is enabled.

Configuring the masks

$phongexponenttexture

The RGB channels of $phongexponenttexture is configured as follows:

Channel Data
Red Glossiness (roughness inverted)
Green Metalness inverted
Blue Sub-surface scattering mask

$metal must be set to 1 in order to use the green channel.

Note.png Note: $fuzz and $detailnormal use the inverse of the blue channel.

$masks

The RGB and alpha channels of $masks is configured as follows:

Channel Data
RGB Specular tint
Alpha Glossiness

$pbr must be enabled to make use of $masks.

See Also

  • WorldGGX, similar shader used for brushes and displacements.