[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