To edit hair and skin shading in OpenCAGE navigate to Configurations → Core Game → Hair and Skin Shading.
Characters aren't shaded with the same model as the rest of the world. Skin uses subsurface scattering — light entering the surface, bouncing around under it, and leaving somewhere slightly different — and hair uses an anisotropic model that gives it two specular highlights rather than one. Both are driven by global settings rather than per-material ones, so a change here affects every character in the game.
The values are stored in DATA/SKIN_SHADING_SETTINGS.TXT and DATA/HAIR_SHADING_SETTINGS.TXT. Edits are written as soon as you change a field, so there's no save button — close the window when you're done.
These are engine-wide rendering settings with no per-level override. If you want to get back to stock values, use Reset Configs in the Backup Manager.
Two values control the subsurface scattering:
- Scattering Radius — how far light spreads under the surface before it leaves. Larger values give softer, waxier skin; smaller values make it read more like a hard surface.
- Scattering Saturation — how much colour the scattered light picks up on its way through. This is what produces the reddish bleed around nostrils, ears and fingers.
Hair has considerably more to tune. The settings group loosely into transparency, highlights, absorption, occlusion, and softening.
Transparency
- Alpha Threshold — the cutoff below which a hair pixel is discarded entirely when drawing.
- Alpha Threshold (Shadows) — the same cutoff used when hair is casting a shadow. Kept separate because hair that looks right on screen often casts an unconvincingly solid shadow at the same threshold.
Highlights
Anisotropic hair shading produces two specular highlights — a sharp one near the surface and a broader, coloured one from light that has passed through strands.
- Primary Specular Level / Primary Specular Width — brightness and spread of the sharp highlight.
- Secondary Specular Level / Secondary Specular Width — brightness and spread of the broader one.
- Specular Separation — how far apart the two highlights sit along the strand. This is what makes hair read as hair rather than as a shiny surface.
- Diffuse Level — how much plain diffuse lighting contributes alongside the highlights.
Absorption
- Base Absorption — how much light is absorbed as a baseline.
- Absorption Rate — how quickly absorption increases with depth into the hair volume.
- AO Absorption Rate — how much the ambient occlusion term feeds into absorption.
- Scatter Distance Rate — how far scattered light travels through the hair before it's gone.
Occlusion
- Occlusion Rate — how strongly hair occludes itself.
- Occlusion Bias — an offset applied to the occlusion term, useful for pulling back over-dark roots.
- Occlusion AO Influence — how much the model's ambient occlusion contributes to that.
- Specular Occlusion and Specular AO — the equivalents applied to the specular highlights rather than the diffuse term.
Softening
Hair edges are softened against whatever is behind them so individual strands don't alias badly.
- Softening Length — how wide the soft edge is.
- Softening Normal Bias — how much the surface normal steers that softening.
- Softening Distance Rate — how the softening falls off with distance from the camera.
These are all subtle and interdependent — change one thing at a time and look at a character in game before moving on.