Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Don't output the getattribute() node when the primitive variable is not present.
  2. Output the proper default value in the getattribute() node in case the primitive variable is not present. This involves shader node interrogation.


The Hair Closure

3Delight supports Marshner's model for sampling hairThe hair BSDF is a fairly complex function which simulates several effects observed on real hair fibers. It supports a variable number of major lobes, usually named R, TT, TRT, etc which specify different paths that a light ray can take inside a hair fiber. We choose to break down the model into sub-components (with each component being one lobe of the BRDF and is specified by a closure). The general form of the hair closure looks like this:

Code Block
hair( dPdv, eta, absorption, ...sub-components ... , optional parameters );

Follows a description of each parameter of the hair closure:

...

An expression of the form: weight1 * hair_component1 + weight2 * hair_component2 + ... + weightn * hair_componentn 

optional _ parameters

accepts "vector eccentricity" for now. It specifies the direction and the eccentricity of the cross section of one hair.  This parameter should be the same for the entire hair strand for realistic results. An example code to generate such a vector would look like this:

...