...
- Don't output the
getattribute()node when the primitive variable is not present. - 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:
...