[Bf-blender-cvs] [d6f39657a3b] soc-2018-hair-shader: Fix: apply Coat mod TO THE ROUGHNESS, not variance

L. E. Segovia noreply at git.blender.org
Mon Jul 9 20:28:24 CEST 2018


Commit: d6f39657a3be8c331a034065543fecc737e7ca2a
Author: L. E. Segovia
Date:   Mon Jul 9 18:27:28 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rBd6f39657a3be8c331a034065543fecc737e7ca2a

Fix: apply Coat mod TO THE ROUGHNESS, not variance

===================================================================

M	intern/cycles/kernel/closure/bsdf_hair_principled.h

===================================================================

diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h
index 948faa68b40..fc08eeaeee8 100644
--- a/intern/cycles/kernel/closure/bsdf_hair_principled.h
+++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h
@@ -186,12 +186,14 @@ ccl_device int bsdf_principled_hair_setup(ShaderData *sd, PrincipledHairBSDF *bs
 	bsdf->type = CLOSURE_BSDF_HAIR_PRINCIPLED_ID;
 	bsdf->v = clamp(bsdf->v, 0.001f, 1.0f);
 	bsdf->s = clamp(bsdf->s, 0.001f, 1.0f);
+	/* Apply Primary Reflection Roughness modifier. */
+	bsdf->m0_roughness = clamp(bsdf->m0_roughness*bsdf->v, 0.001f, 1.0f);
 
 	/* Map from roughness_u and roughness_v to variance and scale factor. */
 	bsdf->v = sqr(0.726f*bsdf->v + 0.812f*sqr(bsdf->v) + 3.700f*pow20(bsdf->v));
 	bsdf->s =    (0.265f*bsdf->s + 1.194f*sqr(bsdf->s) + 5.372f*pow22(bsdf->s))*M_SQRT_PI_8_F;
-	bsdf->m0_roughness = clamp(bsdf->m0_roughness*bsdf->v, 0.001f, 0.999f);
-
+	bsdf->m0_roughness = sqr(0.726f*bsdf->m0_roughness + 0.812f*sqr(bsdf->m0_roughness) + 3.700f*pow20(bsdf->m0_roughness));
+	
 	/* Compute local frame, aligned to curve tangent and ray direction. */
 	float3 X = safe_normalize(sd->dPdu);
 	float3 Y = safe_normalize(cross(X, sd->I));



More information about the Bf-blender-cvs mailing list