hair

Output

RGB

Synopsis
 


Image credit to Pascal Floerks (rollover image)


The Hair shader is designed to render the look of hair or fur. Note that this shader needs to be used on geometry that has been defined to look like hair or fur (for example using Arnold's curves shape node). Other shaders such as Lambert could be used, but the Hair shader has a specular shading model specifically designed for thin hair fibers and lets you define different diffuse colors for the root and tip of the hairs, for example. This shader currently uses a simple Kay-Kajiya shading model.

 


rootcolor
Diffuse color at the root of the hair.
tipcolor
Diffuse color at the tip of the hair.
opacity

Opacity of the hair. This is set to full white by default, which means fully opaque hair. Playing with this value to make the hair less opaque (or in other words, more transparent) can sometimes help make the hair look softer, at the expense of increased render times. If not set to full white, be sure to have the Opaque flag off in the Arnold Parameters property of the hair object, or else Arnold will bypass any transparency-related calculations to optimize render times.

ambdiff
Ambient Diffuse controls the blending between two different diffuse shading models: fully isotropic and the Kajiya-Kay diffuse BRDF. When set to 0, the diffuse part of the shader will be fully isotropic, which means that the strand will reflect the same amount of light towards the camera no matter which direction the light is coming from. When set to 1, the diffuse part of the shader will follow the Kajiya-Kay diffuse equation, which means that light shining down on the tip of a hair will not brighten the strand as much as light shining in from the sides. Any value between 0 and 1 is also valid, and will just blend between the two models.
spec

Scale of the primary specular contribution, which simply multiplies the primary specular color. It is strongly recommended to keep within the 0 to 1 range. In particular, values above 1 will create energy out of nowhere and break energy conservation and possibly introduce more noise than necessary.

spec2
Scale of the secondary specular contribution, which simply multiplies the secondary specular color. It's strongly recommended to stay in the 0 to 1 range. In particular, values above 1 will create energy out of nowhere and break energy conservation and possibly introduce more noise than necessary.
spec_color

The color of the primary specular component. For realistic and clean hair, the color should be set to white.

It is also possible to assign texture maps to the specular color attribute. The image on the left is an example of some hair that has been rendered with a brown specular color. On the right is the same hair that has been rendered with a fractal texture connected to the specular color attribute.

spec2_color
The color of the secondary specular component. For realistic and clean hair, the color is usually non-white, tinted by absorption inside the hair fiber.
gloss

Glossiness of the primary specular component. The higher the value, the tighter and sharper the specular. Internally, this corresponds to the exponent of a cosine power. For realistic hair, the value should be in the range 5 to 500. When Glossines is zero, the specular BRDF behaves like a perfect diffuser, reflecting the same amount of light in all directions.

 

gloss2
Glossiness of the secondary specular component. The higher the value, the tighter and sharper the specular. Internally, this corresponds to the exponent of a cosine power. For realistic hair, the value should be around half the primary specular glossiness, i.e. it's slightly rougher due to scattering when light goes through the hair fiber.
kd_ind

Indirect diffuse controls the amount of indirect diffuse light (GI light rays) reflected by the shader. Setting it to 0 disables indirect lighting and is the fastest to render. The higher the setting, the more that global illumination will affect the final color of the shader. It is strongly recommended to stay in the 0 to 1 range, as values higher than 1 will create energy out of nowhere and therefore break energy conservation and introduce excessive noise. The example below shows an exaggerated value of 5 merely for illustrative purposes.

spec_shift

Angular shift of the primary specular in degrees. It controls the shift of the specular lobes away from the perfect mirror direction and is used to control the offset of the specular highlight along the hair strand. For realistic results, it should take a negative value, typically in the -10 to -5 range.

spec2_shift
Angular shift of the secondary specular in degrees. It controls the shift of the specular lobes away from the perfect mirror direction and is used to control the offset of the specular highlight along the hair strand. For realistic results, it should take a positive value. A suggested expression is to link the primary and secondary specular shift values together like: secondary specular shift = -1.5 * primary specular shift.

 

uparam
U parameter coordinate across the width of the hair (0 to 1).
vparam
V parameter coordinate across the length of the hair (0 to 1).
diffuse_cache
When enabled, global illumination rays will only see the automatically baked direct diffuse illumination from each control point of the strands rather than a full shader evaluation as they normally would. This can give a big reduction in render times, especially with scenes containing many lights.

 

name

---

NOTES

The images below show the separate effect of the root, tip and specular colors. The far right image is the resulting combination of these colors.

The Hair shader has a secondary glossy specular lobe with its own Scale, Color, Glossiness and Shift controls. The secondary specular tends to shift towards the root of the hair, which is achieved with a positive value in the Shift control. Even though in real hair the secondary shift is linked to the primary shift with the expression secondary shift = primary shift * -1.5, the specular shift controls are decoupled for greater artistic control.

The secondary specular usually shifts 1.5 times as much towards the root as the primary specular. It is also wider than the primary specular. The Scale of the secondary specular defaults to 0 to preserve behaviour when using materials from earlier versions.

 


 

transmission
An energy conserving, Marschner-style transmission component (also known as TT). Since this models light shining through hair before getting to the camera, the hair must be between the camera and the light source for the transmission effect to be visible. This hair shading component is more important when doing rim lighting on hair or fur.


transmission_color
The color of the transmission component.

transmission_spread

multiplier on the transmission effect's spread: a smaller value produces a more focused, brighter effect. The default spread is 1.0, which corresponds to a realistic look for blonde hair. Reasonable values should be within the 0.5 to 5.0 range.

 

 

  • No labels