[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