Commit: 1eb55b6d12bd5741c866d0406b8e37088db01166
Author: L. E. Segovia
Date:   Wed Jun 6 22:10:00 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rB1eb55b6d12bd5741c866d0406b8e37088db01166

Separate the randomized factors into new variables

This makes it easier to disable in code.

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

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 8bf10b1267e..49ae9d3d0ba 100644
--- a/intern/cycles/kernel/shaders/node_principled_hair_bsdf.osl
+++ b/intern/cycles/kernel/shaders/node_principled_hair_bsdf.osl
@@ -46,6 +46,8 @@ shader node_principled_hair_bsdf(
 
        float AdjustedRoughnessU = RoughnessU*factor_random_roughness;
        float AdjustedRoughnessV = RoughnessV*factor_random_roughness;
+       float AdjustedMelanin = Melanin*factor_random_color;
+       float AdjustedMelaninRedness = MelaninRedness*factor_random_color;
 
        if (parametrization == "Absorption coefficient") {
                Sigma = AbsorptionCoefficient;
@@ -54,14 +56,14 @@ shader node_principled_hair_bsdf(
                Sigma = -log3(max(AbsorptionCoefficient, 1e-5));
        }
        else if (parametrization == "Melanin concentration") {
-               color Melanin_Sigma = Melanin*factor_random_color*color(0.419, 
0.697, 1.37) + MelaninRedness*factor_random_color*color(0.187, 0.4, 1.05);
-               float roughness_fac = (((((0.245*RoughnessU) + 
5.574)*RoughnessU - 10.73)*RoughnessU + 2.532)*RoughnessU - 0.215)*RoughnessU + 
5.969;
+               color Melanin_Sigma = AdjustedMelanin*color(0.419, 0.697, 1.37) 
+ AdjustedMelaninRedness*color(0.187, 0.4, 1.05);
+               float roughness_fac = (((((0.245*AdjustedRoughnessU) + 
5.574)*AdjustedRoughnessU - 10.73)*AdjustedRoughnessU + 
2.532)*AdjustedRoughnessU - 0.215)*AdjustedRoughnessU + 5.969;
                color Tint_Sigma = log3(Tint)/roughness_fac;
                Tint_Sigma *= Tint_Sigma;
                Sigma = Melanin_Sigma + Tint_Sigma;
        }
        else if (parametrization == "Direct coloring"){
-               float roughness_fac = (((((0.245*RoughnessU) + 
5.574)*RoughnessU - 10.73)*RoughnessU + 2.532)*RoughnessU - 0.215)*RoughnessU + 
5.969;
+               float roughness_fac = (((((0.245*RoughnessU) + 
5.574)*AdjustedRoughnessU - 10.73)*AdjustedRoughnessU + 
2.532)*AdjustedRoughnessU - 0.215)*AdjustedRoughnessU + 5.969;
                Sigma = log3(Color)/roughness_fac;
                Sigma *= Sigma;
        }
diff --git a/intern/cycles/kernel/svm/svm_closure.h 
b/intern/cycles/kernel/svm/svm_closure.h
index 70248d8eacb..db13961659a 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -758,9 +758,14 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, 
ShaderData *sd, float *
                                if (!extra)
                                        break;
 
+                               param1 *= factor_random_roughness;
+                               param2 *= factor_random_roughness;
+                               eumelanin *= factor_random_color;
+                               pheomelanin *= factor_random_color;
+                               
                                bsdf->N = N;
-                               bsdf->v = param1*factor_random_roughness;
-                               bsdf->s = param2*factor_random_roughness;
+                               bsdf->v = param1;
+                               bsdf->s = param2;
                                bsdf->m0_roughness = m0_roughness;
                                bsdf->alpha = alpha;
                                bsdf->eta = ior;
@@ -778,7 +783,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, 
ShaderData *sd, float *
                                                bsdf->sigma = 
-log3(max(absorption_coefficient, make_float3(1e-5f, 1e-5f, 1e-5f)));
                                                break;
                                        case 
NODE_PRINCIPLED_HAIR_PIGMENT_CONCENTRATION: {
-                                               float3 melanin_sigma = 
eumelanin*factor_random_color*make_float3(0.419f, 0.697f, 1.37f) + 
pheomelanin*factor_random_color*make_float3(0.187f, 0.4f, 1.05f);
+                                               float3 melanin_sigma = 
eumelanin*make_float3(0.419f, 0.697f, 1.37f) + pheomelanin*make_float3(0.187f, 
0.4f, 1.05f);
                                                float roughness_fac = 
(((((0.245f*param2) + 5.574f)*param2 - 10.73f)*param2 + 2.532f)*param2 - 
0.215f)*param2 + 5.969f;
                                                float3 tint_sigma = 
log3(tint)/roughness_fac;
                                                tint_sigma *= tint_sigma;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to