The 3Delight Hair material is a physically plausible shader that renders hair and fur using a Monte-Carlo simulation. A Monte-Carlo simulation explores the different light paths inside a medium (in this case, a clump of hair) to produce an image.

An interesting aspect of hair rendering is that all the intricate visual details seen in hair stem from the scattering of light in a multitude of hair strands and is not due to the complexity of the BRDF on a single hair strand. This seemingly simple observation explains why so many complex shaders are not successful at conveying a realistic look for hair. This includes the widely used shaders based on the Marschner model not using volume scattering.

Below are four example renders of varying hair color. Note the glow caused by light scattering inside blond and light coloured red hair. Also note how black hair has nice silky features. The "glint" is caused by caustics inside hair strands and is not an after thought of the shading model. All these features necessitate proper simulation of light scattering in hair clumps.  

Content:

 

The Model

The shader simulates 3 scattering events from one single hair strand and then proceeds with a Monte-Carlo simulation to follow light paths inside the hair volume. 

 

The three main components of light scattering: Reflection (R), Transmission (TT) and 2nd Order Reflection (TRT).

R is the light directly reflected from the surface of a hair strand. In many other hair materials this is referred to as the primary highlightTT is the transmission of light through the hair strand and interacting with the interior of the strand (absorption). This is responsible for the back lighting visible through the hair when a light is behind a hair clump.  TRT is the secondary reflection of light traveling through the hair twice before going back to the same side it entered. As this light path gets absorbed twice it is dimmer than R and TT. In many other hair materials this is referred to as the secondary highlightThe following images show a final image and each component rendered separately. 

Final

R

TT

TRT

Material Parameters

Before explaining the parameters of the material in detail, take note that :

  1. There are no diffuse terms. Most shaders have an ad-hoc diffuse term to approximate the soft look of hair. In reality, this soft look is caused by light scattering and is not related to a classic diffuse BRDF.
  2. No control over directly reflected color. Direct reflections have the same color as the incoming light. Any coloured visual features are due to light passing through a strand of hair. 
  3. There are no "glint" parameters other than strength and softness . This visual feature is caused by caustics inside each hair. Depending on hair roughness, light gets periodically concentrated in some areas of each hair strand and this causes the so-called glint.

Parameter

Description
Hair Color

_______________________

This is the color of one hair strand. It is defined as: 1.0 - Absorption. Absorption inside a hair strand is the main parameter driving the overall look of hair. Fair hair has small absorption levels (Hair Color is closer to white), while dark hair has high absorption (Hair Color is closer to black). When absorption levels are low, light scatters more so "glow" is more apparent.
Quality
Samples
The number of samples to use for the monte carlo simulation for the hair in-scattering.
Scattering Depth
The depth at which you want to stop ray tracing scattering events. Use a value of 1 or more to receive proper back-scattering (transmission) when the hair is strongly back-lit. Start with 0 and increment this value of small steps, until visual demand is satisfied.
Roughness
Synchronize
This checkbox keeps in-sync the roughness values for the R, TT, TRT lobes.
Reflection Roughness
Transmission Roughness
TRT Roughness 
Specifies the roughness of the hair strand for the calculation of the Reflection, Transission, and 2nd Order Transmission respectively. They range from 0 (rough) to 1 (smooth). Note that, in a real hair strand, roughness should be the same for all the components. They are separate here for artistic control but should be kept the same if realism is desired.
Weights
Reflection Weight
The contribution of Reflection (R) to the final result.
Transmission Weight
The contribution of Transmission (TT) to the final result.
TRT Weight
The contribution of 2nd Order Reflection to the final result
Note that the different weights are actually a balance between the different components. In other words, the weights are normalized so as to conserve the overall energy in the system.
Positions
Synchronize
This checkbox keeps in-sync the position shifting values for the R, TT, TRT lobes.
Reflection Positions
Shift along the hair direction the position of the Reflections.
Transmission Positions
Shift along the hair direction the position of the Transmission.
TRT Positions
Shift along the hair direction the position of the Secondary Reflections.
Glints
Strength
The intensity of the glint effect, which are caused by caustics reflections inside the hairs and are typically driven by the roughness of the reflections.
Softness
Wether the glints are sharp or soft.

 

Material Output Variables

 


  • No labels

4 Comments

  1. There are no diffuse terms. Most shaders have an ad-hoc diffuse term to approximate the soft look of hair. In reality, this soft look is caused by light scattering and is not related to a classic diffuse BRDF.

    I think you should explain that in order to achieve a diffuse-like term you need to increment the roughness parameter to near-to-1 values.

    In any case I believe a diffuse term is needed, as a matter of fact we had to edit the shader to introduce some tweaks for regular diffuse and indirect diffuse which are strictly necessary in NPR-like looks (which are very common). I'd also suggest to add to bsdf and to trace a 'diffuse-hair' bsdf for this.  

    1. For NPR looks, we would need a separate shader. Fundamentally, we want this shader solely for one purpose: realistic hair.

      1. Agree. Here we have a non-pbr version of the share too. 

  2. Scattering Depth needs to be added here.