[Bf-blender-cvs] [04428920c66] soc-2018-hair-shader: Fix: melanin randomization to the linear quantity

L. E. Segovia noreply at git.blender.org
Tue Jul 10 00:47:39 CEST 2018


Commit: 04428920c6629a3b32eaafe209122bb0cce3f0d8
Author: L. E. Segovia
Date:   Mon Jul 9 22:47:00 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rB04428920c6629a3b32eaafe209122bb0cce3f0d8

Fix: melanin randomization to the linear quantity

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

M	intern/cycles/kernel/shaders/node_principled_hair_bsdf.osl
M	intern/cycles/kernel/svm/svm_closure.h

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

diff --git a/intern/cycles/kernel/shaders/node_principled_hair_bsdf.osl b/intern/cycles/kernel/shaders/node_principled_hair_bsdf.osl
index b4451164240..907d2f190db 100644
--- a/intern/cycles/kernel/shaders/node_principled_hair_bsdf.osl
+++ b/intern/cycles/kernel/shaders/node_principled_hair_bsdf.osl
@@ -65,9 +65,9 @@ shader node_principled_hair_bsdf(
 
 	float adjusted_roughness = Roughness*factor_random_roughness;
 	float adjusted_radial_roughness = RadialRoughness*factor_random_roughness;
-	float melanin_qty = -log(max(1.0 - Melanin, 0.0001));
-	float adjusted_eumelanin = melanin_qty*(1.0-MelaninRedness)*factor_random_color;
-	float adjusted_pheomelanin = melanin_qty*MelaninRedness*factor_random_color;
+	float melanin_qty = -log(max(1.0 - Melanin*factor_random_color, 0.0001));
+	float adjusted_eumelanin = melanin_qty*(1.0-MelaninRedness);
+	float adjusted_pheomelanin = melanin_qty*MelaninRedness;
 
 	if (parametrization == "Absorption coefficient") {
 		sigma = AbsorptionCoefficient;
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index b3022f9637c..9df3a74d7be 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -801,12 +801,10 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 						break;
 					case NODE_PRINCIPLED_HAIR_PIGMENT_CONCENTRATION: {
 						// Benedikt Bitterli's melanin ratio remapping (adjusted for linearity).
-						melanin_qty = -logf(fmaxf(1.0f - melanin_qty, 0.0001f));
+						float factor_random_color = 1.0f + 2.0f*(random - 0.5f)*random_color;
+						melanin_qty = -logf(fmaxf(1.0f - melanin_qty*factor_random_color, 0.0001f));
 						float eumelanin = melanin_qty*(1.0f-melanin_ratio);
 						float pheomelanin = melanin_qty*melanin_ratio;
-						float factor_random_color = 1.0f + 2.0f*(random - 0.5f)*random_color;
-						eumelanin *= factor_random_color;
-						pheomelanin *= factor_random_color;
 
 						float3 melanin_sigma = sigma_from_concentration(eumelanin, pheomelanin);
 						float3 tint_sigma = sigma_from_reflectance(tint, param2);



More information about the Bf-blender-cvs mailing list