Principled Hair
Table Of Contents
The Redshift Principled Hair shader is a physically-based shader for hair and fur. You can quickly get up to speed with natural hair results by adjusting the melanin and melanin redness values. adding in some randomization by increasing the amount of variation for various color and roughness parameters.
The look of hair is heavily affected by the reflection trace depth render setting. When hair is lighter in color a multi-scattering reflection effect becomes more pronounced, this means that light hair (lower melanin values) will generally require higher trace depth values than dark hair (higher melanin values). Hair that is driven by an albedo color behaves in the same way but hair that is diffuse is much less sensitive to reflection trace depth changes.
Reflection trace depth values that are too low may look nothing like their intended color. In the example videos below, note how significantly the look of the hair can change when trace depth values are low. However, since high trace depths can have a significant negative impact on render times it is important to find a good balance for your intended look as there are diminishing visual returns beyond a certain point.
Trace Depth: 1-32 Hair Color: Melanin 0.2 |
Melanin 0.65 |
Albedo Color: Light Pink |
There are two ways to control the reflection trace depth of hair.
Use the "Reflection Trace Depth" parameter in Redshift's main Render Settings.
This will control the reflection trace depth across the entire scene, this may be inefficient if your scene does not require high reflection trace depths outside of hair rendering.
Use the "Trace Depth" override setting in the Advanced section of the Principled Hair shader.
This will only override the local reflection trace depth of this hair material, frequently this is more efficient since you can set higher or lower trace depths for hair rendering rather than affecting the entire scene.
This allows you to tint the color of the hair. The default white color leaves melanin and other color attributes to show through unaffected.
Tint color breaks physical accuracy and should be left at the default white for realistic hair so that specular highlights are not colored. To simulate dyed hair or other colors outside of the melanin color range and maintain physical accuracy please use albedo color instead.
![]() |
![]() |
![]() |
Tint: White (Default) Melanin: 0.65 |
Light Green | Magenta |
Roughness controls how shiny the hair looks by tightening or spreading the reflection highlights along the length of the hair strands. Higher values result in more spread out diffuse reflections while lower values result in tighter more shiny highlights.
Roughness: 0-1 |
Roughness radial controls how shiny the hair looks by tightening or spreading the reflection highlights across the width of the hair strands. Higher values result in more spread out diffuse reflections while lower values result in tighter more shiny highlights.
Roughness (Radial): 0-1 |
Angle Shift moves the location of the highlights along the hair strands. Positive values shift the highlight position towards the root of the hair strands and negative values shift the highlight towards the tip.
Angle Shift: -15 to +15 |
This allows you to adjust the index of refraction, human hair has an IOR of 1.55. Higher values increase reflectivity.
IOR: 1-2 |
This defines the number of samples to use when rendering the hair, more samples means less noise. Lower hair roughness values produces sharper light reflections which will require using higher sample counts.
This controls how heavily the albedo color is mixed with the melanin color.
For an albedo only color set Albedo Mix to 1.
Albedo Mix: 0-1 Albedo: Blue |
Albedo controls the color of the hair.
If you intend to simulate natural hair colors it is recommended to use the melanin/melanin redness color attributes instead of the albedo color.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Albedo Mix: 0.0 Albedo: Orange (default) Melanin: 0.65 |
0.5 Orange (default) 0.65 |
1.0 Orange (default) 0.65 |
0.5 Blue (0,0,255) 0.2 |
0.5 Blue (0,0,255) 0.65 |
1.0 Hair Position + Color Ramp 0.65 |
Defines the concentration of melanin in the hair. High values result in darker hair while a value of 0 will render the hair completely white.
Lighter colored hair benefits greatly from increasing the rendering trace depth so be certain to check reflection trace depth particularly for blonde hairstyles.
![]() |
![]() |
![]() |
![]() |
![]() |
Melanin: 0.0 | 0.25 | 0.5 | 0.75 | 1.0 |
Defines the redness of the hair color by controlling the amount of pheomelanin in the hair. High melanin redness values result in redder hair.
Melanin value must be greater than 0.
![]() |
![]() |
![]() |
Melanin Redness: 0.0 Melanin: 0.3 |
0.5 | 1.0 |
Changing the variation seed value alters the results of all of the random variation attributes.
![]() |
![]() |
![]() |
Variation Seed: 0 | 1 | 2 |
This controls the size of the reflection breakup on the hair.
Glint Size: 0-90 |
This controls the intensity of the reflection breakup on the hair. Higher values result in more intense glint reflections and greater contrast in the hair.
Glint Strength: 0-1 |
This controls the albedo color of the stray hairs.
Stray Hair Fraction must be greater than 0.
This controls the ratio of normal hairs to stray hairs that use the stray hair albedo color. A value of 0 results in no stray hairs while higher values result in more stray hairs.
Stray Hair Fraction: 0-1 Stray Hair Albedo: Orange |
Melanin variation randomizes the amount of melanin concentrated in the hair strands. Higher numbers increase the amount of melanin variation.
![]() |
![]() |
![]() |
Melanin Var: 0.0 | 0.5 | 1.0 |
Melanin redness variation randomizes the amount of melanin redness found in the hair strands. Higher numbers increase the amount of melanin redness variation.
![]() |
![]() |
![]() |
Melanin Redness Var: 0.0 | 0.5 | 1.0 |
Roughness variation randomizes the amount of reflection roughness on the hair.
![]() |
![]() |
![]() |
Roughness Var: 0.0 | 0.5 | 1.0 |
Roughness radial variation randomizes the amount of reflection radial roughness on the hair.
![]() |
![]() |
![]() |
Roughness (radial) Var: 0.0 | 0.5 | 1.0 |
Controls how diffuse the hair is and uses the diffuse albedo color. Higher values result in hair that is less translucent.
Real hair or fur does not have a diffuse component, however, increasing diffuse amount can be helpful when simulating dirty/damaged hair or other fibers that are not translucent. For the most realistic hair diffuse amount should be set to 0.
Diffuse Amount: 0-1 Diffuse Color: Brown |
Controls the diffuse color of the hair when diffuse amount is set above 0.
![]() |
![]() |
![]() |
Diffuse Amount: 0.0 |
1.0 |
0.01 |