[Bf-blender-cvs] [1eb55b6d12b] soc-2018-hair-shader: Separate the randomized factors into new variables
L. E. Segovia
noreply at git.blender.org
Thu Jun 7 00:10:21 CEST 2018
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;
More information about the Bf-blender-cvs
mailing list