Style Direction
UE5 is the source of truth here. Keep the graph readable first, then branch into project-specific versions only when the base is proven.
UE5 / Style Direction
Hair shading notes for flow-based highlights, shadow bands, rim separation, and readable hair silhouette.
UE5 is the source of truth here. Keep the graph readable first, then branch into project-specific versions only when the base is proven.
01
02
03
Preview this signal alone and make sure its range is useful before it drives color, opacity, or emission.
Why: a clean mask makes later tuning feel deliberate instead of guesswork.
Separate color choice from brightness. It keeps palette changes safe when the effect moves between levels.
Why: artists can rebalance mood without accidentally changing the mask logic.
Separate color choice from brightness. It keeps palette changes safe when the effect moves between levels.
Why: artists can rebalance mood without accidentally changing the mask logic.
Use this to protect the silhouette first. Edge response should help the form read before it becomes decoration.
Why: rims and contact lines are usually the cheapest readability fix in a busy scene.
Keep the noisy part weaker than the main shape. Noise should add life, not become the design.
Why: over-contrasted noise is one of the fastest ways to make a material feel unfinished.
04
Get a clean black-and-white read first; color, glow, and distortion should only support that read.
Every exposed value should answer a real art question: how fast, how wide, how bright, how soft.
05
float ndl = saturate(dot(normalize(worldNormal), normalize(mainLightDir)));
float band = smoothstep(shadowThreshold, highlightThreshold, ndl);
float3 shade = lerp(shadowColor, litColor, band);
float rim = pow(1.0 - saturate(dot(viewDir, worldNormal)), rimPower) * rimIntensity;
return shade + rim * rimColor;06
07