tornavis/intern/cycles
Weizhen Huang 6f8011edf7 Cycles: new Principled Hair BSDF variant with elliptical cross-section support
Implements the paper [A Microfacet-based Hair Scattering
Model](https://onlinelibrary.wiley.com/doi/full/10.1111/cgf.14588) by
Weizhen Huang, Matthias B. Hullin and Johannes Hanika.

### Features:
- This is a far-field model, as opposed to the previous near-field
Principled Hair BSDF model. The hair is expected to be less noisy, but
lower roughness values takes longer to render due to numerical
integration along the hair width. The hair also appears to be flat when
viewed up-close.
- The longitudinal width of the scattering lobe differs along the
azimuth, providing a higher contrast compared to the evenly spread
scattering in the near-field Principled Hair BSDF model. For a more
detailed comparison, please refer to the original paper.
- Supports elliptical cross-sections, adding more realism as human hairs
are usually elliptical. The orientation of the cross-section is aligned
with the curve normal, which can be adjusted using geometry nodes.
Default is minimal twist. During sampling, light rays that hit outside
the hair width will continue propogating as if the material is
transparent.
- There is non-physical modulation factors for the first three
lobes (Reflection, Transmission, Secondary Reflection).

### Missing:
- A good default for cross-section orientation. There was an
attempt (9039f76928) to default the orientation to align with the curve
normal in the mathematical sense, but the stability (when animated) is
unclear and it would be a hassle to generalise to all curve types. After
the model is in main, we could experiment with the geometry nodes team
to see what works the best as a default.

Co-authored-by: Lukas Stockner <lukas.stockner@freenet.de>
Pull Request: https://projects.blender.org/blender/blender/pulls/105600
2023-08-18 12:46:13 +02:00
..
app Cycles: Rework component layering in Principled BSDF 2023-08-10 23:53:37 +02:00
blender Cycles: new Principled Hair BSDF variant with elliptical cross-section support 2023-08-18 12:46:13 +02:00
bvh Cleanup: fewer iostreams related includes in Cycles 2023-08-15 13:55:38 +02:00
cmake CMake: quiet uninitialized warnings 2023-08-17 11:53:56 +10:00
device Cleanup: fewer iostreams related includes in Cycles 2023-08-15 13:55:38 +02:00
doc License headers: use SPDX-FileCopyrightText in intern/cycles 2023-06-14 16:53:23 +10:00
graph License headers: use SPDX-FileCopyrightText in intern/cycles 2023-06-14 16:53:23 +10:00
hydra Cycles: remove unnecessary transform parameters from lights 2023-08-11 17:41:06 +02:00
integrator Cleanup: fewer iostreams related includes in Cycles 2023-08-15 13:55:38 +02:00
kernel Cycles: new Principled Hair BSDF variant with elliptical cross-section support 2023-08-18 12:46:13 +02:00
scene Cycles: new Principled Hair BSDF variant with elliptical cross-section support 2023-08-18 12:46:13 +02:00
session License headers: use SPDX-FileCopyrightText in intern/cycles 2023-06-14 16:53:23 +10:00
subd License headers: use SPDX-FileCopyrightText in intern/cycles 2023-06-14 16:53:23 +10:00
test CMake: plumbing for modern CMake usage 2023-06-27 20:57:50 +02:00
util Change packed_float3 to internal float3 for HIP 2023-08-15 15:40:29 +02:00
CMakeLists.txt CMake: remove reference to unused OPENIMAGEIO_DEFINITIONS 2023-08-17 11:53:55 +10:00