diff options
author | Sebastian Herhoz <sebastian.herholz@intel.com> | 2022-09-21 18:46:10 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-09-27 16:47:03 +0300 |
commit | bd249eb4f37e65b2f4b3deef775bb136a2c234d1 (patch) | |
tree | b25c4fa279f5d89929c81a901a81c4cd14ea5f81 /intern/cycles/kernel/closure/bsdf_hair_principled.h | |
parent | 715c86d9e58f44ed078dd61c1fed45739bf65723 (diff) |
Cycles: BSDF changes in preparation of path guiding
* Return roughness and IOR for BSDF sampling
* Add functions to query IOR and label for given BSDF
* Default IOR to 1.0 instead of 0.0 for BSDFs that don't use it
* Ensure pdf >= 0.0 in case of numerical precision issues
Ref T92571, D15286
Diffstat (limited to 'intern/cycles/kernel/closure/bsdf_hair_principled.h')
-rw-r--r-- | intern/cycles/kernel/closure/bsdf_hair_principled.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h index 2236bc62050..d0a44c65d52 100644 --- a/intern/cycles/kernel/closure/bsdf_hair_principled.h +++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h @@ -354,10 +354,15 @@ ccl_device int bsdf_principled_hair_sample(KernelGlobals kg, float randv, ccl_private Spectrum *eval, ccl_private float3 *omega_in, - ccl_private float *pdf) + ccl_private float *pdf, + ccl_private float2 *sampled_roughness, + ccl_private float *eta) { ccl_private PrincipledHairBSDF *bsdf = (ccl_private PrincipledHairBSDF *)sc; + *sampled_roughness = make_float2(bsdf->m0_roughness, bsdf->m0_roughness); + *eta = bsdf->eta; + float3 Y = float4_to_float3(bsdf->extra->geom); float3 X = safe_normalize(sd->dPdu); |