Hair and skin material properties

Hair and skin shader

Summary

Published: Apr 05 2024 by manavortex Last documented edit: Apr 05 2024 by manavortex

This page gives an explanation of properties for the hair and skin shaders.

Wait, that's not what I want!

Hair material

Strand_ID

Texture - Paths to an identity map (.xbm). This is a greyscale texture where every masked hair strand has a single, unique greyscale value. gradientEntriesID colour gradient in hair profile (.hp) is mapped to this texture.

Strand_Gradient

Texture - Paths to a root map (.xbm). This is a greyscale texture with a vertical black to white gradient from root to tip. gradientEntriesRootToTip colour gradient in hair profile (.hp) is mapped to this texture.

Strand_Alpha

Texture - Paths to an opacity mask texture (.xbm). Black = fully transparent. White = fully opaque.

RoughnessScale

Scalar with a decimal value between 0 and 1.0. Determines how rough or smooth hair material look. 0 = least rough (high specular, shiny reflection characteristics). 1.0 = most rough (high diffuse, matte reflection characteristics). Hair will look unnatural if this is too low (shiny).

RoughnessBias

Scalar with a decimal value between 0 and 1.0 that is applied between min and max RoughnessScale, which changes the suddenness of its onset.

AlphaCutoff

Flow

Texture - Paths to an anisotropic rotation map (.xbm). Anisotropy is a reflection characteristic of materials with fine grooves/ridges predominately following the same direction. The reflection will become blurred and stretched perpendicular to the direction of the grooves.

FlowStrength

Scalar with a decimal value between 0 and 1.0. Anisotropic materials have unique reflection characteristics as a result of their grooved/ridged surface. The more anisotropic a material is, the more its reflection is influenced (stretched/blurred) by the direction of its grooves/ridges. 0 = fully isotropic. 1.0 = fully anisotropic. Hair should have high or full anisotropy.

VertexColorStrength

Scalar with a decimal value between 0 and 1.0. Determines how much influence vertex colour has in the material. Vertex colour is a mesh attribute (colour, red channel). Cyberpunk hair meshes are vertex coloured red on the cap mesh and the innermost layer of hair clumps. They fade to black at the outermost layer of hair clumps. RGB 255, 0, 0 = max dull/dark. RGB 0, 0, 0 = max bright/glossy.

Scattering

Scalar with a decimal value between 0 and 1.0. Effect is not well understood at this time. Related to some internal light scattering function in hair shader. It affects the colour and reflection characterics of hair materials. There is some interaction between this and advanced game options for hair rendering. Specifically AlphaShifts R, TT, TRT (light scattering modes), single scattering and multiple scattering. Default values can be overridden with CET console commands. e.g. GameOptions.SetFloat("Editor/Characters/Hair/AlphaShifts", "TRT", 0.375000

ShadowStrength

ShadowMin

ShadowMax

ShadowRoughness

DebugHairColor

HairProfile

HairParameters - Paths to a hair profile or .hp file. Hair profiles contain 2x arrays named gradientEntriesID and gradientEntriesRootToTip. Each array contains a set of colour values and gradient stop positions. They are mapped to the greyscale identity and root maps respectively, which are blended to form the hair material's base colour. Cheap method to create a large variety of editable hair colour variations without the need to use large, colour textures.

Skin material

Albedo

Texture - Paths to an albedo texture (.xbm). This texture is used to determine the base colour of skin. Most skin albedo maps are pale/caucasian and tinted darker tones via TintColor.

SecondaryAlbedo

Texture - Paths to a secondary albedo texture (.xbm) with alpha transparency, which is blended with Albedo. Intended for secondary colour details like freckles. Commonly used by texture frameworks to blend tattoos with Albedo.

SecondaryAlbedoInfluence

Normal

Texture - Paths to a primary global normal map (.xbm).

DetailNormal

Texture - Paths to a secondary global normal map (.xbm). This is typically used for muscle/vein definition and is blended with primary normal.

Roughness

DetailRoughnessBiasMin

DetailRoughnessBiasMax

MicroDetailUVScale01

Scalar - UV scale compensation factor for microdetail_n01.xbm. See Fig. 1. Value is an integer between 0 and 100. A particular value is required for this detail normal map to tile seamlessly depending on the UV scale of the body part mesh. See Fig. 2.

MicroDetailUVScale02

Scalar - UV scale compensation factor for microdetail_n02.xbm. See Fig. 1. Value is an integer between 0 and 100. A particular value is required for this detail normal map to tile seamlessly depending on the UV scale of the body part mesh. See Fig. 2.

MicroDetail

Texture - Paths to a microdetail texture (.xbm). See Fig. 1. This is a tileable detail normal map, typically used for pore structures. There are 3x by default (microdetail_n01.xbm, microdetail_n02.xbm and a 2:1 combination of the two textures called microdetail_n.xbm).

MicroDetailInfluence

Scalar with a decimal value between 0 and 1.0. Determines normal strength of microdetail_n01 and microdetail_n02. See Fig 1.

TintColorMask

TintColor

Color - RGB uint8 colour value multiplied with the per pixel colour of Albedo and SecondaryAlbedo texture. Used to make all of the skin tone options in character creator (ca_almond, ca_senna, bl_dark etc).

TintScale

SkinProfile

Detailmap_Stretch

EmissiveMask

EmissiveEV

Detailmap_Squash

CavityIntensity

Bloodflow

Texture - Path to a bloodflow (vein) texture (.xbm).

BloodColor

DetailNormalInfluence

Fig. 1 - Microdetail _n.xbm

Last updated